RTCを組み合わせてロボットを作ろう

2009年6月30日(火)
菅 佑樹

RTCを使えばロボット開発もスムーズ

 いよいよこの連載も最後となりました。これまではロボットの部品を制御するソフトウエアの単位として、RTコンポーネント(RTC)の開発を説明してきました。

 最終回となる今回は、本連載でこれまで開発したRTCを使って、1体のロボットを作ってみたいと思います。

 これまでの話題は、RTミドルウエアを使ってRTCを提供する側の話であり、パーツやソフトウエアのベンダー側の話です。

 今回はベンダーから提供されたRTCを使って、アプリケーション(ロボット) を開発する側、つまりパーツベンダーから見たコンシューマ側の話をしていきます。RTCが提供されていることでいかにロボット開発がスムーズに進むのか、体験していただきましょう。

 では、今回作成するロボットの仕様を以下のとおり定めます。

1)頭部にカメラを搭載している。
2)首に自由度(モータ)を持ち、水平方向に首を振ることができる。
3)明るい色の物体が視界に入ると「こんにちは」と発話する。
4)カメラを搭載し、明るい色の物体に反応して首を振る。

 以上を踏まえて、ロボットのRTシステムを図1-1のように定めます。まずUSBCameraAcquireで取得された画像が、Binarize(第2回:http://thinkit.jp/article/953/1/)で画像処理され、明るさ2値化で抽出された物体の画像領域内(320x240)での重心位置(x, y)で出力されます。

 これをメインRTC(今回)で処理し、初めて領域内に物体が現れた場合は、AquesTalkVoice(第3回:http://thinkit.jp/article/956/1/)に文字列を送信し、物体の画像領域の中心(160, 120)からの左右のずれに比例した値を、iMCs04Control(第4回:http://thinkit.jp/article/963/1/)に送信し、物体を追いかけるように首振りを行います。

-------------------------------------------

タグ 項目1 項目2 設定値
基本 RT-Component Basic Profile Module name RobotMain
Module vendor あなたの名前
Execution Rate 10
Output Project RobotMainCompProj
データポート RT-Component Data InPort Profile
(Addボタンで入力ポートを追加)
Port Name in
Data Type TimedDoubleSeq
Var Name in
Disp. Position left
RT-Component Data OutPort Profile
(Addボタンで入力ポートを追加)
(1) Port Name string Out
Data Type TimedString
Var name string Out
Disp.Position right
(2) Port Name motorOut
Data Type TimedFloat
Var Name motorOut
Disp.Position right
言語・環境 C++ OS Windows

図1-2:RTC Builderのパラメータ

メインRTCによるRTシステム制御

 今回は、ロボットのシステム全体を統御するコンポーネントを作成します。

 メインRTCは、ロボットのそれぞれの機能単位から情報を受け取り、発話や動作のタイミングを制御します。したがってメインRTCは、これまで開発して きたRTCとの接続性を守る必要があるため、自動的にメインRTCが持つデータポートの仕様が決定します。

 RTC Builderに渡すメインRTCの設計パラメータを図1-2に示します。

 入力ポートは、画像処理RTCから受け取る物体の重心位置座標(TimedDoubleSeq型)です。

 出力ポートは2つあり、ひとつは音声合成RTCに送信する文字列(TimedString型)。もうひとつはモータ制御RTCに送信する角度指令値 (TimedFloat型)です。

 RTC Builderでスケルトンを生成した後に、copyprops.batを実行してOpenRTM-aistのプロパティシートを用意します。また、 rtc.confにネームサーバーの設定として「corba.nameservers:localhost」を追加します。詳しくは前回までの記事を参考 にしてください。

 今回は特別なライブラリを必要としません。

早稲田大学
早稲田大学創造理工学部総合機械工学科助手。博士(工学)。人間とロボットとの物理的な相互作用と飽きに関する研究に従事。その他に木登り・枝打ちロボットや、車椅子搭載型ロボットアームの開発などに携わる。計測自動制御学会RTミドルウェア賞受賞(2008年)。http://www.ysuga.net

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています