Mundarija:
- 1 -qadam: Gripperni qo'shish
- 2 -qadam: qo'lni qurish
- 3 -qadam: MoveIt RobotCommander interfeysi
- 4 -qadam: Robot boshqaruvchisi uchun Arduino kodi
- 5-qadam: (Ixtiyoriy) IKfast plaginini yaratish
- 6 -qadam: Rampa sinovi
Video: ROS MoveIt Robotik Arm 2 -qism: Robot boshqaruvchisi: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
github.com/AIWintermuteAI/ros-moveit-arm.git
Maqolaning oldingi qismida biz robot qo'limiz uchun URDF va XACRO fayllarini yaratdik va robot qo'limizni simulyatsiya qilingan muhitda boshqarish uchun RVIZ -ni ishga tushirdik.
Bu safar biz haqiqiy robot qo'l bilan qilamiz! Biz ushlagichni qo'shamiz, robot boshqaruvchisini yozamiz va (ixtiyoriy) IKfast teskari kinematik hal qiluvchi yaratamiz.
Geronimo!
1 -qadam: Gripperni qo'shish
Gripper qo'shish dastlab biroz chalkash edi, shuning uchun men oldingi maqolada bu qismni o'tkazib yubordim. Ma'lum bo'lishicha, bu unchalik qiyin emas.
Tutash havolalar va bo'g'inlarni qo'shish uchun URDF faylini o'zgartirishingiz kerak bo'ladi.
Robotim uchun o'zgartirilgan URDF fayli bu bosqichga biriktirilgan. Asosan, bu qo'l qismi bilan bir xil mantiqqa to'g'ri keladi, men faqat uchta yangi havolani (claw_base, claw_r va claw_l) va uchta yangi bo'g'inni qo'shdim (qo'shma5 - sobit, va6 -chi, bo'g'in7 - revolyutiv bo'g'inlar).
URDF faylini o'zgartirgandan so'ng, MoveIt sozlamalari yordamchisi yordamida MoveIt to'plami va xacro faylini yangilashingiz kerak bo'ladi.
Quyidagi buyruq yordamida sozlash yordamchisini ishga tushiring
roslaunch moveit_setup_assistant setup_assistant.launch
Mavjud MoveIt konfiguratsiyasini tahrirlash -ni bosing va MoveIt paketli papkani tanlang.
Yangi rejalashtirish guruhi ushlagichini (ushlagich uchun bo'g'inlar va bo'g'inlar bilan) va shuningdek, oxirgi effektorni qo'shing. Mening sozlamalarim quyidagi ekran tasvirlarida. E'tibor bering, siz kinematikani hal qiluvchini tanlamaysiz, bu shart emas. Paketni yarating va fayllarni ustiga yozing.
Yugurish
mushuk yasash
catkin ish joyingizda buyruq.
Yaxshi, endi bizda tutqichli qo'l bor!
2 -qadam: qo'lni qurish
Yuqorida aytib o'tganimdek, qo'l 3D modeli Juergenlessner tomonidan yaratilgan, ajoyib ish uchun rahmat. Agar siz havolaga rioya qilsangiz, montaj bo'yicha batafsil ko'rsatmalarni topishingiz mumkin.
Men boshqaruv tizimini o'zgartirishim kerak edi. Men servolarni boshqarish uchun Sensor qalqoni bo'lgan Arduino Uno -dan foydalanaman. Sensor qalqoni simlarni soddalashtirishga yordam beradi, shuningdek servolarni tashqi quvvat bilan ta'minlashni osonlashtiradi. Sensor qalqoni uchun pastga tushirish moduli (6V) orqali ulangan 12V 6A quvvat adapteridan foydalanaman.
Servo haqida eslatma. Men Taobaodan sotib olingan MG 996 HR servosidan foydalanaman, lekin sifati haqiqatan ham yomon. Bu, albatta, arzon xitoylik nok-off. Tirsak qo'shimchasi etarli momentni ta'minlamadi va hatto og'ir yuk ostida bir marta tiqila boshladi. Men yanada sifatli ishlab chiqaruvchidan MG 946 HR bilan tirsak qo'shma servosini almashtirishim kerak edi.
Qisqa so'z - sifatli servolarni sotib oling. Agar servolaringizdan sehrli tutun chiqsa, yaxshiroq servolardan foydalaning. 6V - bu juda xavfsiz kuchlanish, uni oshirmang. Bu momentni oshirmaydi, lekin servolarga zarar etkazishi mumkin.
Servo uchun simlar quyidagicha:
tayanch 2
elka2 4yelka1 3
tirsak 6
tutqich 8
bilak 11
Agar siz Arduino eskizini o'zgartirishni ham eslasangiz, uni o'zgartiring.
Uskunani tugatgandan so'ng, keling, katta rasmga qaraylik!
3 -qadam: MoveIt RobotCommander interfeysi
Xo'sh, endi nima? Nima uchun sizga baribir MoveIt va ROS kerak? Qo'lni to'g'ridan -to'g'ri Arduino kodi orqali boshqarolmaysizmi?
Ha sen qila olasan.
Xo'sh, endi robotning pozitsiyasini ta'minlash uchun GUI yoki Python/C ++ kodidan foydalanish haqida nima deyish mumkin? Arduino buni qila oladimi?
Navi. Buning uchun sizga teskari kinematik echim yozish kerak bo'ladi, u robotning pozasini oladi (3D maydonda tarjima va aylanish koordinatalari) va uni servolar uchun qo'shma burchakli xabarlarga aylantiradi.
Garchi buni o'zingiz qilishingiz mumkin bo'lsa -da, bu juda ko'p ish. Shunday qilib, MoveIt va ROS IK (teskari kinematik) hal qiluvchi uchun barcha og'ir trigonometrik yuklarni ko'tarish uchun yaxshi interfeysni ta'minlaydi.
Qisqa javob: Ha, siz bitta robot pozitsiyadan ikkinchisiga o'tish uchun qattiq kodli Arduino eskizini bajaradigan oddiy robot qo'lini qila olasiz. Ammo agar siz robotingizni aqlli qilib, kompyuterni ko'rish qobiliyatini qo'shmoqchi bo'lsangiz, MoveIt va ROS - bu yo'l.
Men MoveIt ramkasi qanday ishlashini tushuntiradigan juda soddalashtirilgan diagramma tuzdim. Bizning holatda, bu biz uchun yanada osonroq bo'ladi, chunki bizda servolardan hech qanday fikr yo'q va robot kontrollerni servo burchaklar bilan ta'minlash uchun /joint_states mavzusidan foydalanamiz. Bizda faqat bitta element - robot nazoratchi yetishmaydi.
Biz nimani kutmoqdamiz? Keling, bir nechta robot -kontrollerlar yozaylik, shunda bizning robotimiz … boshqariladigan bo'lardi.
4 -qadam: Robot boshqaruvchisi uchun Arduino kodi
Bizning holatda, rosserial bilan ROS tugunini ishlaydigan Arduino Uno robot boshqaruvchisi bo'ladi. Arduino eskiz kodi bu bosqichga biriktirilgan va GitHub -da ham mavjud.
Arduino Uno -da ishlaydigan ROS tuguni asosan MoveIt ishlaydigan kompyuterda chop etilgan /JointState mavzusiga obuna bo'ladi, so'ngra qatorning bo'g'in burchaklarini radiandan gradusgacha o'zgartiradi va Servo.h standart kutubxonasi yordamida servolarga uzatadi.
Bu yechim sanoat robotlari bilan qanday amalga oshirilgani emas, balki biroz xiralashgan. Ideal holda, siz /FollowJointState mavzusida harakat traektoriyasini nashr etishingiz va keyin /JointState mavzusi bo'yicha fikr -mulohazalarni olishingiz kerak. Ammo bizning qo'limizda sevimli mashg'ulotlari servolari o'z fikrlarini bildira olmaydi, shuning uchun biz FakeRobotController tugunida chop etilgan /JointState mavzusiga to'g'ridan -to'g'ri obuna bo'lamiz. Umuman olganda, biz servolarga o'tgan har qanday burchak ideal tarzda bajarilgan deb o'ylaymiz.
Rosserialning qanday ishlashi haqida qo'shimcha ma'lumot olish uchun quyidagi darsliklarga murojaat qilishingiz mumkin
wiki.ros.org/rosserial_arduino/Tutorials
Eskizni Arduino Uno -ga yuklaganingizdan so'ng, uni ketma -ket kabel orqali ROS o'rnatiladigan kompyuterga ulashingiz kerak bo'ladi.
Butun tizimni ochish uchun quyidagi buyruqlarni bajaring
roslaunch my_arm_xacro demo.launch rviz_tutorial: = rost
sudo chmod -R 777 /dev /ttyUSB0
rosrun rosserial_python serial_node.py _port: =/dev/ttyUSB0 _baud: = 115200
Endi siz RVIZ -dagi interaktiv markerlardan foydalanib, robot qo'lini holatiga o'tkazishingiz mumkin, so'ngra uning holatiga o'tishi uchun "Rejalashtirish va bajarish" tugmasini bosing.
Sehr!
Endi biz rampa testimiz uchun Python kodini yozishga tayyormiz. Xo'sh, deyarli…
5-qadam: (Ixtiyoriy) IKfast plaginini yaratish
Odatiy bo'lib, MoveIt KDL kinematik echimidan foydalanishni taklif qiladi, bu 6 ta DOFdan kam qurol bilan ishlamaydi. Agar siz ushbu qo'llanmani diqqat bilan kuzatib borsangiz, RVIZ -dagi qo'l modeli qo'l konfiguratsiyasi bilan qo'llab -quvvatlanishi kerak bo'lgan pozalarga kira olmasligini sezasiz.
Tavsiya etilgan yechim OpenRave yordamida maxsus kinematik echimlarni yaratishdir. Bu unchalik qiyin emas, lekin siz uni o'zingiz yaratishingiz kerak va bu manbadan bog'liqliklar yoki xohlaganingizcha docker konteyneridan foydalaning.
Jarayon ushbu qo'llanmada juda yaxshi hujjatlashtirilgan. Ubuntu 16.04 va ROS Kinetic ishlaydigan VMda ishlash tasdiqlangan.
Men hal qiluvchi yaratish uchun quyidagi buyruqni ishlatganman
openrave.py -ma'lumotlar bazasi inversekinematics --robot = arm.xml --iktype = translation3d --iktests = 1000
va keyin yugurdi
rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Tarjima3D.0_1_2_f3.cpp
MoveIt IKfast plaginini yaratish.
Butun protsedura biroz vaqt talab etadi, lekin agar siz qo'llanmani diqqat bilan kuzatib borsangiz, unchalik qiyin bo'lmaydi. Agar sizda ushbu bo'lim haqida savollaringiz bo'lsa, izohlarda yoki PMda men bilan bog'laning.
6 -qadam: Rampa sinovi
Endi biz ROS MoveIt Python API yordamida bajariladigan rampa testini sinab ko'rishga tayyormiz.
Python kodi bu bosqichga biriktirilgan va github omborida ham mavjud. Agar sizda rampa bo'lmasa yoki boshqa sinovni o'tkazmoqchi bo'lsangiz, koddagi robot pozitsiyasini o'zgartirishingiz kerak bo'ladi. Buning uchun birinchi marta bajaring
rostopik echo/rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/feedback
RVIZ va MoveIt allaqachon ishlayotganida terminalda. Keyin interaktiv markerli robotni kerakli joyga o'tkazing. Joylashuv va yo'nalish qiymatlari terminalda ko'rsatiladi. Ularni Python kodiga nusxalash kifoya.
Rampa sinovini bajarish uchun
rosrun my_arm_xacro pick/pick_2.py
RVIZ va rosserial tugun bilan allaqachon ishlayotgan.
Maqolaning uchinchi qismini kuzatishda davom eting, bu erda men ob'ektlarni aniqlash uchun stereo kameradan foydalanaman va oddiy ob'ektlar uchun tanlov va joylashtirish quvurini bajaraman!
Tavsiya:
N64-dan ilhomlangan robot boshqaruvchisi (Arduino + NRF24L01): 4 qadam
N64-dan ilhomlangan robot boshqaruvchisi (Arduino + NRF24L01): Birinchi robot loyihamdan buyon men buyruqlar va funktsiyalarni bajarish uchun o'yin nazoratchilaridan foydalanaman. Bu, albatta, mening geymerlik kunlarimning ta'siri. Men allaqachon PS2, Xbox 360 kontrollerlari bilan loyihalar qilganman … lekin menda interfeys bilan bog'liq muammolar bo'lgan payt keldi
Robotik qo'l o'yini - Smartfon boshqaruvchisi: 6 qadam
Robot qo'l o'yini - Smartfon boshqaruvchisi: Salom! Mana, yozgi qiziqarli o'yin: Smartfon tomonidan boshqariladigan robot qo'l! Videodan ko'rinib turibdiki, siz qo'lingizni smartfoningizdagi bir qancha joystiklar yordamida boshqarishingiz mumkin. Robot bir tsiklda ko'payadi, shuning uchun
Arduino asosidagi DIY o'yin boshqaruvchisi - Arduino PS2 o'yin boshqaruvchisi - DIY Arduino Gamepad bilan Tekken o'ynash: 7 qadam
Arduino asosidagi DIY o'yin boshqaruvchisi | Arduino PS2 o'yin boshqaruvchisi | DIY Arduino Gamepad bilan Tekken o'ynash: Salom bolalar, o'yin o'ynash har doim qiziqarli, lekin o'zingizning shaxsiy o'yiningiz bilan o'ynash yanada qiziqarli, shuning uchun biz ushbu qo'llanmada arduino pro micro yordamida o'yin boshqaruvchisi qilamiz
Matlab-ga asoslangan ROS robot boshqaruvchisi: 9 qadam
Matlab-ga asoslangan ROS robot boshqaruvchisi: Men bolaligimdan temir odam bo'lishni orzu qilganman va hozir ham shunday qilaman. Temir odam - bu haqiqatan ham mumkin bo'lgan qahramonlardan biri va men oddiy odam bo'lishni xohlayman, garchi odamlar ustimdan kulsalar ham, bu imkonsiz deb aytishsa ham
ROS MoveIt robot qo'l: 4 qadam
ROS MoveIt Robotik Arm: Bu ROS (Robotik Operatsion System) va MoveIt bilan boshqariladigan robot qo'lini yasash haqidagi maqolalar to'plami bo'ladi. Agar siz robototexnika bilan shug'ullanadigan bo'lsangiz, ROS - bu yaxshiroq robotlarni tezroq qurishga yordam beradigan ajoyib ramka. Bu sizga qayta ishlatishga imkon beradi