Robotika · pelajaran 22
Terbang otomatis: ROS 2, go_to dan gerbang
crazyswarm2
Di lab, Crazyflie biasanya dikendalikan dari ROS 2 lewat crazyswarm2. Node crazyflie_server mengirim perintah lewat radio Crazyradio dan menerbitkan data dari drone sebagai topik. Buka Graf ROS:
| antarmuka | jenis | arti |
|---|---|---|
/cf1/takeoff | layanan Takeoff | naik ke height dalam duration |
/cf1/go_to | layanan GoTo | terbang mulus ke goal (+ yaw) dalam duration |
/cf1/land | layanan Land | turun lalu mematikan motor |
/cf1/cmd_hover | topik Hover | setpoint stream: kecepatan, laju yaw, tinggi |
/cf1/pose | topik PoseStamped | posisi menurut drone |
/cf1/range | topik Range | jarak ke lantai dari Flow deck |
Dua cara memerintah
- Tingkat tinggi (
takeoff,go_to,land): cukup satu panggilan. Lintasan mulus (minimum jerk) dihitung di dalam drone, jadi drone tetap tenang walaupun radionya putus-putus. - Setpoint stream (
/cf1/cmd_hover): kirim terus, minimal beberapa kali per detik, seperti joystick. Itulah yang dilakukan tombol W A S D. Firmware punya watchdog: 0,5 detik tanpa setpoint, drone mengerem; 2 detik, motor mati dan drone jatuh. Untuk kembali ke perintah tingkat tinggi, panggil/cf1/notify_setpoints_stop.
Python
Buka skrip.py, preset Lewati gerbang:
ke = node.create_client(GoTo, "/cf1/go_to")
ke.call(GoTo.Request(goal={"x": 0.5, "y": 0.0, "z": 0.6}, yaw=0.0, duration={"sec": 2}))
minros.sleep(2.3)
Setiap gerbang didekati dari depan dulu, lalu ditembus lurus. Drone yang memotong serong bisa menyerempet bingkai. Lihat Log: setiap tabrakan dan setiap gerbang yang dilewati dicatat.
Coba
- Perpendek
detikdi skrip: semakin cepat, semakin miring drone dan semakin jauh ia kebablasan di tiap titik. - Rusakkan satu motor (tab Motor) di tengah penerbangan. Drone berputar liar dan jatuh, lalu supervisor mengunci motor. Quadcopter tidak punya cadangan, dan inilah alasan drone besar sering memakai 6 atau 8 motor.
- Bandingkan Flow deck (bawaan) dengan motion capture (kotak Crazyflie di pojok 3D): dengan Flow deck posisinya pelan-pelan melenceng, jadi gerbang terakhir tidak lagi dilewati tepat di tengah.
Misi
Lewati gerbang 1, 2, 3 berurutan, lalu mendarat di landasan kuning. Pakai skrip, keyboard, atau terminal.
Selanjutnya: Bangun sendiri, dan kepala yang mencari · Semua pelajaran