Robotika · pelajaran 31
Lengan yang melukis
Dari bet ke capit
Lengan ini sekarang memakai capit dua jari (parallel gripper), bukan bet ping-pong. Capit itu servo ketujuh (ID 7). Sudutnya diubah menjadi lebar bukaan jari, 0–8 cm. Perintahnya lewat topik /gripper/command (std_msgs/Float64, dalam meter):
capit.publish(Float64(data=0.05)) # buka 5 cm
capit.publish(Float64(data=0.0)) # tutup
Kalau ada benda di antara jari, servo berhenti di lebar benda itu. Benda itu terjepit dan ikut ke mana pun capit bergerak, sampai capit dibuka lagi. Tekan G untuk membuka dan menutup capit dengan keyboard.
Enam syarat untuk enam sendi
Titik yang dikejar IK adalah TCP (tool centre point), yaitu titik di antara ujung kedua jari. Posisi saja hanya 3 syarat. Untuk mengambil kuas yang berdiri di raknya, capit juga harus menghadap lurus ke bawah, dan jarinya harus menghadap ke arah tertentu. Itu 3 syarat lagi, jadi totalnya 6 syarat untuk 6 sendi.
Di meja ini arm_ik memakai syarat lengkap itu: posisi TCP ditambah matriks rotasi alat. Ada tiga cara memberi perintah:
| Topik | Isi | Orientasi |
|---|---|---|
/arm/target | Point: posisi TCP | mengikuti mode alat saat ini |
/arm/tool_mode | String: bawah 30 atau datar | menghadap ke bawah dengan jari diputar 30°, atau tegak |
/arm/target_pose | Pose: posisi + quaternion | bebas, sesuai quaternion |
IK numerik bisa terjebak di solusi yang salah. Contohnya siku yang harus ditekuk ke arah lain untuk titik yang dekat dengan pangkal lengan. Karena itu arm_ik mencoba beberapa pose awal dan memilih yang paling dekat dengan tujuan.
Menghitung dari ujung kuas
Begitu kuas terjepit, yang penting bukan lagi TCP, tetapi ujung bulu kuas: 12,5 cm di bawah TCP, di sepanjang jari. Skrip memakai fungsi kecil ini:
def ujung_di(x, y, z_ujung):
pergi_ke(x, y, z_ujung + KUAS) # TCP = ujung kuas + panjang kuas
Ini disebut offset alat. Di robot industri, setiap alat (las, obeng, kuas semprot) punya TCP-nya sendiri, dan program menggerakkan TCP itu, bukan pergelangan.
- Tekanan menentukan lebar garis. Bulu kuas bisa tertekan sampai 6 mm. Makin ditekan, makin lebar garisnya: sekitar 2,5 mm sampai 8 mm.
- Cat bisa habis. Satu celupan cukup untuk ±30 cm garis, dan garisnya memudar saat cat menipis. Topik
/paint/brushmelaporkan warna dan sisa cat di kuas (sisa0–1). Skrip berhenti di tengah garis, mencelup lagi, lalu kembali ke titik terakhirnya. Itu umpan balik dari sensor, bukan hitungan buta. - Lintasan dipotong kecil-kecil.
pergi_kemengirim titik-titik antara 20 kali per detik di sepanjang garis lurus. IK dihitung untuk setiap titik, sehingga ujung kuas benar-benar berjalan lurus di atas kertas. Kalau hanya titik akhir yang dikirim, tiap servo menuju sudut akhirnya sendiri-sendiri dan ujung kuas melengkung.
Misi
Lukis rumah dan matahari di atas pola pensil di kertas. Paling sedikit 80% garis pola harus tertutup cat, dan paling banyak 30% cat boleh jatuh di luar pola. Skor terlihat di HUD kiri atas. Jalankan Melukis rumah, lalu coba ubah warnanya, TEKAN, atau tambahkan pintu.
Selanjutnya: Ambil dan taruh: memilah dari ban berjalan · Semua pelajaran