Abudoriです。 つくばチャレンジ本走行も終わり、レポート提出とポスター発表をしてきました。 つくばチャレンジシンポジウムでのポスターについてダイジェストを書いていこうと思います。
8ページのレポートとポスターはこちらで公開しておりますので、ご覧ください。
つくばチャレンジ2024の所感
今年で実践したかったことが3DLiDARの活用でした。 3DLiDARを使う方法自体は、うまくいっている屋外ロボットはほとんどと言っていいほど採用され、使われています。 方法自体は新しくもなんともないのですが、いざやってみようとしても、解説しているWebサイトは少ないと感じていました。
3D地図の作成、3Dの位置推定、3Dの位置からのナビゲーションをどのように行うかを体系的な理解を実際にやってみることで深めることができました。シンポジウムの反応含め、3DLiDARを使用した成果を簡単にまとめます。
地図作成
自己位置推定をするための地図作成にはGLIMを使用しました。以下のような破綻のないキレイな地図を作成することができました。
また、この地図は公開しているため、今後のつくばチャレンジで使用したい方はご活用ください。
自己位置推定
GLIMで作成した地図と3DLiDARのスキャンを比較して自己位置推定を行います。
lidar_localization_ros2を使用すると、つくばチャレンジのすべてのコース上の自己位置推定で概ね正確に推定できました。
スキャンマッチングのみでの推定位置で不安定な部分がいくつかありました。
安定度が低下する場所は段差のある部分で、この場所では、ロボットが傾きLiDARの像が大きく歪むためです。 このような瞬間に自己位置がだんだん遠くにずれていって、復帰できなくなることがあります。 このような時は、ロボットの車輪の回転数から求めるオドメトリを拘束として利用することで防ぐことができます。 これでつくばチャレンジ全域で安定した自己位置推定を継続することができました。
障害物認識
障害物認識では、MID-360を使用して高さに依らない障害物認識ROS2パッケージを作成しました。
こちらから利用できます。
2DLiDARのスキャンは障害物認識でよく利用されます。
ただ、設置した高さの障害物しか認識することができません。また、坂道がある場合、地面も障害物として映ってしまうため、一工夫が必要です。
MID-360の3次元点群から障害物は認識し、地面などは除去することで上記の弱点を回避しました。
点群から法線を抽出し、地面は除去し障害物だけ点群を残しました。 なので、机のように2DLiDARでは、脚しか見えないものもきちんと障害物として認識します。 また、高さを考慮しているため、ロボットの身長より低いもののみ反応させることができます。
Navigation
ロボットを走行させる指示はNavigation2を利用した。 Navigation2で走行させるにあたって、前述のlidar_localization_ros2を起動し、ロボットの自己位置を常に出力しておきます。 数メートルおきにWaypointを用意し、このWaypointをNavigation2に与えて走行指示をします。
Waypointは地図を作成したセンサデータ(BAGファイル)で自己位置推定をCSVにダンプしました。 このダンプした位置は100万点ほどのデータになり大変重いので、これを距離2m程度に間引きしました。
自動間引きだとうまく走行できないところが発生しそうなので、それを修正するツールで修正しました。
このツールはここから利用できます。 github.com
つくばチャレンジ2024
つくばチャレンジ2024では、3DLiDARで自己位置推定をし、占有格子地図で経路計画をする王道な方法を試しました。
障害物認識では、点群を用いて、センサ設置高さに依らない障害物検知と地面を障害物としないことで効率的な認識を実装できました。
しかし、設定したWaypoint通りにしか走行できないため、本走行では、ロボットの渋滞で対処できずリタイアしました。 つくばチャレンジ2025では、走行中に、停止、追い越し禁止、回り道などのモードを用意して完走を目指そうと思います。