Robotika · pelajaran 1
Robot, sendi, dan kinematika
Robot = merasakan, berpikir, bergerak
Hampir semua robot mengikuti putaran yang sama, puluhan sampai ratusan kali per detik:
- Merasakan (sense): membaca sensor, misalnya sudut tiap sendi dan kamera.
- Berpikir (think): memutuskan gerakan berikutnya.
- Bergerak (act): mengirim perintah ke motor.
Di playground ini kamu bisa melihat ketiganya. Jalur perintah di bawah tampilan 3D menunjukkan satu perintah berjalan dari tombol keyboard sampai ke motor, lalu kembali sebagai pembacaan sensor.
Sendi dan derajat kebebasan
Lengan ini punya 6 sendi putar, ditambah capit dua jari di ujungnya (servo ketujuh yang hanya membuka dan menutup). Tiap sendi digerakkan satu servo, dan setiap sendi menambah satu derajat kebebasan (degree of freedom, DOF). Butuh 6 DOF untuk menaruh benda di posisi mana pun (3 angka: x, y, z) dengan arah mana pun (3 angka lagi). Itu sebabnya lengan industri hampir selalu punya 6 sendi.
Buka slider 🎚 Gerakkan sendi sendiri di pojok kanan atas. Geser J2 (bahu): semua bagian sesudahnya ikut berputar. Posisi capit ditentukan oleh keenam sudut sekaligus.
Forward kinematics: dari sudut ke posisi
Kalau keenam sudut diketahui, posisi ujung capit (TCP, tool centre point: titik di antara kedua jari) bisa dihitung dengan mengalikan rotasi tiap sendi secara berurutan, dari pangkal ke ujung:
Ini forward kinematics (FK): selalu ada tepat satu jawaban, dan hitungannya cepat.
Inverse kinematics: dari posisi ke sudut
Biasanya kita butuh kebalikannya: “taruh capit di titik ini, sudut berapa yang dibutuhkan?” Itu inverse kinematics (IK), dan lebih sulit. Bisa ada banyak jawaban, satu, atau tidak ada sama sekali (titik di luar jangkauan).
Tekan W A S D (maju/mundur/kiri/kanan) dan R / F (naik/turun). Keyboard tidak menggerakkan sendi; ia menggeser titik tujuan (lingkaran biru muda). Node arm_ik lalu mencari sudut keenam sendi dengan cara berulang:
- hitung posisi capit sekarang dengan FK;
- hitung Jacobian: seberapa jauh capit bergeser kalau tiap sendi diputar sedikit;
- ubah sudut ke arah yang mengurangi jarak ke tujuan, ulangi sampai cukup dekat.
Selain posisi, IK di sini juga menjaga capit tetap tegak (sisi atasnya menghadap ke atas). Di meja melukis dan konveyor, capit dijaga menghadap ke bawah: itu 6 syarat untuk 6 sendi. Coba dorong tujuan jauh ke depan dengan W: di batas jangkauan, Log menampilkan peringatan “di luar jangkauan”.
Bandingkan dua jalur
- Slider = node
/joint_guiyang mengirim sudut langsung ke/arm/joint_goals(tanpa IK). - Keyboard =
/teleop_keyboard→/arm/target→arm_ik→/arm/joint_goals.
Lihat bedanya di tab Graf ROS. Keduanya berakhir di node yang sama, arm_driver, yang mengirim perintah ke servo.
Misi
Pecahkan ketiga balon dengan menyentuhnya menggunakan ujung capit. Pakai keyboard, slider, atau skrip Pecahkan balon di tab skrip.py.
Selanjutnya: Servo: motor yang tahu posisinya · Semua pelajaran