Robotika · pelajaran 10
Dua roda: kinematika diferensial
Dua angka masuk, dua angka keluar
/cmd_vel berisi linear.x = v (m/s, maju) dan angular.z = ω (rad/s, putar ke kiri). Robot hanya punya dua roda dengan jari-jari r = 3,3 cm dan jarak antar roda L = 16 cm. turtlebot3_node mengubahnya:
- Maju lurus: kedua roda sama cepat.
- Putar di tempat (v = 0): roda berputar berlawanan arah.
- Belok sambil maju: roda luar lebih cepat dari roda dalam.
Lihat Jalur perintah di bawah 3D sambil menekan W, lalu A: turtlebot3_node menulis kecepatan kedua roda dalam rad/s.
Coba ros2 topic pub -r 10 /cmd_vel geometry_msgs/msg/Twist '{linear: {y: 0.2}}'. Robot tidak bergeser, dan Log menjelaskan alasannya: roda diferensial tidak bisa bergerak ke samping. Robot seperti ini disebut non-holonomic.
Servo dalam mode kecepatan
Sendi OP3 memakai mode posisi (“pergi ke sudut ini”). Roda TurtleBot3 memakai mode kecepatan (Operating Mode = 1): “berputarlah secepat ini terus”.
| alamat | nama | arti |
|---|---|---|
| 11 | Operating Mode | 1 = kecepatan |
| 104 | Goal Velocity | kecepatan tujuan, satuan 0,229 rpm, bertanda |
| 128 | Present Velocity | kecepatan terukur |
| 132 | Present Position | sudut roda; terus bertambah, dipakai sebagai encoder |
Buka tab Servo dan pilih wheel_left_joint. Grafiknya kini menunjukkan kecepatan. Setiap 20 ms turtlebot3_node mengirim satu SyncWrite Goal Velocity ke ID 1 dan 2. Lihat paketnya di tab Bus Dynamixel.
Menyetir lewat bus
Satuan Goal Velocity adalah 0,229 rpm = 0,024 rad/s. Jadi 100 ≈ 2,4 rad/s ≈ 8 cm/s di permukaan roda.
dxl read 1 104 4
dxl write 1 104 100
Tanpa Jeda driver, nilaimu langsung ditimpa turtlebot3_node 50 kali per detik. Centang Jeda driver, lalu tulis ke kedua roda. Nilai yang beda membuat robot berbelok, dan nilai negatif membuatnya mundur. Batasnya ±300; nilai di luar itu ditolak servo dengan Data Limit Error.
Misi
Dengan driver dijeda, gerakkan robot 0,3 m hanya dengan dxl write ke Goal Velocity (alamat 104) kedua roda. Ingat menulis 0 untuk berhenti!
Selanjutnya: Odometri: menebak posisi dari putaran roda · Semua pelajaran