本当の位置
ロボットが思っている位置と、その自信のなさ(円)
探した道
見えているマーカー
レストランで料理を運ぶロボットです。行き先を選ぶと、自分がどこにいるかを確かめながら、テーブルや人をよけて道を探し、その道に沿って走ります。お掃除ロボットや倉庫の運搬ロボットも同じしくみです。
走っている間、この 4 つを同時に続けている
| やっていること | 本物ではこうする | このリポジトリ |
|---|---|---|
| 地図 | 最初に一度、ロボットを手で押して店内を走らせ、レーザー距離センサー(LiDAR)で地図を作る(SLAM) | — |
| 自分はどこ? ずれを直す | 車輪の回転と、LiDAR やカメラで見た壁・マーカーを組み合わせて推定する。ここではカルマンフィルタ(EKF)を使っている。本物ではパーティクルフィルタ(AMCL)も定番 | 04_estimation |
| 道を探す | 地図をマス目に区切って最短の道を探す(A* という方法) | 05_planning |
| 道にそって走る | 少し先の点を目指してハンドルを切る(Pure Pursuit)。本物では人の動きも予測しながら速さを決める | 03_control |
| ぜんぶまとめて | ROS 2 の Nav2 というライブラリが、上の 4 つを部品として持っている。自作せずに設定だけで動かすことが多い | 07 (予定) |
大事なのは、ロボットは自分の本当の位置を直接は知らないということ。いつも「たぶんここ」という推定の上で道を探して走っています。推定がずれると、正しく計画してもぶつかります。