RTミドルウェアとは,日本の産業技術研究所が主体となって開発しているロボット用の総合プラットフォームソフトウェア規格のことです.
RTミドルウエアの定義
RTミドルウエアとは,ロボットに代表されるメカトロニクス・システムを,ロボット技術(RT)を用いた要素(これをRTコンポーネントと呼ぶ)の組み合わせによって構成するための「通信規格」です.あくまでも通信規格なので本来はソフトウエアそのものを指す言葉ではありません.
RTコンポーネントの概要
RTコンポーネントはあくまでもソフトウエア
RTコンポーネントはあくまでも「ソフトウエア」です.ロボット本体,またはロボット要素であるセンサやアクチュエータを買ってきて,コンピュータや組み込みデバイスに接続した上で,ドライバなどをインストールしてから実行するソフトウエアです.だからPCとハードウエアを繋ぐ作業はそれぞれのデバイスによって異なります(無論,USBやRS232Cなどの規格がありますが…)
RTコンポーネント規格の概要
ポート
RTミドルウエアでは,ロボットの構成要素をRTコンポーネントとしてパッケージ化し,その相互通信によってデータのやり取りを行います.コンポーネントは,データポートとサービスポートを持つことが出来,それぞれが他のコンポーネントとの通信のインターフェースとなります.
ポートを接続してシステムを組む
RTコンポーネントのポート同士を接続して,ロボットシステムを開発します.ポートは同じタイプならば,他のどんなRTコンポーネントとも接続できますので,再利用性が高く,導入からテスト,実装までが非常にスムーズになります.
状態
またRTコンポーネントはそれぞれ「状態」を持っており,状態が「ACTIVE」の時は動作中,「DEACTIVE」は停止中,「ERROR」はエラーからの復帰動作中のように定められています.
状態をツールで管理してシステムの実行を制御
RTコンポーネントの状態を管理するためのツールがありますから,それを使ってRTコンポーネントで開発したシステムの実行管理を行います.
コンフィグレーション
コンフィグレーションを使えば,制御ゲインなどの細かいパラメータを調整することもできます.
これらのパラメータをツール等を使って変化させることでシステム全体の振る舞いを開始・停止・調整します.
RTミドルウェアを使うメリット
ちょっと繰り返しになりますが,RTミドルウエアを使うメリットをお伝えします.
開発者用ライブラリの理解が不要
ロボットを作るロボット開発者の視点からのお話.
RTコンポーネントが提供されている場合,システムすべて,もしくは一部をRTミドルウエアで開発するのであれば,提供されたRTコンポーネントがそのまま使えます.
多くの場合,ポートは非常に分かりやすく出来ており,また開発者自身でRTコンポーネントを作る場合も,ツールを使って簡単に作れます.機械科の,1000行もプログラムを書いたことのない学生でも書けてますから,間違いないでしょう(笑)
また,RTコンポーネント側を開発する人,例えばロボットに応用可能なセンサやアクチュエータ,認識ソフトウェアなどのベンダーの方々は,RTコンポーネントをロボット用デバイスの検証ソフトウェアの一部として,ユーザに提供することで,検証ソフトウェアに付属するRTコンポーネントを再利用することができ,ユーザにとってはライブラリの形で提供されるよりも簡単に利用を始めることができます.
開発者を助けるツールがたくさんある
上述しましたが,独自にロボットを作ったり,サービスを提供する場合は,結局プログラミングはなくなりません.これは開発者として仕方ありません.しかし,あなたのプログラムをサポートするツールがすでに産総研などによって開発されています.僕もちょこちょこ作っています(笑)これらを利用して簡単にロボットシステムを動かせるプログラムを作る手順をこのページで紹介しています.
ロボット間や他のサービスとの連携が容易に
RTミドルウェアを使うと,ロボットの開発やカスタマイズ,ロボット間の連携等が非常に簡単になります.
複数のロボット,たとえば台車とアームを組み合わせて一つのロボットとする場合,それぞれのAPIを理解するよりもRTコンポーネントトした方が分かりやすくなります.
RTミドルウエアに対応したロボットアームと台車の場合は,それぞれの仕様を深く理解する必要なしに組み合わせて使うことが出来ます.まず,RTミドルウエアに対応したロボットアームと台車を購入し,ホストコンピュータに接続します.次に,CD-ROMなどからRTコンポーネントをインストールします.これで準備は完了.
また,RTミドルウエアはソフトウエアの技術ですから,ソフトウエアを使ったサービス技術との親和性が非常に高くなります.
オーバーヘッドはある
通信部の効率やバグは少しずつ改善されていますが,もちろん,ミドルウェア無しでコードを書くことに比べると大きなオーバーヘッドがあります.上記のようなメリットと比べての検討になります.
システム管理ができないと思わぬところでハマる
ある程度のネットワークや分散システムに関する知識と,運用経験が無い状態で,なんとなく使うのはリスクもあります.往往にして実験室と現場の環境は異なりますから,ここ一番,絶対に失敗できない!という状況で使い慣れていないミドルウェアの問題で引っかかるというのは起こり得ます.正しい知識があれば,回避しうる困難がほとんどですが・・・
最後に言いたい
僕にとっては分厚い仕様書を読むのもそれほどの苦労ではありませんし,ロボットをアクチュエータなどの要素から構成することの方が,低い部分まで自由に弄れるので自由度が高くメリットは大きいです.でも,
みんなで助け合えばロボット業界が変わるかも
本当に閉塞感があるこの世の中,お互いに助け合うことを始めませんか?こういう取り組みに冷ややかな態度で見る人はたくさん居ますが,あなたが動けばみんなは付いてくる.そういうものです.
お互いのコードを検証しあいましょう
僕なんかよりも腕に覚えのあるロボットプログラマ,この世の中にたくさんいると思います.チャンスです.この業界はまだまだ小さく,多くの人に自分の技術を知ってもらうチャンスです.
RTミドルウエアで作ること自体が楽しい
データの流れを視覚化出来ます.コンポーネント指向開発は楽しいですよ.
それがこの僕のモチベーションです.