目次 — 知りたいところから読む

屋内自律ロボットを学ぶときは、アルゴリズム名を暗記する前に「センサの値が、どのようにモータの指令へ変わるか」を追うと全体を見失いにくい。本記事は、車輪で床を移動するロボットを対象に、既存の解説と実装記事をつなぐ入口である。

最初に追う一本の流れ

図1 · 横にスクロールして図を読む
センサで観測し、位置を推定して経路を計画し、モータを制御した結果を再び観測する

指令した速度と実際の速度は、滑りや負荷によって一致しない。そのため観測は一度きりの入力ではなく、走行中に繰り返す。地図の障害物と目の前の障害物も一致するとは限らず、局所的な観測を計画へ戻す必要がある。

1:センサが何を測るか

LiDARで距離、IMUで角速度と比力、エンコーダで車輪の回転を確認する。最初の到達点は「各センサの出力だけでは分からない量」を説明できること。車輪の回転だけでは床との滑りを直接測れず、IMUの積分には誤差が蓄積する。

2:現在位置を推定する

デッドレコニングからLiDAR SLAMセンサフュージョンへ進む。短時間で滑らかな位置と、地図に対して補正した位置を分けて考えると、odommapの役割を理解しやすい。座標の意味はROS REP-105に対応する。

3:通れる場所を表現して経路を選ぶ

占有格子で空間表現、経路計画で経路選択を学ぶ。地図上で一点が通れても、幅のある車体が通れるとは限らない。演習では、車体の幅を広げたときに通路の可否が変わる理由を、地図と車体形状の両方から説明する。

4:動作へ変えて確認する

PID制御Python実験で目標値への追従を確認し、ROS 2入門からNav2の最小手順へ進む。Nav2の役割分担は公式のナビゲーション概念も参照できる。

学びたいこと 最初に行う確認 次の出口
原理を理解する 各ブロックの入力・出力を紙に書く 分野別の詳細解説
シミュレーションする 地図上で初期位置とゴールを指定する Nav2の最小手順
実機を改善する 同じ条件のログを複数回残す SLAM評価・電源の切り分け

実装記録と学習手順を往復する

Duskcoilのnewbotの地図・ナビゲーション記録には固有の構成と不具合がある。最小シミュレーションと同じ構成だと思い込まず、センサ、TF、地図への変換、速度指令の経路を対応づけて読む。実装上の依存関係はNav2の初回セットアップガイドからも確認できる。

最後に、観測が途切れたときにどの処理が止まり、モータへ何が出るかを説明してみよう。分からない境界が、次に読むべき記事である。

次に読む

シミュレーションで全体をつなぐROS 2で地図作成から自律走行まで — Jazzy・Nav2の最小再現手順センサ間の境界を点検するセンサフュージョンがうまくいかない理由 — 時刻ずれ・座標系・外部較正シリーズの次の内容へ進むROS 2入門 — ノード・トピック・DDSでロボットを安全に分散制御する