ロボット開発

IMUによる自己位置推定の精度向上を検証 ― メガローバーROS2実験

実施日:2025年6月2日
場所:多治見市産業文化センター(情報プラザ2F)

今回は、屋内移動ロボットにおける「自己位置の正確さ」について、IMU(動きや傾きを測るセンサ)の有無でどれほど違いが出るのかを比較検証しました。

実験では、ヴィストン社製の「メガローバー Ver3.0」という小型の移動ロボットを使用。地図情報(SLAM)とセンサを組み合わせて、自分が今どこにいるのかをロボットが判断できるかどうか、その精度と安定性を見てみました。

■ 実験の目的

自律移動するロボットにとって、自分の位置を正確に把握すること(自己位置推定)はとても重要です。一般的には、距離センサ(Lidar)を使って周囲の環境を読み取りながら位置を特定しますが、環境によっては誤差が出たり、旋回時にブレやすいという課題があります。

そこで今回は、IMUを加えることで自己位置の把握がどれくらい安定するのかを「IMUあり」と「IMUなし」で比較しました。

■ 使用機材

  • ロボット本体:メガローバー Ver3.0(ヴィストン製)ROS2
  • センサ:
    • 距離センサ(2D Lidar)北陽 UST-30LC
    • IMU(加速度や角度の変化を検知)Sony SPRESENSE向けマルチIMU Add-onボード
  • 制御用PC:小型PC(Ubuntu Linux)

■ 実験方法

屋内に事前にCartographer SLAMで地図を作成しました。作成した地図を使い、ロボットを任意の位置からゴールに向けて動かしました。ルートにはいくつかの曲がり角や方向転換が含まれており、シンプルな直進だけでなく、回転動作も求められる構成です。

IMUあり/なしの2つの構成で、それぞれ20回ずつ同じルートを走らせて記録を取りました。メガローバーを走らせるためにpythonでスクリプトを作成し、cmd_velをpublishして走らせました。

館内マップ
▲ 実験に使用した館内マップ(情報プラザ2F)

■ 評価の観点

  • 収束時間:ロボットが「今の自分の位置」を正しく認識するまでにかかった時間
  • 位置のズレ:ロボットの自己位置と実際の位置にズレが生じたかどうか

一致と判断したタイミングでは、マップ上の自己位置表示と、床に貼った実際の位置マーキングを照合して記録しました。

走行ルート
▲ 走行ルート
①~⑧まで走行させる間で、ロボットが「今の自分の位置」を正しく認識するまでにかかった時間を計測した

■ 実験結果

センサ構成 平均収束時間 最短 最長 安定性(標準偏差) 位置ズレの発生
IMUあり 30.8秒 27.5秒 35.1秒 2.13秒 なし
IMUなし 38.8秒 31.6秒 57.9秒 7.54秒 2回発生

■ 分かったこと

IMUを搭載した構成では、自己位置の収束が約8秒早く、ズレも起きませんでした。一方、IMUを使わない場合は、自己位置が大きくズレてしまうケースが2回ありました。

特に旋回を含むようなルートでは、IMUの補助があることで姿勢のブレを抑えられるようで、位置の安定性が高まることがわかりました。

■ ナビゲーションについて

ナビゲーションは、NAV2+Cartographer(Pure Localization)+ robot_localization EKF(拡張カルマンフィルタ、オドメトリ+IMU合成)の構成で実験しました。

NAV2のナビゲーション機能でゴールまで祖誘導し、ゴール地点と現在位置の差分を求め、その差を微調整しながら走行させるpythonプログラムを作成しました。

その結果、+-2cm、+-1°まで精度を高めることができました。

■ おわりに

今回の実験を通して、IMUの有無がロボットの位置把握の速さと安定性に大きな影響を与えることが確認できました。

今後も、こうしたセンサ評価を通じて、より安心して使えるロボットの開発を進めていきたいと思います。

TOP