Агуулгын хүснэгт:

ROS MoveIt робот гар 2 -р хэсэг: Робот хянагч: 6 алхам
ROS MoveIt робот гар 2 -р хэсэг: Робот хянагч: 6 алхам

Видео: ROS MoveIt робот гар 2 -р хэсэг: Робот хянагч: 6 алхам

Видео: ROS MoveIt робот гар 2 -р хэсэг: Робот хянагч: 6 алхам
Видео: SCP-1 461 Дом Worm (Класс объекта: Евклид) 2024, Долдугаар сарын
Anonim
Image
Image

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

Өгүүллийн өмнөх хэсэгт бид робот гартаа зориулж URDF ба XACRO файлуудыг үүсгэж, загварчилсан орчинд робот гараа удирдахын тулд RVIZ -ийг ажиллуулсан.

Энэ удаад бид жинхэнэ робот гараараа үүнийг хийх болно! Бид бариулыг нэмж, робот хянагч бичиж, IKfast урвуу кинематик шийдлийг үүсгэх болно.

Геронимо!

Алхам 1: Gripper нэмэх

Gripper -ийг нэмж байна
Gripper -ийг нэмж байна
Gripper -ийг нэмж байна
Gripper -ийг нэмж байна
Gripper -ийг нэмж байна
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 RobotCommander интерфэйс
MoveIt RobotCommander интерфэйс

Тэгэхээр, одоо яах вэ? Танд яагаад MoveIt болон ROS хэрэгтэй байна вэ? Та Arduino кодоор шууд гараа удирдаж болохгүй гэж үү?

Тиймээ чи чадна.

За, одоо GUI эсвэл Python/C ++ кодыг ашиглан робот руу очихын тулд ямар байрлалтай болох вэ? Arduino үүнийг хийж чадах уу?

Төрлийн. Үүний тулд та урвуу кинематик шийдлийг бичиж, роботын байрлалыг (орчуулгын болон 3D орон зайд эргүүлэх координат) аваад servo -ийн хамтарсан өнцгийн мессеж болгон хөрвүүлэх шаардлагатай болно.

Хэдийгээр та өөрөө үүнийг хийж чадна, гэхдээ энэ бол маш их ажил юм. Тиймээс MoveIt ба ROS нь IK (урвуу кинематик) шийдэгчдэд тригонометрийн бүх хүнд өргөлтийг хийх сайхан интерфэйсийг өгдөг.

Богино хариулт: Тийм ээ, та нэг позоос нөгөөд шилжихийн тулд хатуу кодтой Arduino ноорог хийх энгийн робот гар хийж болно. Гэхдээ хэрэв та роботыг илүү ухаалаг болгож, компьютерийн алсын харааг нэмэгдүүлэхийг хүсч байвал MoveIt ба ROS бол хамгийн сайн арга юм.

Би MoveIt хүрээ хэрхэн ажилладаг талаар тайлбарласан маш хялбаршуулсан диаграм хийсэн. Манай тохиолдолд энэ нь илүү хялбар байх болно, учир нь бидэнд servo -оосоо санал хүсэлт ирээгүй бөгөөд робот хянагчийг servo -ийн өнцгөөр хангахын тулд /joint_states сэдвийг ашиглах болно. Бидэнд робот хянагч гэсэн ганц бүрэлдэхүүн хэсэг л дутагдаж байна.

Бид юу хүлээж байна вэ? Зарим робот хянагч бичье, ингэснээр манай робот илүү хяналттай байх болно.

Алхам 4: Робот хянагчийн Arduino код

Робот хянагчийн Arduino код
Робот хянагчийн Arduino код
Робот хянагчийн Arduino код
Робот хянагчийн Arduino код
Робот хянагчийн Arduino код
Робот хянагчийн 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 зангилаа аль хэдийн ажиллаж байна.

Өгүүллийн гуравдахь хэсгийг сонирхож байгаарай, би стерео камер ашиглан объект илрүүлж, энгийн объектуудыг сонгох, дамжуулах хоолойг гүйцэтгэх болно!

Зөвлөмж болгож буй: