どうも.SUGAR SWEET ROBOTICSのysugaこと菅です.
前回の記事ではKobukiをROSで使ってみる,と題して,SLAM用ROSスタックを使ったマップ作成を体験してみました.
今度は,ここからはRTミドルウエアの世界に触れてみましょう.
RTミドルウエアとは何か
「RTミドルウエア (RT-Middleware: RTM) とは、ロボット機能要素 (RT機能要素) のソフトウエアモジュールを複数組み合わせてロボットシステム (RTシステム) を構築する為のソフトウエアプラットフォーム一般を指す名称です(公式ページより).
つまり,RTミドルウエアという言葉は,特定のソフトウエアやライブラリを指すのではなく,あるカテゴリーをさす名称というわけです.この意味では,ROSもRTミドルウエアに分類されちゃいそうですが,ここでの「RTミドルウエア」という言葉は,ソフトウエアの国際規格標準化団体「OMG (Object Management Group)」が管理している「Specification of Robotics Technology Component (RTC) 」に準じたプラットフォームソフトウエアを指しています.
ここで言うRobotics Technology Component (RTコンポーネント,RTC) とは,カメラなどのセンサやアクチュエータ,コントローラやデータベースなどの機能要素を指す言葉です.従ってRTミドルウエアの世界では,RTCを組み合わせることによって,一個のシステムを形作ります.この点ではROSと非常に似ています.
これから使うOpenRTM-aistは,このRTC規格に準じたソフトウエアライブラリで,日本の産業技術総合研究所(産総研)が開発・管理しています.産総研は,RTCの標準化にも関わっていますから,皆でOpenRTM-aistを使って,RTC規格をより良いものにするためにフィードバックを集めている,とも言えます.
まず,ROSとRTMの違いは,このように規格・標準化を押し進めながら実装も開発している所です.
インストール
さて,ではOpenRTM-aistを早速インストールしてみましょう.OpenRTM-aistは,WindowsとLinuxで動作しており,Macでの動作も報告されています(実際に筆者はMacで使っています).
ここでは,Windows版を例にとってみます.インストールについては,公式ページのこのページに詳しく書かれています.
インストーラは,公式ページのトップからダウンロード出来ます.Windows用,C++言語版,Version 1.1の32bit版です.64bit版もありますが,動作は不安定なのと,Express EditionのVisual Studioでは対応出来ないので,Windowsでは特別な理由が無い限りは32bit版を使う方が良いと思います.下記のボタンを押すとダウンロードできますので,実行してインストールしてください.
これだけで良いです.
あと,もしお使いの環境にJavaの実行環境が存在しない場合は,下記のリンクからJRE (32bit版) をダウンロードしてください.64bit版のJREが入っている状況の場合は,切り替えて使うか,アンインストールしてください.
Kobuki用RTCのインストール
初回の記事をご覧になった方はlibkobukiをダウンロードしてインストールしていると思いますが,そうでない方は,初回の記事を見ながら,ダウンロード&インストール&動作確認をお願いします.
このlibkobukiを使ったRTコンポーネントをダウンロードして,インストールしてください.
KobukiRTCはこちらからダウンロードできます.
テスト用RTCのインストール
ここでは,私ysugaが作った台車移動ロボットシミュレータに同梱している仮想ジョイパッドと,ジョイパッドのデータを速度指令値に変換するコンポーネントを使ってみましょう.
下記のリンクをクリックしてダウンロードしてzipファイルを展開してください.
http://ysuga.net/wp-content/uploads/2011/05/MobileRobotSimulator1.4.zip
中に,4つのbatファイルがあると思いますが,VirtualJoystickとMobileRobotControllerを使います.
RTCの起動
RTCを起動する前に,ROSで言う所のmaster (roscore) にあたる,ネームサーバーを起動します.スタートメニューからプログラム>OpenRTM-aist > C++ > Tools > Start Naming Serviceを選択すると,コマンドプロンプトが現れてネームサーバーが起動します.
Windows8を使っている場合は,スタート画面に現れないので,エクスプローラから起動します.通常は,”C:¥Program Files (x86)¥OpenRTM-aist¥1.1¥bin¥”にある”rtm-naming.bat”というファイルを起動すれば,同様にネームサーバーを起動できます.
さらに,スタートメニューから,プログラム > RT-net > KobukiRTCを起動します.
先ほどのMobileRobotSimulatorのフォルダ内のVirtualJoystick.batとMobileRobotController.batをダブルクリックします.
これでRTCをすべて起動しました.
システムの接続・起動
RTコンポーネント間の通信を可能にするには,「接続」が必要になります.そこで,それを行うツールとして,RT System Editorがインストールされています.スタートメニューからプログラム>OpenRTM-aist > C++ > Tools > RT System Editorを起動します.
最初からネームサーバーを起動していれば,localhost(自分自身)のネームサーバーに接続した状態で起動します.
「1」の矢印にあるマークをクリックすると,localhostに登録されているRTコンポーネントを確認することが出来ます.お使いのPCのホスト名によって,多少違う表示が出ると思いますが,3つのRTコンポーネントが起動されているのが確認出来ると思います.
「2」の矢印の先にあるボタンをクリックすると,キャンバス(Online System Editor)を開くことができ,この中に左のツリーからRTコンポーネントをドラッグ&ドロップすると,RTコンポーネントを視覚化することが出来ます.
各RTコンポーネントには,凸型の印や凹型の印がありますが,これが「ポート」と呼ばれる通信のためのチャネルで,これをドラッグ&ドロップするとポート間をつなぐことが出来ます.
どのポートでもつなげられる訳ではありませんので,下の図を参考につなげてみてください.
さらにRTコンポーネントは「コンフィグレーション」を持っています.これにより今回は,Kobukiが繋がっているCOMポートを設定してみましょう.KobukiRTCを選択状態にすると,RT System Editorの画面下部に,コンフィグレーションの表が現れますので,「編集」ボタンを押します.
すると,下図のようなダイアログが表示されますので,「port」の値を適切な値にします.「OK」を押す前に「Apply」にチェックを入れるのをお忘れなく.
さて,このままではシステムは動作していません.RTコンポーネントには「状態」があり,現在は起動しても動作していない,「INACTIVE」な状態です.これを「ACTIVATE」するのもRT System Editorです.
各RTCを選択して右クリックし,「ACTIVATE」を選択するか,もしくはキャンバスの空白の部分で右クリックして「All Activate」を選択すると動作します.
VirtualJoystickで表示されるボタンを押すとKobukiが動作します.
キャンバスの白い所で右クリックして,Saveを選択すると,現在のシステムの構成を保存することが出来ます.
同様にOnline System Editorを開いてから,白い所で右クリックして,Load and Restoreを選択すると,RTコンポーネントが起動していれば,接続&コンフィグレーションを行うことが出来て便利です.
まとめ
いかがでしょうか?RTミドルウエアという言葉が意味する所,そしてRTミドルウエアの実装であるOpenRTM-aistとツールを体験してみました.
グラフィカルなツールが揃っているのがOpenRTM-aistの特徴です.