Агуулгын хүснэгт:
- Алхам 1: Gripper нэмэх
- Алхам 2: Гар барих
- Алхам 3: MoveIt RobotCommander интерфэйс
- Алхам 4: Робот хянагчийн Arduino код
- Алхам 5: (Нэмэлт) IKfast Plug-in үүсгэж байна
- Алхам 6: Налуу замын туршилт
Видео: ROS MoveIt робот гар 2 -р хэсэг: Робот хянагч: 6 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
github.com/AIWintermuteAI/ros-moveit-arm.git
Өгүүллийн өмнөх хэсэгт бид робот гартаа зориулж URDF ба XACRO файлуудыг үүсгэж, загварчилсан орчинд робот гараа удирдахын тулд RVIZ -ийг ажиллуулсан.
Энэ удаад бид жинхэнэ робот гараараа үүнийг хийх болно! Бид бариулыг нэмж, робот хянагч бичиж, IKfast урвуу кинематик шийдлийг үүсгэх болно.
Геронимо!
Алхам 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 багцтай хавтсыг сонгоно уу.
Төлөвлөлтийн шинэ групер (хавчаарын холбоос ба холбоос бүхий), мөн төгсгөлийн эффектор нэмнэ үү. Миний тохиргоо доорх дэлгэцийн агшинд байна. Та бариулын хувьд кинематик уусгагчийг сонгодоггүй гэдгийг анхаараарай. Багцыг үүсгээд файлуудыг дарж бичнэ үү.
Гүйх
муур хийх
catkin ажлын талбар дахь тушаал.
За, одоо бид бариултай гартай боллоо!
Алхам 2: Гар барих
Arm 3D загварыг Juergenlessner бүтээсэн гэж би өмнө дурдсанчлан гайхалтай бүтээлд баярлалаа. Хэрэв та линкийг дагаж мөрдвөл угсралтын дэлгэрэнгүй зааврыг олж болно.
Гэсэн хэдий ч би хяналтын системийг өөрчлөх шаардлагатай болсон. Би servo хянахад Sensor shield бүхий Arduino Uno ашигладаг. Мэдрэгч бамбай нь утсыг хялбарчлахад маш их тусалдаг бөгөөд servo -ийн гадаад хүчийг өгөхөд хялбар болгодог. Би 12V 6A хүчдэлийн адаптерийг мэдрэгч бамбай руу уруудах модуль (6V) -аар холбодог.
Сервогийн тухай тэмдэглэл. Би Taobao -оос худалдаж авсан MG 996 HR серво ашигладаг боловч чанар үнэхээр муу байна. Энэ бол мэдээж хямдхан хятадын тоглогч юм. Тохойн үений бэхэлгээ нь хангалттай эргэлт өгөхгүй байсан бөгөөд тэр ч байтугай хүнд ачааны дор утаа гаргаж эхлэв. Би тохойн үений servo -ийг илүү чанартай үйлдвэрлэгчээс MG 946 HR -ээр солих шаардлагатай болсон.
Урт богино өгүүллэг - чанартай серво худалдаж аваарай. Хэрэв таны servos -оос ид шидийн утаа гарч байвал илүү сайн servo ашиглаарай. 6V бол маш аюулгүй хүчдэл, үүнийг бүү нэмэгдүүл. Энэ нь эргүүлэх хүчийг нэмэгдүүлэхгүй боловч servos -ийг гэмтээж болно.
Сервүүдийн утаснуудыг дараах байдлаар холбоно.
суурь 2
мөр2 4 мөрөн1 3
тохой 6
бариул 8
бугуй 11
Та Arduino -ийн ноорогыг өөрчлөхөө мартсан л бол үүнийг өөрчилж болно.
Тоног төхөөрөмжийг дуусгасны дараа том зургийг харцгаая!
Алхам 3: MoveIt RobotCommander интерфэйс
Тэгэхээр, одоо яах вэ? Танд яагаад MoveIt болон ROS хэрэгтэй байна вэ? Та Arduino кодоор шууд гараа удирдаж болохгүй гэж үү?
Тиймээ чи чадна.
За, одоо GUI эсвэл Python/C ++ кодыг ашиглан робот руу очихын тулд ямар байрлалтай болох вэ? Arduino үүнийг хийж чадах уу?
Төрлийн. Үүний тулд та урвуу кинематик шийдлийг бичиж, роботын байрлалыг (орчуулгын болон 3D орон зайд эргүүлэх координат) аваад servo -ийн хамтарсан өнцгийн мессеж болгон хөрвүүлэх шаардлагатай болно.
Хэдийгээр та өөрөө үүнийг хийж чадна, гэхдээ энэ бол маш их ажил юм. Тиймээс MoveIt ба ROS нь IK (урвуу кинематик) шийдэгчдэд тригонометрийн бүх хүнд өргөлтийг хийх сайхан интерфэйсийг өгдөг.
Богино хариулт: Тийм ээ, та нэг позоос нөгөөд шилжихийн тулд хатуу кодтой Arduino ноорог хийх энгийн робот гар хийж болно. Гэхдээ хэрэв та роботыг илүү ухаалаг болгож, компьютерийн алсын харааг нэмэгдүүлэхийг хүсч байвал MoveIt ба ROS бол хамгийн сайн арга юм.
Би MoveIt хүрээ хэрхэн ажилладаг талаар тайлбарласан маш хялбаршуулсан диаграм хийсэн. Манай тохиолдолд энэ нь илүү хялбар байх болно, учир нь бидэнд servo -оосоо санал хүсэлт ирээгүй бөгөөд робот хянагчийг servo -ийн өнцгөөр хангахын тулд /joint_states сэдвийг ашиглах болно. Бидэнд робот хянагч гэсэн ганц бүрэлдэхүүн хэсэг л дутагдаж байна.
Бид юу хүлээж байна вэ? Зарим робот хянагч бичье, ингэснээр манай робот илүү хяналттай байх болно.
Алхам 4: Робот хянагчийн Arduino код
Манай тохиолдолд rosserial бүхий ROS зангилааг ажиллуулдаг Arduino Uno нь робот хянагч болно. Arduino ноорог кодыг энэ алхамд хавсаргасан бөгөөд GitHub дээр ашиглах боломжтой.
Arduino Uno дээр ажилладаг ROS зангилаа нь MoveIt ажиллаж байгаа компьютер дээр нийтлэгдсэн /JointState сэдвийг үндсэндээ захиалж, дараа нь массивын үений өнцгийг радианаас градус хүртэл хөрвүүлж, Servo.h стандарт номын сангийн тусламжтайгаар servo руу дамжуулдаг.
Энэ шийдэл нь жаахан эвгүй бөгөөд үйлдвэрлэлийн роботуудын хувьд хэрхэн хийгддэггүй. Хамгийн тохиромжтой нь та /FollowJointState сэдвээр хөдөлгөөний чиглэлийг нийтэлж, дараа нь /JointState сэдвийн талаархи санал хүсэлтийг хүлээн авах ёстой. Гэхдээ бидний гар дээр хоббигийн сервосууд санал хүсэлт өгөх боломжгүй тул бид FakeRobotController зангилаанаас нийтэлсэн /JointState сэдвийг шууд захиалах болно. Үндсэндээ бид servo -д өгсөн өнцөг булан бүрийг хамгийн сайн гүйцэтгэдэг гэж үзэх болно.
Rosserial хэрхэн ажилладаг талаар илүү дэлгэрэнгүй мэдээлэл авахыг хүсвэл дараах зааварчилгаанаас лавлана уу
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 -ийн интерактив тэмдэглэгээг ашиглан роботын гарыг байрлалд шилжүүлж, дараа нь байрлал руу шилжихийн тулд "Төлөвлөх ба гүйцэтгэх" товчийг дарна уу.
Ид шид!
Одоо бид налуу замын тестийнхээ Python кодыг бичихэд бэлэн боллоо. За бараг л…
Алхам 5: (Нэмэлт) IKfast Plug-in үүсгэж байна
Анхдагч байдлаар MoveIt нь 6 -аас доошгүй DOF гартай ажиллахгүй KDL кинематик шийдлийг ашиглахыг санал болгодог. Хэрэв та энэ гарын авлагыг анхааралтай дагаж мөрдвөл 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 зангилаа аль хэдийн ажиллаж байна.
Өгүүллийн гуравдахь хэсгийг сонирхож байгаарай, би стерео камер ашиглан объект илрүүлж, энгийн объектуудыг сонгох, дамжуулах хоолойг гүйцэтгэх болно!
Зөвлөмж болгож буй:
Робот гар тоглоом - Ухаалаг гар утасны хянагч: 6 алхам
Робот гар тоглоом - Ухаалаг гар утас хянагч: Сайн байна уу! Зуны хөгжилтэй тоглоом: Ухаалаг гар утсаар удирддаг робот гар !! Та видеон дээр харж байгаа шиг гар утсан дээрээ зарим тоглоомын тусламжтайгаар гараа удирдаж болно. роботыг давталтаар хуулбарлахын тулд
Matlab-д суурилсан ROS робот хянагч: 9 алхам
Matlab-д суурилсан ROS робот хянагч: Би багаасаа Төмөр хүн болохыг мөрөөддөг байсан, одоо ч тэгсээр байгаа. Төмөр хүн бол үнэхээр боломжтой дүрүүдийн нэг бөгөөд хэзээ нэгэн цагт хүмүүс намайг инээж эсвэл энэ нь боломжгүй гэж хэлсэн ч гэсэн Төмөр хүн болохыг хүсч байна
Зио модулиудтай робот гар 3 -р хэсэг: 4 алхам
Зио модулиудтай робот гар 3 -р хэсэг: Энэхүү блог нь Зио роботын цувралын нэг хэсэг юм. Танилцуулга Өмнөх блогтоо бид Zio модулийг ашиглан робот гарыг хэрхэн удирдах тухай 1, 2 -р хэсгийг зааж өгсөн. 1 -р хэсэг нь ихэвчлэн таны робот гарын хумсыг автоматаар удирдахад төвлөрдөг
Зио модулиудтай робот гар 2 -р хэсэг: 11 алхам
Зио модулиудтай робот гар 2 -р хэсэг: Өнөөдрийн хичээлээр бид 4 servo болон PS2 утасгүй хянагчийг ашиглан робот гарыг удирдах болно. Энэхүү блог нь Zio Robotics цувралын нэг хэсэг юм. робот арыг хэрхэн удирдах тухай заавар
ROS MoveIt робот гар: 4 алхам
ROS MoveIt робот гар: Энэ бол ROS (Robotic Operating System) болон MoveIt -ээр удирддаг робот гарыг бүтээх тухай цуврал нийтлэл байх болно. Хэрэв та робот техникийн чиглэлээр ажилладаг бол ROS бол илүү сайн роботыг хурдан бүтээхэд туслах гайхалтай хүрээ юм. Энэ нь танд дахин ашиглах боломжийг олгодог