Contents — find the section you need

Cara paling primitif bagi robot untuk mengetahui bahwa ia "bergerak 1 m ke kanan, 2 m ke depan" adalah dengan terus menjumlahkan perpindahannya sendiri. Robot tersebut mengintegrasikan jumlah putaran roda, kecepatan motor, dan laju sudut IMU dari waktu ke waktu untuk memperkirakan posisinya saat ini. Metode ini disebut penentuan posisi berdasarkan perkiraan (dead reckoning). Metode ini tetap berfungsi bahkan ketika GPS atau kamera sementara tidak tersedia, tetapi selip roda kecil atau bias sensor berubah menjadi kesalahan posisi yang bertambah seiring waktu.

Surveyor menggunakan penerima GNSS RTKPengamatan GNSS absolut
Modul IMU GY-521 dengan MPU-6050Contoh IMU berbiaya rendah

Gambar: Surveyor Menggunakan Penerima GNSS dengan Solusi RTK (SweetCanadianMullet, CC BY 4.0) / GY-521 Modul MPU-6050 (Nevit Dilmen, CC BY-SA 3.0), Wikimedia Commons. Sensor representatif, bukan pasangan perangkat keras wajib.

Ringkasan 30 Detik

  • Perhitungan posisi berdasarkan perkiraan (dead reckoning) memprediksi keadaan saat ini dari "keadaan sebelumnya ditambah perpindahan yang terukur." Perhitungan ini dapat diperbarui dengan kecepatan tinggi bahkan tanpa pengamatan.

  • Pada robot penggerak diferensial, perbedaan antara perpindahan roda kiri dan kanan menentukan sudut belok, dan rata-ratanya menentukan jarak ke depan. Kesalahan pada radius roda dan lebar tapak muncul sebagai kurva sistematis.

  • Kesalahan odometri terakumulasi melalui integrasi. Mendapatkan posisi absolut memerlukan koreksi dari pengamatan seperti GNSS, LiDAR, kamera, atau penanda reflektif.

  • IMU kuat dalam perubahan sikap jangka pendek, tetapi posisi bergeser dengan cepat ketika percepatan diintegrasikan dua kali. Menggabungkan roda dan IMU melalui EKF atau grafik faktor adalah pendekatan umum.

  • Dalam implementasi, stempel waktu, kerangka koordinat, konvensi tanda kiri/kanan, jari-jari roda, deteksi selip, dan kovariansi semuanya harus didefinisikan dengan benar sejak awal — jika salah, bahkan sensor mahal pun tidak akan memperbaikinya.

1. Kinematika Penggerak Diferensial

Misalkan jari-jari roda kiri dan kanan adalah r , jarak antara roda (tapak) adalah b , dan kecepatan sudut kiri/kanan adalah \omega_L,\omega_R . Kecepatan linier roda adalah v_L=r\omega_L dan v_R=r\omega_R, sehingga kecepatan translasi pusat kendaraan v dan laju putaran \dot{\theta} adalah

v=\frac{v_R+v_L}{2},\qquad \dot{\theta}=\frac{v_R-v_L}{b}

Dengan membiarkan posisi pada waktu k menjadi (x_k,y_k,\theta_k) dan periode pengambilan sampel menjadi \Delta t, integrasi Euler sederhana memberikan

x_{k+1}=x_k+v\cos\theta_k\Delta t,
y_{k+1}=y_k+v\sin\theta_k\Delta t, \qquad \theta_{k+1}=\theta_k+\dot{\theta}\Delta t

Saat mengemudi pada busur dengan kecepatan konstan, menggunakan integrasi eksak (peta eksponensial dalam koordinat badan) menjaga kesalahan tetap kecil bahkan pada kecepatan rendah dan laju putaran tinggi.

Diagram 1 · Use the button to switch views
Vehicle centerLeft wheel vLRight wheel vR Tread b vInstantaneous center of rotationIf vR > vL, turns left

Gambar 1 — Pada penggerak diferensial, perbedaan antara kecepatan kiri dan kanan menciptakan laju yaw. Menghentikan satu roda memungkinkan robot berputar di sekitarnya.

2. Mengapa Odometri Mengalami Penyimpangan

Jika radius roda memiliki kesalahan 1% dan Anda menganggap kiri dan kanan sama saat mengemudi, Anda akan secara bertahap berbelok bahkan ketika Anda berpikir Anda berjalan lurus. Resolusi encoder kiri/kanan, celah roda gigi, ketidakrataan lantai, keausan ban, dan deformasi akibat beban semuanya menjadi kesalahan sistematis. Jika roda tergelincir di lantai basah atau kerikil, rotasi yang diukur dan perpindahan aktual tidak lagi cocok.

Kesalahan sikap \delta\theta menghasilkan kesalahan posisi lateral. Untuk jarak ke depan s, perkiraan jangka pendek memberikan

\delta y\approx s\,\delta\theta

Berkendara sejauh 1 km dengan kesalahan sudut 0,5 derajat, dan offset lateral mencapai sekitar 8,7 m. Hanya menyatakan kesalahan posisi sebagai "sekian cm per detik" tidak dapat menangkap struktur kesalahan yang berbeda dari berkendara lurus, berbelok, dan tergelincir.

Kovarian odometri roda menyebarkan ketidakpastian perpindahan kiri/kanan ke dalam posisi dan memperbaruinya sesuai kebutuhan. Dalam implementasi, kovariansi ditingkatkan selama belokan atau ketika selip terdeteksi, sehingga fusi sensor hilir tidak terlalu mempercayai odometri.

3. Menambahkan IMU

Mengintegrasikan laju sudut \omega_z dari giroskop IMU menghasilkan

\theta(t)=\theta_0+\int_0^t(\omega_z(\tau)-b_g-n_g)\,d\tau

di mana b_g adalah bias giroskop dan n_g adalah noise. Bahkan pada saat roda tergelincir, perubahan jangka pendek pada laju sudut masih dapat diukur, memberikan estimasi sikap yang lebih halus daripada hanya roda saja. Saat mengintegrasikan percepatan dua kali untuk mendapatkan kecepatan dan posisi, kesalahan dari bias b_a meningkat seiring dengan

\delta p(t)\simeq\frac{1}{2}b_a t^2

sehingga IMU saja tidak dapat berfungsi sebagai sensor posisi jangka panjang.

Menggabungkan roda dan IMU: roda menangani perpindahan frekuensi rendah, dan IMU menangani laju sudut dan percepatan frekuensi tinggi. Roll/pitch diinisialisasi dari arah gravitasi, dan ketika magnetometer atau GNSS tersedia, referensi yaw absolut juga ditambahkan.

4. Koreksi dengan EKF atau Grafik Faktor

Salah satu contoh vektor keadaan adalah

\mathbf{x}=[x,y,\theta,v,b_g,b_a]^T

Pada langkah prediksi, model gerak nonlinier f dihitung dari roda dan IMU; ketika observasi tiba, residual digunakan untuk mengoreksinya.

\mathbf{x}_{k+1}=f(\mathbf{x}_k,\mathbf{u}_k)+\mathbf{w}_k,
\mathbf{z}_k=h(\mathbf{x}_k)+\mathbf{v}_k

Filter Kalman yang Diperluas (EKF) secara lokal melinierkan model nonlinier melalui Jacobian. Posisi GNSS, pencocokan pemindaian LiDAR, titik fitur kamera, dan pose penanda yang diketahui semuanya dapat dimasukkan sebagai observasi \mathbf{z}. Untuk perulangan besar atau kunjungan ulang, pose dan observasi sebelumnya disimpan dalam grafik faktor dan semuanya dioptimalkan kembali setelahnya.

Untuk ROS 2 (dengan asumsi definisi pesan standar Jazzy di sini), nav_msgs/msg/Odometry roda, sensor_msgs/msg/Imu IMU, dan transformasi TF odom → base_link harus menggunakan basis waktu yang sama. Tipe pesan ini sesuai dengan ejaan ROS 1 nav_msgs/Odometry dan sensor_msgs/Imu, tetapi detail implementasi ROS 2, QoS, dan pengaturan distribusi harus diperiksa secara terpisah. EKF robot_localization adalah titik awal yang wajar untuk implementasi, tetapi menolkan kovariansi atau memasukkan informasi yang sama dua kali membuat estimasi menjadi kaku secara tidak wajar.

5. Bagaimana Ini Digunakan pada Robot Saat Ini

Robot mobile otonom (AMR) dalam ruangan terus-menerus menggunakan encoder roda dan IMU, mengatur ulang drift melalui LiDAR atau pencocokan peta kamera. Dalam pengemudian otonom, kecepatan roda, sudut kemudi, IMU, GNSS, dan LiDAR digabungkan sehingga estimasi tetap akurat selama beberapa detik hingga puluhan detik bahkan ketika GNSS terputus di dalam terowongan atau di bawah struktur yang tinggi. Pada robot pertanian, lumpur, alur, dan lereng meningkatkan selip roda, sehingga RTK-GNSS, IMU, dan sensor gaya implement digabungkan.

Robot bawah air dan pesawat ruang angkasa dapat menempuh jarak yang jauh tanpa GNSS. Log kecepatan Doppler (DVL), pelacak bintang, atau pencocokan medan ditambahkan sebagai pengamatan absolut dengan laju rendah untuk menjaga kovariansi perhitungan posisi tetap terkendali. Yang penting adalah meneruskan estimasi ke perencanaan dan kontrol bersama dengan "seberapa yakin kita dengan ini."

6. Daftar Periksa Implementasi

  1. Konversikan stempel waktu sensor ke jam umum dan ukur latensi.

  2. Gambarkan kerangka koordinat base_link, odom, dan map beserta konvensi tanda tangan kanannya.

  3. Identifikasi radius roda, tapak ban, dan resolusi encoder melalui uji coba mengemudi nyata.

  4. Evaluasi kesalahan secara terpisah untuk mengemudi lurus, belokan stabil, angka delapan, gundukan, dan permukaan dengan gesekan rendah.

  5. Tingkatkan kovariansi ketika terjadi selip atau kehilangan data, dan koreksi ketika pengamatan absolut tiba.

  6. Putar ulang log untuk memastikan input yang sama menghasilkan estimasi yang sama.

Dalam pengujian, catat tidak hanya kesalahan posisi titik akhir tetapi juga kesalahan sikap, kesalahan maksimum, persentil ke-95, dan laju pergeseran selama kehilangan data. Estimasi yang biasanya akurat tetapi kadang-kadang melenceng jauh tidak dapat digunakan untuk perencanaan jalur yang aman.

Ringkasan

Dead reckoning adalah teknik dasar untuk memperkirakan pergerakan robot dengan penundaan sesingkat mungkin. Teknik ini mengintegrasikan perpindahan roda dan laju sudut IMU, menekan drift dengan pengamatan absolut dari GNSS, LiDAR, atau kamera. Sebelum menambahkan lebih banyak sensor, mendapatkan model gerak, stempel waktu, kerangka koordinat, dan kovariansi yang tepat adalah hal yang menentukan akurasi dan pengulangan.

Periksa pemahaman Anda
Apakah rotasi roda yang tepat menghilangkan kesalahan posisi?

Kesalahan selip dan geometri roda atau pemasangan tetap ada.

Presisi sensor dan validitas model gerak adalah masalah yang terpisah.

Referensi

Related reading

Explore another aspect of this fieldMengapa ICP gagal: inisialisasi, outlier, dan geometri simetrisExplore another aspect of this fieldDari pemetaan hingga navigasi di ROS 2 — prosedur Jazzy dan Nav2 minimal.