チュートリアル(SLAM実習)

はじめに

このページではLiDAR付RaspberryPiマウスを用いてSLAMによるナビゲーションを行います。

23b47429c42d672e7f94ae0a3c9c9d6c.png

SLAMはSimultaneous Localization and Mappingの略で、環境地図作成と自己位置推定を同時に実行することを指し、本チュートリアルでは 移動ロボットのナビゲーションに関わるRTコンポーネント群を使用します。

移動ロボットのナビゲーションに関わるRTコンポーネント群はMRPTという自己位置推定、環境地図作成、経路計画などの機能を提供するクロスプラットフォームなライブラリを使用しています。

事前準備

LiDARの取り付け

まずRaspberryPiマウスにLiDARを取り付けます。

LiDARマウントには2種類あります。以下に記載の(1)専用LiDARマウント、(2)マルチLiDARマウントの取付手順を参考にしてRaspberry Piマウス本体に取り付けてください。

専用LiDARマウント

以下の画像のように2本のねじで止めるマウントの場合、下記の手順で取り付けてください。

/jp/node/7098

以下のRaspberry Piマウス本体、LiDAR、タッピングビスを用意してください。

/jp/node/7098

次にRaspberry Piマウス底面のねじを外してください。

/jp/node/7098

基盤部分をフレームごとずらしてください。

/jp/node/7098

次にスペーサーを手で回して外してください。

/jp/node/7098

センサ基盤を外してください。

/jp/node/7098
/jp/node/7098

LiDARをRaspberry Piマウスの上部分に載せてビスで固定してください。

/jp/node/7098
/jp/node/7098
/jp/node/7098

Raspberry PiマウスとLiDARをUSBポートで接続してください。

/jp/node/7098
/jp/node/7098

外したパーツを元に戻せば完成です。

マルチLiDARマウント

以下の画像のように4つのツメを引っかけるマウントの場合、下記の手順で取り付けてください。

/jp/node/7098

以下のように4つのツメをRaspberry Piマウス本体に引っかけます。

まず、前方の2つのツメを引っかけてください。

/jp/node/7098

次に後ろのツメを引っかけます。

/jp/node/7098

そして、マルチLiDARマウントの前方2か所をなべタッピングネジ3-8で固定すれば取付完了です。

/jp/node/7098
/jp/node/7098

Raspberry PiマウスとLiDARをUSBポートで接続してください。

/jp/node/7098

LiDARの取り付け作業が完了したらRaspberryPiマウスの電源スイッチをオンにしてアクセスポイントに接続してください。

MapServer、NavigationManagerのダウンロード

講習会でUSBメモリを配布している場合は、ダウンロードは不要です。

MapServer、NavigationManagerはGUIで操作します。 Raspberry Piでも起動可能ですが、その場合Raspberry Piをディスプレイに接続するか、X Window Systemで他のPCに画面を表示するかする必要があります。 今回はMapServer、NavigationManagerをPC上で起動するため、以下から実行に必要なファイルをダウンロードしてください。

MapServer、NavigationManagerはRTM_Tutorial.zipを展開したフォルダのNavigationフォルダに含まれています。

SLAMによるナビゲーション地図生成システム

この章では自己位置推定をしながら環境地図生成を行うシステムを試してみます。 MRPTはICP-SLAM、RBPF-SLAMなどのアルゴリズムが使用可能ですが、移動ロボットのナビゲーションに関わるRTコンポーネント群ではICP-SLAMを使用します。 ICPアルゴリズムは2つの点群データ(地図データ、LRFで取得した最新のデータ)を平行移動、回転を繰り返すことで、対応関係にある点の距離が最短になるように位置合わせをするアルゴリズムです。 ICPアルゴリズムで作成中の地図データの点群データとLRFで取得したデータを位置合わせすることで現在の位置を計算します。

Mapperシステムの起動(Raspberry Pi)

まずはWEBブラウザの操作でMapperシステムを起動します。

/jp/node/7098

元の画面に戻らない場合は「Back to the top page.」を押してください。

/jp/node/7098

NavigationManagerの起動(PC)

次にNavigationManagerを起動します。 Navigationフォルダ内の以下のバッチファイル、シェルスクリプトを実行してください。

  • NavigationManager.bat(Windows)
  • NavigationManager.sh(Ubuntu)

すると以下のGUIが起動します。

/jp/node/7098

ポートの接続、RTCのアクティブ化

RTSystemEditorのネームサービスビューは以下の状態になっているはずです。

/jp/node/7098

まずはWEBブラウザの操作でConnectボタンを押してください。 これでRaspberry Pi上のRTCのポートは接続されます。

/jp/node/7098

システムダイアグラム上で以下のように接続してください。

/jp/node/7098

NavigationManagerに関わる部分以外は接続済みのため、以下のポートを接続します。

コンポーネント名 ポート名 コンポーネント名 ポート名
NavigationManager0 mapperService Mapper_MRPT0 gridMapper
NavigationManager0 currentPose Mapper_MRPT0 estimatedPose
NavigationManager0 targetVelocity RaspberryPiMouseRTC0 target_velocity_in
NavigationManager0 range RPLiderRTC0 range

接続したらRTCをアクティブ化してください。

/jp/node/7098

地図作成

NavigationManagerのGUIのStart Mappingボタンを押してください。

/jp/node/7098

次にRTCをアクティブ化した時に以下のジョイスティックGUIが起動しているため、黄色い円をマウスで操作してください。 それでRaspberry Piマウスが移動します。

/jp/node/7098

しばらく操作すると以下のように環境地図が得られます。

/jp/node/7098

地図生成が終了したらStop Mappingボタンを押してください。

/jp/node/7098

次に地図データを保存します。 Save Mapボタンを押してください。

/jp/node/7098

ファイル名をtestMapと設定して、Navigationフォルダに保存してください。
開くボタンをクリックすると保存されます。

/jp/node/7098

最後にWEBブラウザの操作でMapperシステムを終了させます。

/jp/node/7098

ナビゲーション(経路計画)システムの実行

ここからは作成した環境地図データを用いてRaspberry Piマウスの経路計画を試してみます。

PathPlanシステムの起動(Raspberry Pi)

WEBブラウザの操作でPathPlanシステムを起動します。

/jp/node/7098

元の画面に戻らない場合は「Back to the top page.」を押してください。

NavigationManager、MapServerの起動(PC)

次にNavigationManagerとMapServerを起動します。 NavigationManagerが起動済みの場合はMapServerのみを起動してください。 Navigationフォルダ内の以下のバッチファイル、シェルスクリプトを実行してください。

  • NavigationManager.bat(Windows)、NavigationManager.sh(Ubuntu)
  • MapServer.bat(Windows)、MapServer.sh(Ubuntu)

ポートの接続、RTCのアクティブ化

RTSystemEditorのネームサービスビューは以下の状態になっているはずです。

/jp/node/7098

まずはWEBブラウザの操作でConnectボタンを押してください。 これでRaspberry Pi上のRTCのポートは接続されます。

/jp/node/7098

システムダイアグラム上で以下のように接続してください。

/jp/node/7098

コンポーネント名 ポート名 コンポーネント名 ポート名
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をアクティブ化してください。

/jp/node/7098

経路生成

まずはRaspberry Piマウスの目標位置、目標姿勢角を設定します。 NavigationManagerのGUIの地図上の目標位置となる場所をクリックしてください。 地図上の白い部分が障害物を検出しなかった範囲のため、白い範囲のどこかをクリックしてください。

/jp/node/7098

以下の画面が表示されるので、目標角度を設定します。

/jp/node/7098

適当な場所をクリックすると中心から延びる赤い線の角度が変化するので、適当な角度に設定してください。

/jp/node/7098

OKボタンを押すと地図上に目標位置が表示されます。

/jp/node/7098

次にPlan Pathボタンを押してください。

/jp/node/7098

これで目標位置までの目標経路が計算されました。

/jp/node/7098

経路追従

Followボタンを押すと経路追従を開始します。

/jp/node/7098

動作確認が終了したら、WEBブラウザのStopボタンからPathPlanシステムを終了してください。

/jp/node/7098

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK