このページではLiDAR付RaspberryPiマウスを用いてSLAMによるナビゲーションを行います。
SLAMはSimultaneous Localization and Mappingの略で、環境地図作成と自己位置推定を同時に実行することを指し、本チュートリアルでは 移動ロボットのナビゲーションに関わるRTコンポーネント群を使用します。
移動ロボットのナビゲーションに関わるRTコンポーネント群はMRPTという自己位置推定、環境地図作成、経路計画などの機能を提供するクロスプラットフォームなライブラリを使用しています。
まずRaspberryPiマウスにLiDARを取り付けます。
LiDARマウントには2種類あります。以下に記載の(1)専用LiDARマウント、(2)マルチLiDARマウントの取付手順を参考にしてRaspberry Piマウス本体に取り付けてください。
以下の画像のように2本のねじで止めるマウントの場合、下記の手順で取り付けてください。
以下のRaspberry Piマウス本体、LiDAR、タッピングビスを用意してください。
次にRaspberry Piマウス底面のねじを外してください。
基盤部分をフレームごとずらしてください。
次にスペーサーを手で回して外してください。
センサ基盤を外してください。
LiDARをRaspberry Piマウスの上部分に載せてビスで固定してください。
Raspberry PiマウスとLiDARをUSBポートで接続してください。
外したパーツを元に戻せば完成です。
以下の画像のように4つのツメを引っかけるマウントの場合、下記の手順で取り付けてください。
以下のように4つのツメをRaspberry Piマウス本体に引っかけます。
まず、前方の2つのツメを引っかけてください。
次に後ろのツメを引っかけます。
そして、マルチLiDARマウントの前方2か所をなべタッピングネジ3-8で固定すれば取付完了です。
Raspberry PiマウスとLiDARをUSBポートで接続してください。
LiDARの取り付け作業が完了したらRaspberryPiマウスの電源スイッチをオンにしてアクセスポイントに接続してください。
講習会でUSBメモリを配布している場合は、ダウンロードは不要です。
MapServer、NavigationManagerはGUIで操作します。 Raspberry Piでも起動可能ですが、その場合Raspberry Piをディスプレイに接続するか、X Window Systemで他のPCに画面を表示するかする必要があります。 今回はMapServer、NavigationManagerをPC上で起動するため、以下から実行に必要なファイルをダウンロードしてください。
MapServer、NavigationManagerはRTM_Tutorial.zipを展開したフォルダのNavigationフォルダに含まれています。
この章では自己位置推定をしながら環境地図生成を行うシステムを試してみます。 MRPTはICP-SLAM、RBPF-SLAMなどのアルゴリズムが使用可能ですが、移動ロボットのナビゲーションに関わるRTコンポーネント群ではICP-SLAMを使用します。 ICPアルゴリズムは2つの点群データ(地図データ、LRFで取得した最新のデータ)を平行移動、回転を繰り返すことで、対応関係にある点の距離が最短になるように位置合わせをするアルゴリズムです。 ICPアルゴリズムで作成中の地図データの点群データとLRFで取得したデータを位置合わせすることで現在の位置を計算します。
まずはWEBブラウザの操作でMapperシステムを起動します。
元の画面に戻らない場合は「Back to the top page.」を押してください。
次にNavigationManagerを起動します。 Navigationフォルダ内の以下のバッチファイル、シェルスクリプトを実行してください。
すると以下のGUIが起動します。
RTSystemEditorのネームサービスビューは以下の状態になっているはずです。
まずはWEBブラウザの操作でConnectボタンを押してください。 これでRaspberry Pi上のRTCのポートは接続されます。
システムダイアグラム上で以下のように接続してください。
NavigationManagerに関わる部分以外は接続済みのため、以下のポートを接続します。
コンポーネント名 | ポート名 | コンポーネント名 | ポート名 |
NavigationManager0 | mapperService | Mapper_MRPT0 | gridMapper |
NavigationManager0 | currentPose | Mapper_MRPT0 | estimatedPose |
NavigationManager0 | targetVelocity | RaspberryPiMouseRTC0 | target_velocity_in |
NavigationManager0 | range | RPLiderRTC0 | range |
接続したらRTCをアクティブ化してください。
NavigationManagerのGUIのStart Mappingボタンを押してください。
次にRTCをアクティブ化した時に以下のジョイスティックGUIが起動しているため、黄色い円をマウスで操作してください。 それでRaspberry Piマウスが移動します。
しばらく操作すると以下のように環境地図が得られます。
地図生成が終了したらStop Mappingボタンを押してください。
次に地図データを保存します。 Save Mapボタンを押してください。
ファイル名をtestMapと設定して、Navigationフォルダに保存してください。
※開くボタンをクリックすると保存されます。
最後にWEBブラウザの操作でMapperシステムを終了させます。
ここからは作成した環境地図データを用いてRaspberry Piマウスの経路計画を試してみます。
WEBブラウザの操作でPathPlanシステムを起動します。
元の画面に戻らない場合は「Back to the top page.」を押してください。
次にNavigationManagerとMapServerを起動します。 NavigationManagerが起動済みの場合はMapServerのみを起動してください。 Navigationフォルダ内の以下のバッチファイル、シェルスクリプトを実行してください。
RTSystemEditorのネームサービスビューは以下の状態になっているはずです。
まずはWEBブラウザの操作でConnectボタンを押してください。 これでRaspberry Pi上のRTCのポートは接続されます。
システムダイアグラム上で以下のように接続してください。
コンポーネント名 | ポート名 | コンポーネント名 | ポート名 |
NavigationManager0 | mapServer | MapServer0 | mapServer |
NavigationManager0 | pathPlanner | PathPlanner_MRPT0 | pathPlanner |
NavigationManager0 | pathFollower | SimplePathFollower0 | PathFollower |
NavigationManager0 | currentPose | Localization_MRPT0 | estimatedPose |
NavigationManager0 | range | RPLiderRTC0 | range |
MapServer0 | mapServer | Localization_MRPT | mapServer |
接続したらRTCをアクティブ化してください。
まずはRaspberry Piマウスの目標位置、目標姿勢角を設定します。 NavigationManagerのGUIの地図上の目標位置となる場所をクリックしてください。 地図上の白い部分が障害物を検出しなかった範囲のため、白い範囲のどこかをクリックしてください。
以下の画面が表示されるので、目標角度を設定します。
適当な場所をクリックすると中心から延びる赤い線の角度が変化するので、適当な角度に設定してください。
OKボタンを押すと地図上に目標位置が表示されます。
次にPlan Pathボタンを押してください。
これで目標位置までの目標経路が計算されました。
Followボタンを押すと経路追従を開始します。
動作確認が終了したら、WEBブラウザのStopボタンからPathPlanシステムを終了してください。