Robotika · pelajaran 13
Membuat peta: SLAM
Peta kisi (occupancy grid)
Lantai dibagi menjadi kotak 5 × 5 cm. Setiap kotak menyimpan keyakinan: kosong, terisi, atau belum tahu. Setiap sinar LiDAR memberi dua informasi:
- kotak-kotak sepanjang sinar itu kosong (sinar lewat);
- kotak di ujung sinar terisi (sinar memantul di sana).
Keyakinan disimpan sebagai log-odds dan dijumlahkan dari pindaian ke pindaian, jadi satu sinar yang salah tidak langsung merusak peta. Node slam menerbitkan hasilnya sebagai nav_msgs/msg/OccupancyGrid di /map sekali per detik:
ros2 topic echo /map
data berisi −1 (belum tahu), 0 (kosong) … 100 (terisi), baris demi baris. Buka tab Peta, atau centang Peta SLAM di lantai di Tampilan.
Masalahnya: peta butuh posisi, posisi butuh peta
Untuk menaruh sinar di peta, node harus tahu di mana robot berada. Dari mana? Dari odometri, dan kita tahu odometri melenceng (pelajaran 11).
Matikan scan matching di tab Peta, lalu jalan-jalan keliling rumah. Dinding yang sama mulai tergambar dua kali dan berbayang, karena posisi menurut odometri bergeser. Ketepatan dinding turun.
Scan matching
Nyalakan lagi. Kini, setiap pindaian baru dicocokkan dengan peta yang sudah ada. Node slam mencoba ratusan posisi di sekitar tebakan odometri (geser beberapa cm, putar beberapa derajat) dan memilih posisi tempat titik-titik pindaian paling pas jatuh di dinding yang sudah dikenal. Posisi hasilnya (/slam_pose, jejak biru) dipakai untuk menggambar pindaian itu.
Inilah SLAM: Simultaneous Localization And Mapping, memetakan dan menentukan posisi sekaligus. Cara ini (correlative scan matching) adalah inti Hector SLAM dan bagian depan Karto / slam_toolbox. Bedanya, mereka juga punya loop closure: saat robot kembali ke tempat yang pernah dilihat, seluruh peta dikoreksi.
Coba
- Jalankan skrip Ikuti dinding: robot mengelilingi setiap ruangan dengan aturan tangan kanan.
- Tabrakkan robot dengan sengaja (odometri kacau), lalu lihat apakah jejak biru tetap mengikuti jejak hijau.
- Lewati pintu dengan cepat dan berputar: di mana scan matching mulai kesulitan?
Misi
Petakan rumah sampai cakupan ≥ 70% dengan ketepatan dinding ≥ 85%. Angkanya ada di tab Peta.
Selanjutnya: Sensor inframerah dan ADC · Semua pelajaran