Բովանդակություն:
- Քայլ 1: Ավելացնելով բռնիչը
- Քայլ 2. Կառուցեք թևը
- Քայլ 3: MoveIt RobotCommander ինտերֆեյս
- Քայլ 4: Arduino ծածկագիր ռոբոտների վերահսկիչի համար
- Քայլ 5. (Լրացուցիչ) IKfast Plug-in- ի ստեղծում
- Քայլ 6: Թեքահարթակի փորձարկում:
Video: ROS MoveIt Robotic Arm Մաս 2. Robot Controller: 6 Steps
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
github.com/AIWintermuteAI/ros-moveit-arm.git
Հոդվածի նախորդ մասում մենք ստեղծել ենք URDF և XACRO ֆայլեր մեր ռոբոտացված թևի համար և գործարկել ենք RVIZ- ը ՝ մոդելավորվող միջավայրում մեր ռոբոտային թևը վերահսկելու համար:
Այս անգամ մենք դա կանենք իրական ռոբոտացված թևով: Մենք կավելացնենք բռնիչը, կգրենք ռոբոտի վերահսկիչ և (ըստ ցանկության) կստեղծենք IKfast հակադարձ կինեմատիկայի լուծիչ:
Onերոնիմո!
Քայլ 1: Ավելացնելով բռնիչը
Gripper ավելացնելը սկզբում մի փոքր շփոթեցնող էր, ուստի ես բաց թողեցի այս հատվածը նախորդ հոդվածում: Ի վերջո, պարզվեց, որ այդքան էլ դժվար չէ:
Դուք պետք է փոփոխեք ձեր URDF ֆայլը `սեղմիչ հղումներ և հոդեր ավելացնելու համար:
Այս ռոբոտի URDF ֆայլը կցված է այս քայլին: Հիմնականում այն հետևում է նույն տրամաբանությանը, ինչ ձեռքի հատվածը, ես պարզապես ավելացրեցի երեք նոր օղակ (claw_base, claw_r և claw_l) և երեք նոր հոդեր (հոդը 5 -ն ամրագրված է, և հոդը 6, հոդը 7 պտտվող հոդեր են):
Ձեր URDF ֆայլը փոփոխելուց հետո ձեզ նույնպես պետք է թարմացնել MoveIt- ի գեներացված փաթեթը և xacro ֆայլը ՝ օգտագործելով MoveIt կարգաբերման օգնականը:
Գործարկեք տեղադրման օգնականը հետևյալ հրամանով
roslaunch moveit_setup_assistant setup_assistant.launch
Կտտացրեք Խմբագրել գոյություն ունեցող MoveIt կազմաձևին և ընտրեք ձեր MoveIt փաթեթով թղթապանակը:
Ավելացրեք պլանավորման խմբի նոր բռնակ (կցորդիչով հղումներով և հոդերով), ինչպես նաև վերջնական էֆեկտոր: Իմ կարգավորումները ներքևի սքրինշոթերում են: Ուշադրություն դարձրեք, որ բռնիչի համար կինեմատիկա լուծող չեք ընտրում, դա անհրաժեշտ չէ: Ստեղծեք փաթեթը և վերաշարադրեք ֆայլերը:
Վազիր
կատվի պատրաստում
հրաման ձեր կատկին աշխատանքային տարածքում:
Լավ, հիմա մենք ունենք թև բռնակով:
Քայլ 2. Կառուցեք թևը
Ինչպես արդեն նշեցի, թևի 3D մոդելը պատրաստվում է Juergenlessner- ի կողմից, շնորհակալություն զարմանալի աշխատանքի համար: Հավաքման մանրամասն հրահանգները կարող եք գտնել, եթե հետևեք հղմանը:
Չնայած ես ստիպված էի փոփոխել կառավարման համակարգը: Ես օգտագործում եմ Arduino Uno- ն Sensor վահանով `սերվերը վերահսկելու համար: Սենսորային վահանը շատ է օգնում էլեկտրագծերի պարզեցման գործում, ինչպես նաև հեշտացնում է սպասարկողներին արտաքին էներգիա տրամադրելը: Ես օգտագործում եմ 12V 6A հոսանքի ադապտեր, որը լարված է իջեցման մոդուլի (6V) միջոցով դեպի Sensor Shield:
Նշում սպասարկողների մասին: Ես օգտագործում եմ Taobao- ից գնված MG 996 HR ծառայություններ, բայց որակը իսկապես վատ է: Դա միանշանակ չինական էժան նոկ-օֆ է: Անկյունի հոդի համար նախատեսված մոմենտը չէր ապահովում բավարար պտույտ և նույնիսկ մեկ անգամ ծանր բեռի տակ սկսեց գոլորշիանալ: Ես ստիպված էի արմունկի համատեղ սերվոն փոխարինել ավելի որակյալ արտադրողի MG 946 HR- ով:
Կարճ ասած `գնեք որակյալ սպասարկողներ: Եթե կախարդական ծուխը դուրս է գալիս ձեր սերվերից, օգտագործեք ավելի լավ սերվոզներ: 6V- ը շատ անվտանգ լարում է, մի բարձրացրեք այն: Այն չի մեծացնի ոլորող մոմենտը, բայց կարող է վնասել սերվերին:
Սերվերի էլեկտրամոնտաժը հետևյալն է.
հիմք 2
ուս 2 4 ուս ուս 1 3
արմունկ 6
բռնիչ 8
դաստակ 11
Ազատորեն փոխեք այն, քանի դեռ հիշում եք նաև փոխել Arduino- ի էսքիզը:
Սարքավորումների հետ աշխատելուց հետո, եկեք նայենք ավելի մեծ պատկերին:
Քայլ 3: MoveIt RobotCommander ինտերֆեյս
Այսպիսով, հիմա ինչ? Ինչու՞ են ձեզ ամեն դեպքում անհրաժեշտ MoveIt- ը և ROS- ը: Չե՞ք կարող ուղղակի ձեռքը կառավարել Arduino կոդի միջոցով:
Այո, դու կարող ես.
Լավ, հիմա ի՞նչ կասեք GUI կամ Python/C ++ կոդի մասին ՝ ռոբոտի դիրքը տրամադրելու համար: Արդյո՞ք դա կարող է անել:
Տեսակ Դրա համար ձեզ հարկավոր է գրել հակադարձ կինեմատիկայի լուծիչ, որը կզբաղվի ռոբոտի դիրքով (թարգմանության և պտտման կոորդինատները 3D տարածության մեջ) և այն կվերածի սերվերի համատեղ անկյունային հաղորդագրությունների:
Չնայած դուք ինքներդ կարող եք դա անել, դա դժոխային մեծ աշխատանք է: Այսպիսով, MoveIt- ը և ROS- ը IK (հակադարձ կինեմատիկա) լուծողի համար ապահովում են գեղեցիկ ինտերֆեյս `ձեզ համար կատարելու ծանր եռանկյունաչափական բարձրացում:
Կարճ պատասխան. Այո, դուք կարող եք անել մի պարզ ռոբոտային թև, որը կկատարի կոդավորված Arduino էսքիզը ՝ մի դիրքից մյուսը անցնելու համար: Բայց եթե ցանկանում եք ձեր ռոբոտին դարձնել ավելի խելացի և ավելացնել համակարգչային տեսողության հնարավորությունները, MoveIt- ը և ROS- ը ճանապարհ են:
Ես կազմել եմ շատ պարզեցված դիագրամ, որը բացատրում է, թե ինչպես է աշխատում MoveIt շրջանակը: Մեր դեպքում դա ավելի պարզ կդառնա, քանի որ մենք մեր սերվերի հետադարձ կապ չունենք և կօգտագործենք /joint_states թեման ՝ ռոբոտների վերահսկիչին սերվերի անկյունները տրամադրելու համար: Մեզ միայն մեկ բաղադրիչ է պակասում, որը ռոբոտների վերահսկիչն է:
Ինչի՞ ենք սպասում: Եկեք մի քանի ռոբոտ -վերահսկիչ գրենք, որպեսզի մեր ռոբոտը … գիտեք, ավելի վերահսկելի լինի:
Քայլ 4: Arduino ծածկագիր ռոբոտների վերահսկիչի համար
Մեր դեպքում Arduino Uno- ն, որը վարում է ROS հանգույց ՝ rosserial- ով, կդառնա ռոբոտների վերահսկիչը: Arduino էսքիզների ծածկագիրը կցված է այս քայլին և հասանելի է նաև GitHub- ում:
Arduino Uno- ով աշխատող ROS հանգույցը հիմնականում բաժանորդագրվում է /MoveIt- ով աշխատող համակարգչում հրապարակված JointState թեմային, այնուհետև զանգվածի անկյունները ռադիաններից փոխարկում է աստիճանների և դրանք փոխանցում սերվերին `օգտագործելով ստանդարտ Servo.h գրադարանը:
Այս լուծումը մի փոքր հաքերական է և ոչ թե ինչպես դա արվում է արդյունաբերական ռոբոտների հետ: Իդեալում, դուք պետք է հրապարակեք շարժման հետագիծը /FollowJointState թեմայով, այնուհետև ստացեք արձագանքներ /JointState թեմայի վերաբերյալ: Բայց մեր ձեռքում հոբբի սերվերը չեն կարող հետադարձ կապ տրամադրել, այնպես որ մենք ուղղակիորեն բաժանորդագրվելու ենք /JointState թեմային, որը հրապարակվել է FakeRobotController հանգույցի կողմից: Հիմնականում մենք ենթադրելու ենք, որ այն բոլոր անկյունները, որոնք մենք փոխանցում ենք սերվոներին, կատարյալ են:
Լոսյարների աշխատանքի վերաբերյալ լրացուցիչ տեղեկությունների համար կարող եք խորհրդակցել հետևյալ ձեռնարկների հետ
wiki.ros.org/rosserial_arduino/Tutorials
Էսքիզը Arduino Uno- ում վերբեռնելուց հետո ձեզ հարկավոր է այն սերիական մալուխով միացնել ձեր ROS տեղադրմամբ աշխատող համակարգչին:
Ամբողջ համակարգը դաստիարակելու համար կատարեք հետևյալ հրամանները
roslaunch my_arm_xacro demo.launch rviz_tutorial: = ճշմարիտ
sudo chmod -R 777 /dev /ttyUSB0
rosrun rosserial_python serial_node.py _port: =/dev/ttyUSB0 _baud: = 115200
Այժմ դուք կարող եք օգտագործել ինտերակտիվ մարկերներ RVIZ- ում ՝ ռոբոտի թևը դիրքի տեղափոխելու համար, այնուհետև սեղմել Plan and Execute, որպեսզի այն իրականում տեղափոխվի դիրք:
Կախարդական!
Այժմ մենք պատրաստ ենք Python կոդ գրել մեր թեքահարթակի թեստի համար: Դե, գրեթե…
Քայլ 5. (Լրացուցիչ) IKfast Plug-in- ի ստեղծում
Լռելյայնորեն MoveIt- ն առաջարկում է օգտագործել KDL կինեմատիկայի լուծիչ, որն իրականում չի աշխատում 6 -ից պակաս DOF զենքով: Եթե դուք ուշադիր հետևեք այս ձեռնարկին, ապա կնկատեք, որ RVIZ- ի թևի մոդելը չի կարող անցնել որոշ դիրքերի, որոնք պետք է ապահովվեն ձեռքի կազմաձևով:
Առաջարկվող լուծումը OpenRave- ի միջոցով ստեղծել սովորական կինեմատիկայի լուծիչ: Դա այնքան էլ դժվար չէ, բայց դուք պետք է կառուցեք այն և դրա կախվածությունը աղբյուրից կամ օգտագործեք նավամատույցի կոնտեյները, որն եք նախընտրում:
Ընթացակարգը շատ լավ փաստագրված է այս ձեռնարկում: Հաստատված է, որ աշխատում է VM- ի վրա, որն աշխատում է Ubuntu 16.04 -ով և ROS Kinetic- ով:
Լուծողը գեներացնելու համար ես օգտագործել եմ հետևյալ հրամանը
openrave.py -տվյալների շտեմարան inversekinematics --robot = arm.xml --iktype = translation3d --iktests = 1000
իսկ հետո վազեց
rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Translation3D.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 հանգույցով, որոնք արդեն աշխատում են:
Շարունակեք հետևել հոդվածի երրորդ մասին, որտեղ ես կօգտագործեմ ստերեո տեսախցիկ ՝ օբյեկտների հայտնաբերման համար և կկատարեմ ընտրություն և տեղադրում պարզ օբյեկտների համար:
Խորհուրդ ենք տալիս:
Մաս 1 ARM Assembly TI RSLK Robotics Learning Programriculum Lab 7 STM32 Nucleo: 16 Steps
Մաս 1 ARM Assembly TI RSLK Robotics Learning Curriculum Lab 7 STM32 Nucleo. Այս հրահանգի ուշադրության կենտրոնում STM32 Nucleo միկրոհսկիչն է: Դրա շարժառիթը `կարողանալ մերկ ոսկորներից հավաքման նախագիծ ստեղծել: Սա կօգնի մեզ խորանալ և հասկանալ MSP432 Launchpad նախագիծը (TI-RSLK), որն ունի
Robotic Arm Game - Smartphone Controller: 6 Steps
Robotic Arm Game - Smartphone Controller. Բարև Ձեզ: Ահա մի զվարճալի ամառային խաղ. Սմարթֆոնի միջոցով կառավարվող ռոբոտային թևը: Ինչպես տեսնում եք Տեսանյութում, դուք կարող եք կառավարել Ձեռքը ձեր սմարթֆոնի որոշ oyոյստիկներով: Դուք նաև կարող եք պահպանել օրինաչափություն, որ ռոբոտը կվերարտադրվի հանգույցով, որպեսզի
Robotic Arm with Zio Modules Մաս 3: 4 քայլ
Robotic Arm With Zio Modules Մաս 3. Այս բլոգային գրառումը Zio Robotics Series- ի մի մասն է: Ներածություն Մեր նախորդ բլոգում մենք տեղադրեցինք 1 -ին և 2 -րդ մասի ձեռնարկը, թե ինչպես վերահսկել Robotic Arm- ը `օգտագործելով Zio մոդուլները: Մաս 1 -ը հիմնականում կենտրոնացած էր ձեր Robotic Arm's Claw t
Robotic Arm with Zio Modules Մաս 2: 11 Քայլեր
Robotic Arm With Zio մոդուլներ Մաս 2: Այսօրվա ձեռնարկում մենք կօգտագործենք բոլոր 4 սերվերը և PS2 անլար վերահսկիչը `ռոբոտացված թևը վերահսկելու համար: Այս բլոգային գրառումը Zio Robotics Series- ի մի մասն է: Ներածություն Մեր նախորդ բլոգում մենք տեղադրեցինք 1 -ին մասը ձեռնարկ, թե ինչպես վերահսկել Robotic Ar
ROS MoveIt Robotic Arm: 4 քայլ
ROS MoveIt Robotic Arm. Սա լինելու է հոդվածների շարք `ROS- ով (Robotic Operating System) և MoveIt- ով կառավարվող ռոբոտային թև պատրաստելու մասին: Եթե դուք զբաղվում եք ռոբոտաշինությամբ, ROS- ը հիանալի շրջանակ է, որը կօգնի ձեզ ավելի արագ կառուցել ավելի լավ ռոբոտներ: Այն թույլ է տալիս կրկին օգտագործել