
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01


github.com/AIWintermuteAI/ros-moveit-arm.git
Pada bahagian artikel sebelumnya, kami telah membuat fail URDF dan XACRO untuk lengan robot kami dan melancarkan RVIZ untuk mengawal lengan robot kami dalam persekitaran simulasi.
Kali ini kita akan melakukannya dengan lengan robot sebenar! Kami akan menambah gripper, menulis pengawal robot dan (pilihan) menghasilkan pemecah kinematik terbalik IKfast.
Geronimo!
Langkah 1: Menambah Gripper



Menambah gripper pada awalnya agak membingungkan, jadi saya melangkau bahagian ini dalam artikel sebelumnya. Ternyata tidak begitu sukar.
Anda perlu mengubah suai fail URDF anda untuk menambahkan pautan dan sendi gripper.
Fail URDF yang diubah suai untuk robot saya dilampirkan pada langkah ini. Pada dasarnya ia mengikuti logik yang sama dengan bahagian lengan, saya baru sahaja menambah tiga pautan baru (claw_base, claw_r dan claw_l) dan tiga sendi baru (sendi5 adalah tetap, dan sendi6, sendi7 adalah sendi putaran).
Setelah anda mengubahsuai fail URDF, anda juga perlu mengemas kini pakej dan fail xacro yang dihasilkan oleh MoveIt dengan menggunakan pembantu persediaan MoveIt.
Lancarkan pembantu persediaan dengan arahan berikut
roslaunch moveit_setup_assistant setup_assistant.launch
Klik pada Edit Konfigurasi MoveIt yang Ada dan pilih folder dengan pakej MoveIt anda.
Tambahkan gripper kumpulan perancangan baru (dengan pautan dan sendi untuk gripper) dan juga efektor akhir. Tetapan saya terdapat dalam tangkapan skrin di bawah. Perhatikan bahawa anda tidak memilih pemecah kinematik untuk pencengkam, itu tidak perlu. Hasilkan pakej dan ganti fail.
Lari
catkin buat
arahan di ruang kerja catkin anda.
Baiklah, sekarang kita mempunyai lengan dengan gripper!
Langkah 2: Membina Lengan




Seperti yang saya nyatakan sebelum model 3D arm dibuat oleh Juergenlessner, terima kasih atas karya yang luar biasa. Arahan pemasangan terperinci boleh didapati jika anda mengikuti pautan.
Saya terpaksa mengubah suai sistem kawalan. Saya menggunakan Arduino Uno dengan perisai Sensor untuk mengawal servos. Sensor perisai banyak membantu dengan mempermudah pendawaian dan juga memudahkan untuk memberikan kuasa luaran kepada servo. Saya menggunakan penyesuai kuasa 12V 6A yang disambungkan melalui modul step-down (6V) ke Sensor Shield.
Catatan mengenai servo. Saya menggunakan servo MG 996 HR yang dibeli dari Taobao, tetapi kualitinya benar-benar buruk. Ia jelas merupakan pilihan Cina yang murah. Yang untuk sendi siku tidak memberikan tork yang cukup dan bahkan mula menggerutu sekali di bawah beban berat. Saya terpaksa mengganti servo sendi siku dengan MG 946 HR dari pengeluar berkualiti lebih baik.
Pendek cerita - beli servo berkualiti. Sekiranya asap sihir keluar dari servo anda, gunakan servo yang lebih baik. 6V adalah voltan yang sangat selamat, jangan menaikkannya. Ia tidak akan meningkatkan tork, tetapi boleh merosakkan servos.
Pendawaian untuk servo seperti berikut:
asas 2
bahu2 4shoulder1 3
siku 6
pencengkam 8
pergelangan tangan 11
Jangan ragu untuk mengubahnya selagi anda juga ingat untuk menukar lakaran Arduino.
Setelah selesai menggunakan perkakasan, mari kita lihat gambar yang lebih besar!
Langkah 3: MukaIt RobotCommander Interface

Jadi, sekarang apa? Mengapa anda memerlukan MoveIt dan ROS? Tidak bolehkah anda mengawal lengan melalui kod Arduino secara langsung?
Ya awak boleh.
Baiklah, sekarang bagaimana dengan menggunakan kod GUI atau Python / C ++ untuk menyediakan pose robot untuk pergi? Bolehkah Arduino berbuat demikian?
Lebih kurang. Untuk itu, anda perlu menulis penyelesai kinematik terbalik yang akan mengambil pose robot (koordinat terjemahan dan putaran dalam ruang 3D) dan menukarnya menjadi mesej sudut bersama untuk servo.
Walaupun anda boleh melakukannya sendiri, banyak kerja yang perlu dilakukan. Oleh itu, MoveIt dan ROS menyediakan antara muka yang baik untuk pemecah IK (kinematik terbalik) untuk melakukan semua pengangkat trigonometri yang berat untuk anda.
Jawapan ringkas: Ya, anda boleh menggunakan lengan robot sederhana yang akan melaksanakan lakaran Arduino yang dikodkan keras untuk beralih dari satu pose ke yang lain. Tetapi jika anda ingin menjadikan robot anda lebih cerdas dan menambah keupayaan penglihatan komputer, MoveIt dan ROS adalah jalan yang sesuai.
Saya membuat rajah yang sangat ringkas yang menerangkan bagaimana kerangka kerja MoveIt. Dalam kes kami, ini akan menjadi lebih sederhana, kerana kami tidak mempunyai maklum balas dari servos kami dan akan menggunakan topik / joint_states untuk menyediakan robot pengendali dengan sudut untuk servo. Kami hanya kekurangan satu komponen iaitu pengawal robot.
Apa yang kita tunggu lagi? Mari tulis beberapa pengawal robot, jadi robot kita akan… anda tahu, lebih terkawal.
Langkah 4: Arduino Code untuk Robot Controller



Dalam kes kita Arduino Uno menjalankan simpul ROS dengan rosserial akan menjadi pengawal robot. Kod lakaran Arduino dilampirkan pada langkah ini dan juga terdapat di GitHub.
Node ROS yang berjalan di Arduino Uno pada dasarnya melanggan topik / JointState yang diterbitkan di komputer yang menjalankan MoveIt dan kemudian menukar sudut sambungan dari array dari radian ke darjah dan meneruskannya ke servo menggunakan perpustakaan Servo.h standard.
Penyelesaian ini agak sukar dan bukan bagaimana ia dilakukan dengan robot industri. Sebaik-baiknya anda sepatutnya menerbitkan lintasan pergerakan pada topik / FollowJointState dan kemudian menerima maklum balas mengenai topik / JointState. Tetapi di tangan kami, pelayan hobi tidak dapat memberikan maklum balas, jadi kami akan langsung melanggan topik / JointState, yang diterbitkan oleh nod FakeRobotController. Pada dasarnya kita akan menganggap bahawa apa sahaja sudut yang kita lalui untuk servo dilaksanakan dengan ideal.
Untuk maklumat lebih lanjut mengenai bagaimana rosserial berfungsi, anda boleh membaca tutorial berikut
wiki.ros.org/rosserial_arduino/Tutorials
Selepas anda memuat naik lakaran ke Arduino Uno, anda perlu menyambungkannya dengan kabel bersiri ke komputer yang menjalankan pemasangan ROS anda.
Untuk memunculkan keseluruhan sistem, jalankan arahan berikut
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
Sekarang anda boleh menggunakan penanda interaktif dalam RVIZ untuk menggerakkan lengan robot ke pose dan kemudian tekan Rencana dan Jalankan agar ia benar-benar bergerak ke posisi.
Sihir!
Sekarang kami bersedia untuk menulis kod Python untuk ujian tanjakan kami. Baiklah, hampir …
Langkah 5: (Pilihan) Menjana Pemalam IKfast
Secara lalai MoveIt mencadangkan penggunaan penyelesai kinematik KDL, yang tidak berfungsi dengan kurang dari 6 lengan DOF. Sekiranya anda mengikuti tutorial ini dengan teliti, anda akan melihat bahawa model lengan di RVIZ tidak boleh pergi ke beberapa pose yang harus disokong oleh konfigurasi lengan.
Penyelesaian yang disyorkan adalah membuat penyelesai kinematik tersuai menggunakan OpenRave. Ia tidak begitu sukar, tetapi anda harus membinanya dan ia bergantung kepada sumber atau menggunakan wadah docker, mengikut mana sahaja yang anda mahukan.
Prosedurnya didokumentasikan dengan baik dalam tutorial ini. Ia disahkan berfungsi pada VM yang menjalankan Ubuntu 16.04 dan ROS Kinetic.
Saya menggunakan arahan berikut untuk menghasilkan pemecah
openrave.py - inversekinematika pangkalan data --robot = arm.xml --iktype = translation3d --iktests = 1000
dan kemudian berlari
rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Translasi3D.0_1_2_f3.cpp
untuk menjana pemalam MoveIt IKfast.
Keseluruhan prosedur ini agak memakan masa, tetapi tidak begitu sukar jika anda mengikuti tutorial dengan teliti. Sekiranya anda mempunyai pertanyaan mengenai bahagian ini, sila hubungi saya di komen atau PM.
Langkah 6: Ujian Ramp


Sekarang kami sudah bersedia untuk mencuba ujian tanjakan, yang akan kami laksanakan menggunakan ROS MoveIt Python API.
Kod Python dilampirkan pada langkah ini dan juga terdapat di github repositori. Sekiranya anda tidak mempunyai jalan atau ingin mencuba ujian lain, anda perlu menukar pose robot dalam kodnya. Untuk yang pertama laksanakan
gema rostopik / rviz_moveit_motion_planning_display / robot_interaction_interactive_marker_topic / maklum balas
di terminal apabila sudah menjalankan RVIZ dan MoveIt. Kemudian gerakkan robot dengan penanda interaktif ke kedudukan yang dikehendaki. Nilai kedudukan dan orientasi akan ditunjukkan di terminal. Salin sahaja ke kod Python.
Untuk menjalankan ujian tanjakan
rosrun my_arm_xacro pick / pick_2.py
dengan RVIZ dan nod rosserial sudah berjalan.
Nantikan bahagian ketiga artikel, di mana saya akan menggunakan kamera stereo untuk mengesan objek dan melaksanakan pemilihan dan meletakkan saluran paip untuk objek sederhana!
Disyorkan:
Lengan Robotik Dengan Modul Zio Bahagian 3: 4 Langkah

Robotic Arm With Zio Modules Bahagian 3: Catatan blog ini adalah sebahagian daripada Zio Robotics Series. Pengenalan Di blog sebelumnya, kami menyiarkan tutorial Bahagian 1 dan 2 mengenai cara mengendalikan Robotic Arm menggunakan modul Zio. Bahagian 1 kebanyakan tertumpu pada pengendalian Robotic Arm's Claw t anda secara automatik
Lengan Robotik Dengan Modul Zio Bahagian 2: 11 Langkah

Robotic Arm With Zio Modules Bahagian 2: Dalam tutorial hari ini, kami akan menggunakan semua 4 servos dan pengawal tanpa wayar PS2 untuk mengawal lengan robot. Catatan blog ini adalah sebahagian daripada Zio Robotics Series. Pengenalan Di blog sebelumnya, kami menyiarkan Bahagian 1 tutorial mengenai cara mengendalikan Ar Robotik
Kawal Lengan Robotik Dengan Modul Zio Bahagian 1: 8 Langkah

Kawal Lengan Robotik Dengan Modul Zio Bahagian 1: Catatan blog ini adalah sebahagian daripada Siri Robotik Zio. PengenalanDalam tutorial ini, kita akan membina projek di mana kita akan menggunakan modul Zio untuk mengawal Lengan Robotik. Projek ini akan mengajar anda bagaimana membuat cakar Lengan Robotik anda untuk dibuka dan ditutup. Ini
Lengan Robot ROS MoveIt: 4 Langkah

ROS MoveIt Robotic Arm: Ini akan menjadi siri artikel mengenai membuat lengan robot dikendalikan dengan ROS (Robotic Operating System) dan MoveIt. Sekiranya anda menceburkan diri dalam robotik, ROS adalah rangka kerja hebat yang akan membantu anda membina robot yang lebih baik dengan lebih pantas. Ia membolehkan anda menggunakan semula
Cara Memasang Lengan Robot Kayu yang Mengesankan (Bahagian 1: Robot untuk Penjejakan Garis) - Berdasarkan Mikro: Bit: 9 Langkah

Cara Memasang Lengan Robot Kayu yang Mengesankan (Bahagian 1: Robot untuk Penjejakan Garis) - Berdasarkan Mikro: Bit: Lelaki kayu ini mempunyai tiga bentuk, sangat berbeza dan mengagumkan. Kemudian mari kita masuk satu persatu