名称 MIRS2605 企画・基本設計
番号 MIRS2605-DSGN-0004

版数 最終更新日 作成 承認 改訂記事
A01 2026.08.17 鈴木 大智 初版

自律走行の手法検討

目的

多数の木が生えている不整地の公園内において、自律走行を実現すること。

課題

現状使用しているセンサについて

まず、2D LiDARとエンコーダのみで走行することを考える。

センサ紹介
センサ 製品名 取得情報 特徴・課題
2D LiDAR RPLiDAR S1 2次元の全方位の距離、黒い物体では10m、白い物体では40mまで計測可能 高さ方向の情報がない
エンコーダ AMT103-V クローラの回転量、角度精度は±0.25°であり、現状4逓倍で計測を行っている。 スリップによる誤差、クローラであるため旋回時の横滑りの情報がない

木の生えた場所を自律走行するためには、2D LiDARとエンコーダから得る情報では不十分と考える。
現状、自律走行するための課題は2つに大別できる。

  1. ロボットが障害物を避けることができない
    • 車体が傾くと、2D LiDARの計測平面が変化し同じ場所でも異なる計測結果になる。
    • LiDARは計測平面より高い位置ないし低い位置にある障害物を把握できない。

  2. ロボットが自己位置を推定できない
    • 2D LiDARでは特定の平面しか計測できず、木の幹など限られた特徴しか得られないため、異なる場所でも類似した計測結果になる可能性がある。
    • 開けた場所では木が10m以上離れる場合がある。※1
    • 旋回時におけるオドメトリの精度が低い。
    • 不整地での走行ではクローラが空転する可能性がある。
※1 開けた場所での距離はgoogle mapの距離測定機能を利用した概算値である。

自律走行に必要な情報

現状の構成に不足する情報と補完するセンサを調査した。

不足している情報 現状の課題 補完するセンサ
高さ方向の周囲の情報 2D LiDARでは計測平面上でのみの計測 複数台の超音波センサ、3D LiDAR、ステレオカメラ
車体の姿勢・運動 車体の傾き、回転を把握できない。 IMU
正確な位置情報 LiDAR、オドメトリのみでは場所を取り違える可能性がある。 GNSS、RTK-GNSS、PPP-RTK

センサ候補の比較

それぞれのセンサについて予算と規則の面から実現可能性を検討する。

上記からGNSSおよびRTK-GNSSを除外した。GNSSについては現状の芝刈りロボットの清掃範囲を考えたときの誤差が大きいため、RTK-GNSSについては補正情報を取得するための通信環境の構築・維持に費用がかかり、予算では困難であるためである。

よって正確な位置情報の割り出しには3D LiDARもしくはステレオカメラ、IMU、エンコーダによる統合を用いる。現状の構成より正確に割り出すことで達成することにする。

KPI

選択したセンサから評価指標を定めた。

開けた場所では木までの距離が10 m以上となる可能性がある。 自己位置推定には複数本の木を特徴として利用する必要があるため、 より広い範囲の木を計測できることを考慮し、20 m以上をKPIとして設定した。

測定に用いたハード、ソフト

結果

3D LiDARが20m以上離れた場所の点群データを取得できること。

まず、2DLiDARで学生玄関前の屋外で計測を行った。格子は1辺1mとなっている。木やコンクリートの構造物が見られる。離れた点ではおおよそ20m離れていることが読み取れる。

2D LiDARでの実証

次に通常の2D LiDARを横向きに固定し、ステッピングモータで回転させながらスキャンした。
Arduino UNO R3がステッピングモータの角度を、LiDARが点群をpcに送信し、角度に合わせて変換を行った。

3dlidarの画像

自作3D LiDAR

複数のレーザースキャンを統合して3D点群を生成した。室内で実施した結果、壁や家具などの形状を立体的な点群としてRViz上で確認できた。

実験室の点群

実験室内の様子

廊下の点群

廊下の様子

室内環境では回転2D LiDARによって3D点群を生成できることを確認した。

ステレオカメラが20m以上離れた場所の深度から点群データを取得できること。

RealSense D435で屋内と屋外で点群を撮影した。
なお、画像で示すデータにフィルタはかけていない。

演習室内の点群

演習室での撮影(601,943点)

屋外の点群

屋外での撮影(17,757点)

屋外での撮影はグラウンド中央からやや南東によった場所から撮影した。撮影時にカメラを移動させなかった。最大で59.88m程度の場所に点が見られた。

検証時の主な設定

IMUが車体の姿勢変化を取得できるか。

ESP32でプログラムを作成し、microROSでPCと通信した。IMUが出力する各値をPCからみることができた。加速度についてはz軸が-9.8...となっており、地球の重力加速度と一致していることを確認した。
一方でIMU自身が姿勢についての情報を直接出力することはなかった。

課題点

3D LiDAR

屋外での測定から、20 m以上の距離を計測できる。ただし、現時点では「SLAMにおいて利用可能な品質で取得できる」とは判断できない。

高さ方向での障害物検知には、LiDARの首振りの時間が影響する。現状10秒で180度回転する。精度を高く計測するには首振りの範囲を狭くする必要がある。

サーボモータとの動機については現状LiDARとarduinoからのサーボの情報を来たものから紐づける方式になっている。時刻の同期の精度が高くない。

走行時に首振りの時間が長いと、3D LiDARが計測するような密度の高い点群を取ることが難しいと考えられる。

ステレオカメラ

屋外での撮影には原点から約59.88m離れた座標の点が含まれていたが、 数十m先の木を撮影した結果からは木の形状や特徴を明確に確認することはできなかった。

59.88mはPLY座標の原点から最も離れた頂点までの距離であり、D435が正確に59.88m先を計測したことを保証するものではない。目視で構造物を判断できないため、ノイズの可能性が考えられる。

ステレオカメラについて特徴をまとめた。

IMU

姿勢制御アルゴリズムの搭載が行われていない。当初は、接続するだけで姿勢の情報が取得でき、高度なプログラムは不要であると考えていた。実際には、拡張カルマンフィルタかMadgiwckフィルタといったフィルタが必要になる。現在得られている情報から姿勢の情報を得られることは分かったが、mirsにおいてどのフィルタが妥当であるかの判断がついていない。

参考文献

RPLiDAR S1のデータシート
rtabmap_ros
rtabmap_ros Tutorial StereoOutdoorMapping
BMX055マニュアル
Arduino-based LIDAR Scanner
SCAN 2D / 3D LIDAR - DIY
How to convert 2D LiDAR to a 3D LiDAR ? | rokr
3D LIDAR Scanner (new version)
DIY 3D lidar point cloud testing
I Built a Scanner that Sees in Total Darkness



MIRS2605ドキュメント管理台帳へ