Robotika · pelajaran 21
Sensor dan estimasi: drone yang tahu posisinya
Pengendali hanya sebaik perkiraannya
Semua PID di pelajaran 20 memakai perkiraan drone tentang dirinya sendiri, bukan kenyataan. Tab Estimasi menampilkan keduanya berdampingan. Dalam 3D, tanda silang biru menunjukkan di mana drone mengira ia berada.
Sudut: filter komplementer
- Giroskop mengukur laju putar. Kalau dijumlahkan, hasilnya sudut. Cepat dan halus, tetapi setiap giroskop punya sedikit bias, jadi jumlahnya terus melenceng.
- Akselerometer saat diam menunjuk ke bawah (gravitasi). Jadi ia tahu mana “bawah” dan tidak melenceng. Tetapi ia berderau, dan tertipu setiap kali drone berakselerasi.
Filter komplementer (di firmware: sensfusion6) menggabungkan keduanya. Giroskop dipakai untuk gerak cepat, dan akselerometer pelan-pelan menarik hasilnya kembali ke arah gravitasi. sensfusion6.kp mengatur seberapa kuat tarikan itu.
Coba sensfusion6.kp = 0 dan sensfusion6.ki = 0, lalu terbang satu menit. Selisih roll/pitch di tabel Estimasi terus membesar (±4° per menit). Drone tetap terbang karena lapis kecepatan menambalnya, tetapi ia sebenarnya miring tanpa sadar. Kembalikan ke 0.8 dan 0.002.
Yaw tidak punya penarik seperti itu: akselerometer tidak bisa melihat arah mata angin. Itu sebabnya selisih yaw pelan-pelan bertambah.
Posisi: Flow deck atau motion capture
Flow deck di bawah drone berisi dua sensor:
- ToF VL53L1x: jarak laser ke lantai, jadi tinggi (
/cf1/range,cf log range.zrange); - optical flow PMW3901: kamera kecil yang melihat lantai bergeser, jadi kecepatan datar.
Posisi datar adalah kecepatan yang dijumlahkan, seperti odometri TurtleBot3. Kesalahan kecil ikut terjumlah, jadi posisi pelan-pelan melenceng. Terbang bolak-balik beberapa kali lalu lihat posisi meleset di tab Estimasi.
Motion capture (kamera di dinding lab, misalnya Vicon atau OptiTrack) memberi posisi tepat dari luar. Centang posisi dari motion capture dan selisihnya hilang.
Gangguan: angin
Nyalakan kipas angin di kiri kandang. Panah biru di 3D menunjukkan angin: paling kencang di dekat kipas, kadang berhembus lebih keras. Drone tertiup ke arah +x. Lapis posisi melihat posisinya bergeser, lapis kecepatan meminta drone condong melawan angin, dan bagian integral (I) mengingat berapa condong yang dibutuhkan. Hasilnya, drone melayang miring tetapi diam di tempat.
Misi
Lepas landas dengan T, nyalakan kipas, lalu jangan sentuh tombol: drone harus menahan posisi (meleset < 10 cm) selama 10 detik. Perhatikan sudut pitch di HUD: drone melayang sedikit mendongak, condong melawan angin.
Selanjutnya: Terbang otomatis: ROS 2, go_to dan gerbang · Semua pelajaran