Robot ping-pong: lengan 6 sendi
Robotnya
Ini robot lengan 6 sendi dari contoh ProtoTwin RLExamples (MIT). Model 3D-nya adalah ekspor CAD asli (Onshape), dan fisikanya ditulis ulang dengan NumPy di minirl.robot. Lengan yang kamu lihat bergerak persis sesuai simulasi.
Tekan ✋ Gerakkan sendi sendiri di pojok 3D dan geser tiap sendi:
| sendi | nama | sumbu putar |
|---|---|---|
| J1 | pinggang | tegak (memutar seluruh lengan) |
| J2 | bahu | mendatar |
| J3 | siku | mendatar |
| J4 | lengan bawah | miring 30° |
| J5 | pergelangan | mendatar (membalik arah) |
| J6 | putar bet | sepanjang lengan |
Perhatikan bahwa memutar bahu menggerakkan semua bagian sesudahnya. Posisi bet adalah hasil perkalian enam rotasi berurutan (forward kinematics):
Setiap adalah rotasi sebesar terhadap sumbu sendi ke-, di tempat sendi itu berada saat lengan diam.
Tugasnya
Bola dijatuhkan dari ketinggian 1,19 m (lingkaran hijau). Robot harus terus memantulkannya. Setiap pantulan kehilangan energi (koefisien restitusi 0,8), jadi bet harus bergerak ke atas saat menyentuh bola untuk mengembalikan bola ke ketinggian semula. Bet perlu bergerak naik sekitar 0,44 m/s tepat saat menyentuh bola.
Agen mengendalikan sudut target sendi (bawaan: bahu, siku, pergelangan). Motor servo mengejar target itu dengan kecepatan maksimal π rad/s, sehingga gerakan selalu sedikit terlambat. Agen harus memukul sebelum bola tiba.
Cara mencoba
- Pengendali tangan (IK): tanpa belajar. Pengendali ini menghitung sendiri posisi bet yang diinginkan, lalu memakai Jacobian (seberapa jauh bet bergerak jika sendi diputar sedikit) untuk mengubahnya menjadi sudut sendi. Ia berhasil, tetapi butuh pemahaman fisika dan penyetelan.
- Agen terlatih: PPO yang sudah dilatih jutaan langkah dengan
reward.pybawaan. Pilih episodenya, lalu buka Debugger dan klik bet atau bola untuk melihat nilainya. - PPO dari nol: tekan Latih dan lihat grafik
suksesnaik dalam beberapa menit. Bandingkan episode awal (bet bergerak acak) dengan episode akhir sebagai bayangan. - Reward bocor: hanya menghitung pukulan. Agen menemukan bahwa pantulan rendah dan cepat memberi lebih banyak pukulan per detik daripada pantulan tinggi. Reward-nya naik, tetapi itu bukan permainan yang kita inginkan.
- Tantangan 6 sendi: ruang aksi yang lebih besar membuat eksplorasi jauh lebih lama. Ini alasan nyata kenapa robot sungguhan sering dilatih dengan ruang aksi yang dibatasi dulu.
Reward bawaan
Diadaptasi dari contoh ProtoTwin:
tinggi: kurva lonceng , hanya saat bola sedang terbang. Nilainya terbesar saat puncak pantulan mencapai lingkaran hijau.posisi bet: penalti jika bet menjauh dari posisi diamnya, supaya lengan tidak “kabur”.tenaga: penalti kecil untuk percepatan motor, supaya gerakan halus.