移動ロボットのナビゲーションに関わるRTコンポーネント群

移動ロボットを,実空間上で自律的に動作させるためのRTコンポーネント群を公開しています.
これらのRTC群では,移動空間を平面マップを作成し,マップ上の自己位置を確認しながら,自律的な軌道計画,軌道追従動作が可能になっています.
以上の動作を複数のRTCで実現しており,これを我々は移動ロボットフレームワークと呼んでいます.

マップを表示したり,移動ログを収集するためのGUIツールも付属していますので簡単に試せます.
また,GUIツールを独自のRTCに置き換えれば,自分のアプリケーション内にこのフレームワークを利用することができ,会話によるナビゲーションや,空間センサとの連携など,利用の幅が広がることでしょう.

本フレームワークでは,以下の二つの利用をサポートしています.

  1. 環境地図の作成
  2. 目的地までの経路追従

マップ作成,マップ上での自己位置推定,マップ上での広域軌道計画には,本フレームワークではMobile Robot Programming Toolkit (MRPT) を利用しています.
また,基本ハードウエアとしては,

に対応していますが,本フレームワークで定義されたインターフェースに準拠したRTCであれば置き換えが可能であり,移動ロボットの入れ替えや,個別のアルゴリズムの入れ替え,追加などが可能です.
我々のプロジェクトでも,今後,複数の選択肢を用意していく予定です.

準備

まず,公式ウェブサイトより,OpenRTM-aist 1.1.1 C++版をダウンロードします.
a href=”http://openrtm.org” target=”new”>http://openrtm.org

バイナリから使う

基本的にこちらを使ってください.ソースコードを変更する場合についても記述いたします

ダウンロード

最新版 ZIPファイル(動作確認が取れているRTC群ですが若干古いバージョンの場合もあります)
MobileRobotNavigationFramwork_dist_20150703

最新版 Githubよりダウンロード(定期的にメンテナンスがなされており,バグなどが減っている可能性もありますが,動作しない場合も):
https://github.com/sugarsweetrobotics/MobileRobotNavigationFramework_dist

使い方(マップ作成)

まず,スタートメニューから,OpenRTM-aist 1.1 > Tools > Start C++ Naming Serviceを選択して,ネームサーバーを起動します.

次に,TEC-1とURGセンサをPCに接続します.ドライバがインストールされていない場合はインストールします.

次に,ypspur_coordinator_TEC1.batを実行します.この時,TEC-1が接続されているCOMポートを指定します.

さらに,Mapper_ALL.batを実行します.

スタートメニューからOpenRTPを起動し,RT-System Editorを起動します.

RTCを接続します.
mapper

UrgRTCのコンフィグレーションのport_nameをURGセンサが接続されているCOMポートにします.このとき,COM10以上の場合は,\\.\COM10と入力します.

アクティブ化すればシステムが起動し,NavigationManager (GUI) にロボットとレーザーセンサの出力結果が表示されます.

Start Mappingボタンを押すと,マッピングが開始されます.白く塗られた部分は障害物がないと判断された部分です.
mapper_usage
図中右側の仮想ジョイスティックを操作すると,ロボットが移動し,マップが広がっていきます.

デフォルトのコンフィグレーションでは,不向きな環境もありますので,適宜変更しながら利用してください.

ソースコードから使う

準備

RTミドルウェアのインストール

本モジュール内のコンポーネントを利用するにはOpenRTM-aistのC++版とJAVA版をインストールしておく必要があります.産総研の公式ホームページからダウンロード可能です(1.1.0版で動作確認).

MRPTのインストール

一部のコンポーネントは移動ロボット用ライブラリである”Mobile Robot Programming Toolkit”を利用しています.MRPTのホームページよりダウンロード&インストールしてください.

各機能の概要

地図作成機能

地図作成機能内部ブロック図
地図作成機能はMapperViewer, Mapper_MRPT, KobukiRTC, UrgRTCの4つのコンポーネントから構成されます.

MapperViewerコンポーネントはユーザーインターフェースを提供します.現在作成中の地図やロボットのコントローラを表示します.こちらから取得できます.

Mapper_MRPTは,レンジセンサからの測距データとロボットのオドメトリを基に環境地図を作成します.生成された環境地図はサービスポートを介して利用することができます.こちらから取得できます.

KobukiRTCはKobukiRTCは,移動台車ロボット”Kobuki”を操作するためのコンポーネントです.KobukiRTC は株式会社アールティが公開しているホームページより取得できます.

UrgRTCはUrgRTCは,北陽電機株式会社製のレンジセンサからの測距データを取得するコンポーネントです.UrgRTCは産業技術総合研究所が運営する,OpenRTM-aistのホームページより取得できます.

経路追従機能

経路追従機能内部ブロック図
経路追従機能はMapperViewer, MapServer, PathPlanner_MRPT, SimplePathFollower, Localization_MRPT, KobukiRTC, UrgRTCの7つのコンポーネントから構成されます.このうちMapperViewer,KobukiRTC,UrgRTCに関しては地図作成機能で使用したコンポーネントと同一のコンポーネントです.

MapperViewerから目標地点の設定や経路追従の開始を行うことができます.

MapServerは環境地図をサービスポートを介して提供するコンポーネントです.地図作成機能で生成された地図データを同じディレクトリに配置してください.こちらから取得できます.

PathPlanner_MRPTは,ロボットの現在位置から目標地点までの経路を探索するコンポーネントです.こちらから取得できます.

SimplePathFollowerは計画経路に沿うようにロボットを走行させるコンポーネントです.こちらから取得できます.

Localization_MRPTはレンジセンサからの測距データとロボットのオドメトリを基に,モンテカルロ推定を用いて自己位置推定を行うコンポーネントです.こちらから取得できます.

実行方法

地図作成機能

mapper
各コンポーネントを上図のように接続します.

GUI上の”Start”ボタンを押すことで,マッピングが開始されます.GUIコントローラからロボットを操縦し,環境情報を取得することで地図が作成されていきます.

地図を保存する際は,”Save”ボタンを押すことで保存できます.地図の画像ファイル(png)と地図情報ファイル(yaml)ファイルが生成されます.

経路追従機能

NaviDiagram

各コンポーネントを上図のように接続します.

GUI上の好きな地点をクリックすると,ロボットの目標地点が設定されます.

GUI上の”Plan”ボタンを押すことで,目標地点までの経路を計算します.

経路をロボットに追従させる際は,”Follow”ボタンを押すことで,目標地点に到着するまで経路追従をします.