Chorenoidの拡張プラグイン
An Open Software Platform for Robotic Technologies
Home RTC Software
OpenRT Platformソフトウェア >> 動作パターン設計ツール >> Choreonoid >> Choronoidのプラグインについて >> Chorenoidの拡張プラグイン

Chorenoidの拡張プラグイン

ChoreonoidでOpenRTM-aistのRTコンポーネントを動作させるために、RTCマネージャー機能をもつプラグインを作成しています。
Chorenoid-1.3では、既に、OpenRTM-aistとの連携機能が実装されていますが、それとは少し違う形で実装しています。もちろん、正規のプラグインと共存はできますので、Choreonoid-1.1でもOpenRTM-aistとの連携をしたい場合には、このプラグインをお使いください。

RtcManagerプラグイン

RtcManagerプラグインは、OpenRTM-aistのrtcd(RTCマネージャー)をChorenoidのプラグインとして実装したものです。下で説明するRobotMotionRtcPluginのようにItem化されたRTコンポーネントの管理を行います。
将来的には、任意のDLL化されているRTCをItemとして管理できるようにします。
この機能を使うには、プラグインをダウンロードしてプラグインフォルダにコピーする必要があります。
プラグインフォルダは、
 <Choreonidのインストールフォルダ>/lib/chorenoid-<varsion No.>/
です。Windows版のChoreonoid-1.3の場合には、(64bit Windows 7の場合)
 C:\Program Files (x86)\Choreonoid 1.3\lib\choreonoid-1.3
になります。

RobotMotionRtcプラグイン

このプラグインは、RtcManagerプラグイン内で動作するRTコンポーネントのプラグインです。Choreonoidでは、Itemとして取り扱われます。また、このプラグインは、必ずロボットモデルの下に配置しなければいけませんので注意してください。
このプラグインを導入すると、RobotMotionRtcとRobotMotionRtcというItemを生成できるようになります。このItemを生成すると、ロボットモデルを操作するためのRTコンポーネントが起動しますので、コンポーネントの各データポートに、データを送ることでChoreonoidのロボットモデルを動かすことができます。
このプラグインの動作は、Choreonoidの標準添付されたロボットのうちG-ROBOTの動作確認のみ行われています。他のロボットの対応させる場合には、ソースコードを変更する必要があるかもしれませんのでご注意ください。

インストール

このプラグインをインストールするには、上述のRtcManagerプラグインと同様にプラグインフォルダにコピーしてください。

RobotMotionRtcの利用

このプラグインを簡単な利用例について説明します。
まず、Choreonoid-1.3を起動して、GR001Sample.cnoidというプロジェクトファイルを読み込んでください。
プロジェクトファイルの読み込みは、メニューの [ファイル] -> [プロジェクトの読み込み] を選択すると、ファイル選択ダイアログが表示されますので、Choreonoidのインストールフォルダの下の、share/projectsに移動すれば、GR001Sample.cnoidというプロジェクトファイルが見つかるはずです。
次に、RobotMotionRtcのアイテムを生成します。RobotMotionRtcのアイテムを生成するには、まず、アイテムビューの「GR001」をクリックして選択状態にしてください。次に、 [ファイル] -> [新規] -> [新規] -> [RobotMotionRtc] を選択してRobotMotionRtcのアイテムをGR001の下に生成します。
もし、GR001を選択しないで生成した場合には、一旦削除して、再度生成してください。ツリーの移動には、まだ対応できていません。
RobotMotionRtcというItemを生成すると、ネームサーバーにRobotMotion0.rtcというRTコンポーネントができていると思いますので、確認してください。
このコンポーネントは、以下のようになっています。

RobotMotionRtcの動作確認

RobotMotionRtcの動作を確認するためのにJointAngleInとCommandInという簡単なコンポーネントを作成しています。これらのコンポーネントは、キーボードからRobotMotionRtcを動作させるためのデータを送ることができます。
JointAngleInで動作確認
下のダウンロードから、JointAngleIn-bin.zipをダウンロードして展開します。そして、JointAngleInComp.exeを起動すると、コンポーネントが起動しますので、RTシステムエディタで、

   JointAngleIn0.data -- RobotMotion0.targetAngle
のように接続します。
つぎに、RTシステムエディタで両方のコンポーネントをアクティベートすると、JointAngleInを起動したコンソールが入力待ちになりますので、
  13 200
と入力してみてください。GR001の頭部が右方向に20度向くと思います。
CommandInで動作確認
CommandInコンポーネントは、キーボードからの入力された文字列を出力データポートから送信するコンポーネントです。日本語入力の場合には、UTF-8にコード変換して送信しますので、JuliusRTCの出力を模擬することもできます。
また、このコンポーネントは、RobotMotionRtcのcommandという入力ポートに接続することで、Choreonoid内のロボットモデルに、実行する動作パターン名を与えることができます。
ただし、事前に動作パターンのファイルを格納してあるフォルダを、RobotMotionRtcのコンフィグレーション変数project_dirに設定してください。project_dirのデフォルトは、share\motions\ となっています。これは、Choreonoidの起動フォルダの下のshareの下のmotionsというフォルダを指すことになりますので、起動フォルダ(作業フォルダ)に注意するようにしてください。
コンポーネントの接続は、下記のようにします。

   CommandIn0.command -- RobotMotion0.command
そして、両方のコンポーネントをアクティベーションして、動作パターンのファイル名を入力します。
 SampleMotion1
と入力すると、project_dirで設定されたフォルダの SampleMotion1.yaml という動作パターンファイルを検索し、存在すれば、そのファイルの動作を実行します。そうでなければ、Choreonoidのメッセージビューにファイルが見つからなかったというエラーメッセージが表示されます。
エラーメッセージが現れた場合にが、おそらくproject_dirの設定が間違っていると思いますので、修正して再度行ってください。

KinectAudioImageInputコンポーネントによる動作確認

2012年のROBOMECで行いましたRTM講習会で紹介した、KinectAudioImageInputコンポーネントを使うと、KINECTが認識したユーザの姿勢と同じ姿勢になるように、Choreonoidの中のロボットモデルを動かすことができます。
ChoreonoidにGR-001の実機を接続し、ロボットモデルとの同期実行機能を有効にしておけば、ユーザと同じ姿勢をロボットに取らせることもできます。
この動作テストで使うRTCは下記からダウンロードしてください。
KinectAudioImageInputRTCのダウンロード
Kinectを使ってプログラムを作成するためには、OpenNIまたは、Kinect SDKが必要になります。このコンポーネントでは、Kinect SDKを使って実装を行っています。下のリンクからダウンロードし、適当なディレクトリに

  • KinectAudioImageInputComp.exe

添付ファイル:Kinect.zip

  • KinectAudioImageInputComp.exe (ソースコード)

添付ファイル:KinectAudioImageInput.zip

CvMonitorRTC
CvMonitorRTCは、KienctAudioImageInputRTCの出力イメージを表示するためのコンポーネントです。こちらからダウンロードすることができます。

このコンポーネントで、上記のKINECTコンポーネントから出力される画像を表示できます。KINECTコンポーネントで、深度画像を表示する場合には、
  • image_channel=3
  • image_height=240
  • image_width=320
    に設定してください。また、カラー画像の場合には、KINECTコンポーネントでは、640x480になりますので、
  • image_channel=4
  • image_height=480
  • image_width=640
    と設定すれば、正常に表示されます。
  • CvMonitorComp.exe

添付ファイル:CvMonitor.zip

  • CvMonitorComp.exe(ソースコード)

添付ファイル:CvMonitor-src.zip

この動作テストは、下記のように行います。
準備
KINECTでG-ROBOTを操作するためには、前述の音声インターフェースのところで使用したChoreonoidとRTCプラグインとKinectAudioImageInputComp.exe, CvMonitorComp.exe を使用します。
KinectAudioImageInputは、Kienct SDKを利用しますので、前もってKinect SDKをマイクロソフト社のサイトからダウンロードしてインストールしてください。
Kinect SDKのインストールと上記のコンポーネントの準備が終われば、Naming Serviceを起動して、Choreonoidを起動し、GR001.cnoidの読み込み、KinectAudioImageInputComp.exeの起動、CvMonitorComp.exe の起動を行ってください。
システム構成
RTコンポーネントを起動した後は、RT System Editorで下図のように各ポートを接続してください。

最後に、すべてのコンポーネントをアクティベートして、KINECTの前に立ってください。姿勢を認識すれば、自分の動きに合わせてロボットが動作するはずです。
また、深くお辞儀をすれば、ロボット操作の初期位置がリセットされます。一旦リセットされれば、前に出れば、ロボットが前に動き、後ろに少しさがれば、後ろに下がる動作をします。
以上で、基本的な操作は終了です。

KINECTを使ったG-ROBOTの操作例のビデオをこちらに用意しました。

ダウンロード

  • Choreonoid-1.3 Windows用(バイナリ)

添付ファイル:choreonoid-1.3.zip

  • Choreonoid-1.3 Windows用(ソース)

添付ファイル:extplugin-1.3.zip

  • JointAngleIn Windows用バイナリ

添付ファイル:JointAngleIn-bin.zip

  • JointAngleIn ソースコード

添付ファイル:JointAngleIn-src.zip

  • CommandIn Windows用バイナリ

添付ファイル:CommandIn-bin.zip

  • CommandIn ソースコード

添付ファイル:CommandIn-src.zip


  • Choreonoid-1.4 Windows用(バイナリ)

添付ファイル:choreonoid-1.4.zip

  • Choreonoid-1.3 Windows用 拡張版(バイナリ)

添付ファイル:choreonoid-1.3-2.zip