ワールドシミュレータの使い方¶
OpenHRIでは、実ロボットがなくてもロボットとのインタラクション機能をテストすることができるワールドシミュレータを用意しています。
この章では、ワールドシミュレータの使い方について説明します。
インストール¶
Windowsへのインストール¶
- OpenHRIWorldsパッケージのインストール
インストーラを以下のURLよりダウンロード・実行してください。
http://openhri.net/getinstaller.php
インストール可能なパッケージが順次表示されますので、「OpenHRIWorlds」パッケージを選択します。
- OpenHRPSDKのインストール
以下のページの一番下から「OpenHRP SDK Windows版」をダウンロードしてインストールしてください。
Ubuntuへのインストール¶
Ubuntuには現在対応していません(開発中です)。
BlocksWorldシミュレータ¶
BlocksWorldシミュレータは、三菱重工PA10アームのモデルを使ってブロックを操作するワールドシミュレータです。
起動方法¶
- OpenHRPの起動
エクスプローラを開き「C:\Program Files (x86)\OpenHRPSDK\GrxUI」フォルダの中にある「GrxUI.exe」を起動します。
Note
今後のためにデスクトップにショートカットなどを作っておくとよいでしょう。
- BlocksWorldの起動
「スタートメニュー > OpenHRI > worlds」から「BlocksWorld」を選択します。
OpenHRPの画面上にPA10アームと複数のブロックが表示され、ロボットがテスト動作「一つの箱を取って置く」をすることを確認してください。
Note
BlocksWorldがうまく起動しない場合の対処法
BlocksWorldが起動に失敗しロボットがテスト動作をしない場合があります(原因は調査中です)。その場合は、以下の手順を試してみてください。
- OpenHRP付属のサンプルプロジェクトをロードする。
メニューバーの「GrxUI > プロジェクトの読み込み」を選択し、「C:\Program Files (x86)\OpenHRPSDK\share\OpenHRP-3.1\sample\project」の中から「PA10Sample」をロードしてください。
- OpenHRPのシミュレーションを一度実行する。
シミュレーションの開始ボタンを押してシミュレーションを開始してください(すぐに終了しても構いません)。
- OpenHRPのビューをクリアする。
メニューバーの「GrxUI > 新規プロジェクト」を選択し、ビュー画面をクリアしてください。
- BlocksWorldを実行する。
BlocksWorldコンポーネントを起動して動作を確認してください。
コンポーネントの機能¶
BlocksWorldコンポーネントは、commandポートから入力を受け付けます。
下記のテキストコマンドを与えることでロボットが動作します。
- grasp
- ハンドの下にあるものを拾います。
- release
- ハンドで持ったものを放します。
- moveHandToBox [name]
- [name]で指定されたブロックの上にハンドを移動します。「box1」「box2」「box3」が指定できます。
- moveHandXY [X] [Y]
- 現在の位置から[X][Y]で指定された距離、ハンドを移動します。
テストスクリプト¶
対話によってPA10アームを操作するスクリプトの例を示します。
- 音声認識文法
<?xml version="1.0" encoding="UTF-8" ?> <grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="jp" version="1.0" mode="voice" root="command"> <rule id="command"> <one-of> <item> <item repeat="0-1">少し</item> <one-of> <item>前</item> <item>後</item> <item>左</item> <item>右</item> </one-of> </item> <item> <one-of> <item>赤</item> <item>青</item> <item>緑</item> </one-of> <item repeat="0-1">の箱</item> </item> <item>取って</item> <item>置いて</item> </one-of> </rule> </grammar>
- 対話スクリプト
<?xml version="1.0" encoding="UTF-8"?> <seatml> <general name="sample"> <agent name="speechin" type="rtcin" datatype="TimedString" /> <agent name="command" type="rtcout" datatype="TimedString" /> </general> <state name="OPEN"> <rule> <key>取って</key> <command host="command">grasp</command> </rule> <rule> <key>置いて</key> <command host="command">release</command> </rule> <rule> <key>緑[の箱]</key> <command host="command">moveHandToBox box1</command> </rule> <rule> <key>赤[の箱]</key> <command host="command">moveHandToBox box2</command> </rule> <rule> <key>青[の箱]</key> <command host="command">moveHandToBox box3</command> </rule> <rule> <key>前</key> <command host="command">moveHandXY 0.1 0.0</command> </rule> <rule> <key>後</key> <command host="command">moveHandXY -0.1 0.0</command> </rule> <rule> <key>左</key> <command host="command">moveHandXY 0.0 0.1</command> </rule> <rule> <key>右</key> <command host="command">moveHandXY 0.0 -0.1</command> </rule> <rule> <key>少し前</key> <command host="command">moveHandXY 0.05 0.0</command> </rule> <rule> <key>少し後</key> <command host="command">moveHandXY -0.05 0.0</command> </rule> <rule> <key>少し左</key> <command host="command">moveHandXY 0.0 0.05</command> </rule> <rule> <key>少し右</key> <command host="command">moveHandXY 0.0 -0.05</command> </rule> </state> </seatml>
それぞれのファイルをJuliusコンポーネントとSEATコンポーネントに読み込ませ、SEATコンポーネントの「command」ポートとBlocksWorldコンポーネントの「command」ポートを接続してください。