Мазмұны:

ROS MoveIt робот қолы 2 -бөлім: Роботты басқару: 6 қадам
ROS MoveIt робот қолы 2 -бөлім: Роботты басқару: 6 қадам
Anonim
Image
Image

github.com/AIWintermuteAI/ros-moveit-arm.git

Мақаланың алдыңғы бөлігінде біз роботтық қолымыз үшін URDF және XACRO файлдарын құрдық және модельденген ортада роботты басқару үшін RVIZ іске қостық.

Бұл жолы біз мұны нағыз робот қолымен жасаймыз! Біз ұстағышты қосамыз, робот контроллерін жазамыз және (міндетті емес) IKfast кері кинематикалық шешуші құрамыз.

Геронимо!

1 -қадам: ұстағышты қосу

Тұтқаны қосу
Тұтқаны қосу
Тұтқаны қосу
Тұтқаны қосу
Тұтқаны қосу
Тұтқаны қосу

Тұтқаны қосу бастапқыда біраз түсініксіз болды, сондықтан мен бұл мақаланы алдыңғы мақалада өткізіп жібердім. Бұл соншалықты қиын емес болып шықты.

Қатқыш сілтемелер мен буындарды қосу үшін URDF файлын өзгерту қажет болады.

Менің роботым үшін өзгертілген URDF файлы осы қадамға бекітілген. Негізінде бұл қисық бөлігі сияқты логикаға сәйкес келеді, мен үш жаңа сілтемені (claw_base, claw_r және claw_l) және үш жаңа буындарды (қосылым5 бекітілген, ал түйіс6, буын 7 - револьт буындар) қостым.

URDF файлын өзгерткеннен кейін MoveIt жасаған пакет пен xacro файлын MoveIt орнату көмекшісі арқылы жаңарту қажет болады.

Келесі пәрменмен орнату көмекшісін іске қосыңыз

roslaunch moveit_setup_assistant setup_assistant.launch

Бар MoveIt конфигурациясын өңдеуді нұқыңыз және MoveIt бумасы бар қалтаны таңдаңыз.

Жоспарлау тобының жаңа ұстағышын (ұстағышқа арналған сілтемелері мен буындары бар), сондай -ақ соңғы эффекторды қосыңыз. Менің параметрлерім төмендегі скриншоттарда. Назар аударыңыз, сіз ұстағыш үшін кинематикалық шешкішті таңдамайсыз, бұл қажет емес. Пакетті жасаңыз және файлдарды қайта жазыңыз.

Жүгіру

мысық жасау

catkin жұмыс кеңістігінде пәрмен.

Жарайды, енді бізде ұстайтын қолымыз бар!

2 -қадам: қолды салу

Қол жасау
Қол жасау
Қол жасау
Қол жасау
Қол жасау
Қол жасау
Қол жасау
Қол жасау

Жоғарыда айтқанымдай, қолдың 3D моделі Юергенлеснермен жасалған, керемет жұмыс үшін рахмет. Сілтемені орындасаңыз, жинаудың егжей -тегжейлі нұсқауларын табуға болады.

Маған басқару жүйесін өзгертуге тура келді. Мен серверлерді басқару үшін сенсорлық қалқаны бар Arduino Uno қолданамын. Сенсорлық қалқан сымды жеңілдетуге көп көмектеседі, сонымен қатар сервоға сыртқы қуатты беруді жеңілдетеді. Мен сенсорлық қалқанға төмендету модулі (6В) арқылы қосылған 12В 6А қуат адаптерін қолданамын.

Серво туралы жазба. Мен Taobao -дан сатып алынған MG 996 HR сервосын қолданамын, бірақ сапасы өте нашар. Бұл, әрине, қытайлықтардың арзан бағасы. Шынтақ буыны жеткілікті моментті қамтамасыз етпеді, тіпті ауыр жүктеме кезінде бір рет түтіндей бастады. Маған сапалы өндірушінің MG 946 HR шынтақ буын сервосын ауыстыруға тура келді.

Қысқа әңгіме - сапалы серво сатып алыңыз. Егер сіздің серводардан сиқырлы түтін шықса, жақсырақ сервоприводтарды қолданыңыз. 6В - бұл өте қауіпсіз кернеу, оны көбейтпеңіз. Бұл крутящий моментті арттырмайды, бірақ сервоға зақым келтіруі мүмкін.

Серво үшін сымдар келесідей:

негіз 2

иық2 4 иық1 3

шынтақ 6

ұстағыш 8

білек 11

Егер сіз Arduino эскизін өзгертуді ұмытпасаңыз, оны өзгерте аласыз.

Жабдықпен жұмыс аяқталғаннан кейін, үлкен суретке қарайық!

3 -қадам: MoveIt RobotCommander интерфейсі

MoveIt RobotCommander интерфейсі
MoveIt RobotCommander интерфейсі

Сонымен, енді не? Сізге MoveIt және ROS бәрібір не үшін қажет? Қолды тікелей Arduino коды арқылы басқара алмайсыз ба?

Иә, аласыз.

Жарайды, енді робот позасына бару үшін GUI немесе Python/C ++ кодын пайдалану туралы не деуге болады? Ардуино осылай жасай алады ма?

Сұрыптау. Ол үшін сізге робот позасын алатын (3D кеңістіктегі аудару мен айналу координаттары) және оны сервоға арналған бұрыштық хабарларға түрлендіретін кері кинематикалық шешуші жазу керек.

Сіз мұны өзіңіз жасай алатын болсаңыз да, бұл өте көп жұмыс. Сонымен, MoveIt және ROS сіз үшін барлық ауыр тригонометриялық көтерулерді жасау үшін IK (кері кинематика) шешушіге жақсы интерфейс ұсынады.

Қысқаша жауап: Ия, сіз бір позадан екіншісіне өту үшін қатаң кодталған Arduino эскизін орындайтын қарапайым робот қолын жасай аласыз. Бірақ егер сіз роботыңызды ақылды етіп, компьютердің көру мүмкіндіктерін қосқыңыз келсе, онда MoveIt және ROS - бұл дұрыс жол.

Мен MoveIt құрылымының қалай жұмыс істейтінін түсіндіретін өте жеңілдетілген диаграмма жасадым. Біздің жағдайда бұл одан да қарапайым болады, өйткені бізде серводардан кері байланыс жоқ және робот контроллеріне серво бұрыштарын беру үшін /joint_states тақырыбын қолданамыз. Бізде тек бір компонент жоқ, ол робот -контроллер.

Біз не күтеміз? Кейбір робот -контроллерлерді жазайық, сондықтан біздің робот … басқарылатын болады.

4 -қадам: Arduino робот контроллері коды

Arduino робот контроллері коды
Arduino робот контроллері коды
Arduino робот контроллері коды
Arduino робот контроллері коды
Arduino робот контроллері коды
Arduino робот контроллері коды

Біздің жағдайда Arduino Uno, rosserial бар ROS түйінін басқарады, робот -контроллер болады. Arduino эскиз коды осы қадамға бекітілген, сонымен қатар GitHub -та қол жетімді.

Arduino Uno жүйесінде жұмыс істейтін ROS түйіні негізінен MoveIt жұмыс істейтін компьютерде жарияланған /JointState тақырыбына жазылады, содан кейін массивтен түйіскен бұрыштарды радианнан градусқа дейін түрлендіреді және оларды Servo.h стандартты кітапханасының көмегімен сервистерге береді.

Бұл шешім өнеркәсіптік роботтармен қалай жасалатыны туралы емес. Ең дұрысы, сіз /FollowJointState тақырыбында қозғалыс траекториясын жариялап, содан кейін /JointState тақырыбы бойынша кері байланыс алуыңыз керек. Бірақ біздің қолымызда хобби сервосы кері байланыс бере алмайды, сондықтан біз FakeRobotController түйіні жариялаған /JointState тақырыбына тікелей жазыламыз. Негізінде, біз сервоға берген кез келген бұрыштар мінсіз орындалады деп ойлаймыз.

Rosserial қалай жұмыс істейтіні туралы қосымша ақпарат алу үшін келесі оқулықтардан білуге болады

wiki.ros.org/rosserial_arduino/Tutorials

Эскизді Arduino Uno -ға жүктегеннен кейін оны ROS қондырғысы бар компьютерге сериялық кабельмен қосу керек.

Бүкіл жүйені ашу үшін келесі пәрмендерді орындаңыз

roslaunch my_arm_xacro demo.launch rviz_tutorial: = true

sudo chmod -R 777 /dev /ttyUSB0

rosrun rosserial_python serial_node.py _port: =/dev/ttyUSB0 _baud: = 115200

Енді сіз RVIZ интерактивті маркерлерін қолдана отырып, роботтың қолын қалыпқа қарай жылжыта аласыз, содан кейін оның орынға жылжуы үшін «Жоспарлау және орындау» түймесін басыңыз.

Сиқыр!

Енді біз пандус тестімізге Python кодын жазуға дайынбыз. Жақсы, дерлік…

5-қадам: (Қосымша) IKfast қосылатын модулін жасау

Әдепкі бойынша MoveIt KDL кинематикалық шешушісін пайдалануды ұсынады, ол 6 DOF -тан төмен жұмыс істемейді. Егер сіз осы оқулықты мұқият ұстанатын болсаңыз, онда сіз RVIZ -дегі қол моделі қолдың конфигурациясымен қолдау көрсетілетін кейбір позаларға бара алмайтынын байқайсыз.

Ұсынылатын шешім - OpenRave көмегімен реттелетін кинематикалық шешуші құру. Бұл қиын емес, бірақ сіз оны және көзден тәуелділікті жасауыңыз керек немесе докер контейнерін қолданғыңыз келеді.

Процедура осы оқулықта өте жақсы құжатталған. Ubuntu 16.04 және ROS Kinetic жұмыс істейтін VM -де жұмыс істейтіні расталды.

Мен шешушіні құру үшін келесі пәрменді қолдандым

openrave.py -дерекқордың инверсинематикасы --robot = arm.xml --iktype = translation3d --iktests = 1000

сосын жүгірді

rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Аударма3D.0_1_2_f3.cpp

MoveIt IKfast қосылатын модулін жасау үшін.

Бүкіл процедура біраз уақытты алады, бірақ егер сіз оқулықты мұқият орындасаңыз, бұл өте қиын емес. Егер сізде осы бөлімге қатысты сұрақтарыңыз болса, түсініктемелерде немесе PM -де маған хабарласыңыз.

6 -қадам: Пандус сынағы

Пандус сынағы!
Пандус сынағы!
Пандус сынағы!
Пандус сынағы!

Енді біз ROS MoveIt Python API көмегімен орындалатын рампалық тестті сынауға дайынбыз.

Python коды осы қадамға бекітілген, сонымен қатар github репозиторийінде қол жетімді. Егер сізде пандус болмаса немесе басқа сынақтан өткіңіз келсе, сізге кодтағы робот позасын өзгерту қажет болады. Ол үшін бірінші орындаңыз

rostopic echo/rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/feedback

RVIZ және MoveIt іске қосылған кезде терминалда. Содан кейін интерактивті маркерлері бар роботты қажетті орынға жылжытыңыз. Терминалда орналасу мен бағдар мәндері көрсетіледі. Оларды Python кодына көшіріңіз.

Рампалық тест жүгіруді орындау үшін

rosrun my_arm_xacro pick/pick_2.py

RVIZ және rosserial түйіні жұмыс істеп тұр.

Мақаланың үшінші бөлігін күтіңіз, онда мен объектілерді анықтау үшін стерео камераны қолданамын және қарапайым объектілерге арналған таңдау мен орналастыру құбырын орындаймын!

Ұсынылған: