Nextage Interface

ここでは、双腕ロボットNextage OPENをOpenRTMベースで制御する一つの手法について説明します。graspPlugin for ChoreonoidのRobotInterfaceプラグインからコマンドを送ることができるため、graspPluginと共に説明します。

ソースは 
https://github.com/kensuke-harada/hironx-interface
ならびに
graspPlugin/RobotInterface/Nextage/NextageInterface 
以下にあります。ここでは、githubから~/HiroNXInterfaceにクローンした場合を想定します。

Choreonoid と HiroNXProvider

HiroNXProvider と HiroNXGUI

HIRO上で HiroNXProvider を動作させることで、Choreonoid からの把持計画の送信と、HiroNXGUI からの起動/終了ができます。

Choreonoid の起動

Choreonoid で作成した動作を HiroNXProvider に送信することで、Nextage が動作します。
Choreonoidをプロジェクトファイルと共に起動します。

 % cd ~/src/Choreonoid
 % bin/choreonoid  extplugin/graspPlugin/GripperManipulation/project/worldexpo.cnoid 

同時に Choreonoid に組み込まれたいくつかのRTコンポーネントが起動します。この場合は、例えば

 % rtls localhost/dinobot.host_cxt/
 HIROController0.rtc   GripperManipulation0.rtc   GraspConsumer0.rtc

ここで使用するのは、コンシューマRTCの HIROController0.rtc です。

HiroNXProvider の起動

HiroNXProvider は、Nextage のセットアップやキャリブレーション、サーボのON/OFFやシャットダウン、それに各関節の角度を直接操作するAPIを提供する RT コンポーネントです。

 % cd graspPlugin/RobotInterface/NextageInterface/HiroNXProvider
 % ./HiroNXProvider.py

localhost/dinobot.host_cxt/ の下にある、
HiroNXProvider0.rtc が利用できるようになります。

また、HiroNXProvider は Python で書かれたプロバイダ RTC ですが、実際に使われるインタプリタは hrpsyspy となります。

HiroNXGUI の起動

HiroNXGUI は、HiroNXProvider の提供するAPIを利用して、GUIでHIROを操作するツールです。
また、各関節の角度を直接指定してHIROを操作できます。

 % cd ~/HiroNXInterface/HiroNXGUI
 % ./WxHiroNXGUI.py

GUIが起動します。

HiroNXGUI_1.png

HiroNXGUI は、python で動くコンシューマRTCです。
localhost/dinobot.host_cxt/ の下にある、HiroNXGUI0.rtc が利用できるようになります。

RTコンポーネントの接続

HIROController0.rtc, HiroNXProvider0.rtc, HiroNXGUI0.rtc には、二つのサービスポート、HiroNX ポートと HIRO ポートがあります。

HIROController0.rtc <-> HiroNXProvider0.rtc
HiroNXGUI0.rtc <-> HiroNXProvider0.rtc

この組み合わせで HiroNX ポート同士、 HIRO ポート同士をつないで、アクティベートします。

HiroNXGUI の操作

アクティベートすると、RTC Statusの欄が緑になります。
Nextage の準備手順は、
  1. Setup Robot: Nextageとの接続を行う
  2. Calibrate JointL 関節の調整(本体のサーボもONになる)
  3. Servo Hands ON: ハンドのサーボをON
  4. Go initial: 初期姿勢に移行

握った手と開いた手のボタンで、ハンドの開閉ができます。

関節操作タブでは、Nextage の左右の腕とハンド、胴体にあるひとつひとつのサーボモータの角度をテキストボックスで設定できます。
すべてのモータの角度の設定が完了したら、Goボタンを押すと Nextage の姿勢が変化します。
Reset ボタンを押すと、すべてのモータの角度が初期姿勢になります。
HiroNXGUI_Joints_1.png

Choreonoid から把持計画を送信

Ctrl+左クリックでパレットを指定して、=Planner=ツールバーのGraspを押すと把持計画が作成されます。
そこで、=PathPlan=ツールバーのStartを押すと、Nextageの姿勢遷移が作成されます。
アニメーションでNextageの姿勢に問題がないことを確認したら、いよいよデータをNextageに送信します。
=Interface=ツールバーのMoveボタンを押してください。

HIRO の終了手順

Nextage の終了手順は、
  1. Go Off Pose: 待機姿勢に移行
  2. Servo Hands OFF: ハンドのサーボをOFF
  3. Servo OFF: 本体のサーボをOFF
  4. Shutdown: Nextageのコンピュータをシャットダウン

HiroNXGUI について

起動方法

端末を開いて HiroNXGUI をインストールしたディレクトリに移り、

 % ./WxHiroNXGUI.py

を実行します。下図のようなGUIが表示されます。
HiroNXGUI_1_0.png

RTCの接続

HiroNXGUI の持つ HiroNXポートとHIROポートを、EclipseのRTシステムエディタや rtcon コマンド等を使って HiroNXProvider と接続します。

RTシステムエディタで接続する場合
は、上のポート同士、下のポート同士を接続します。(上図では、左上が HiroNXGUI、右下が HiroNXProvider)
HiroNXGUI-connecting.png

rtcon で接続する場合は、以下のようなコマンドラインを使用します。(localhost/vision.host_cxt は、実行環境によって変わります)
 % rtcon localhost/vision.host_cxt/HiroNXGUI0.rtc:HIRO localhost/vision.host_cxt/HiroNXProvider0.rtc:HIRO
 % rtcon localhost/vision.host_cxt/HiroNXGUI0.rtc:HiroNX localhost/vision.host_cxt/HiroNXProvider0.rtc:HiroNX
 % rtact localhost/vision.host_cxt/HiroNXGUI0.rtc localhost/vision.host_cxt/HiroNXProvider0.rtc

使い方

HiroNXGUIはふたつのタブを持ち、それぞれのボタンやスライダー等を操作して、HIROをコントロールします。
上のRTC Statusが赤から緑になったら、アクティベートされたことになります。
(HiroNXProviderと接続されているとは限らない)

システムタブ

HiroNXGUI_System_1.png
上段のボタンは、HIROの起動に使います。
Set up Robot → Calibrate Joints → Go Initial と、上から順にボタンを押していき、初期姿勢に移行したら、Servo Hands の ON を押します。
Set up Robot
HIRO を起動する
Calibrate Joints
関節を調整する
Go Initial
初期姿勢に移行する
Servo ON/OFF
HIRO 本体のサーボのスイッチ
Servo Hands ON/OFF
ハンド部分のサーボのスイッチ
Protective Stop Engage/Disengage
中段のボタンは、HIROの操作に使います。
Left Hand(開き手アイコン)
左ハンドを開く
Left Hand(握り手アイコン)
左ハンドを閉じる
Right Hand(開き手アイコン)
右ハンドを開く
Right Hand(握り手アイコン)
右ハンドを閉じる
下段のボタンはHIROの終了に使います。
まず Go Off Pose で待機姿勢にしたあと、上段ボタンの Servo Hands OFF, Servo OFF を押してサーボを停止します。
その後、Shutdown を押すとHIROの電源が落ち、HiroNXGUIが終了し、vision のネットワークが切れます。
Go Off Pose
待機姿勢をとる
Shutdown
HIRO の電源を落とし、HiroNXGUI を終了する
Reboot
HIRO を再起動する

関節操作タブ

HIROの関節角を直接操作するためのテキストボックスを用意しています。
HiroNXGUI_Joints_1.png
首・胴体パネル
首のヨー・ピッチ、胴体・土台の関節角度を入力できます。
左腕パネル・右腕パネル
肩のヨー・ピッチ、肘のピッチ、手首のヨー・ピッチ・ロール、ハンドの4つの関節の角度を、テキストボックスを使って入力できます。角度は実数で指定できます。
Go ボタン
テキストボックスで設定した関節角を、HIROに送信します。
Reset ボタン
すべての関節の角度を初期姿勢に戻します。(HIROへの送信は行わないので、改めてGoボタンを押してください。)

終了方法

以下のどれかの方法で、HiroNXGUIを終了できます。
  1. RTシステムエディタで HiroNXGUI0 を右クリックして、コンテキストメニューで exit を選ぶ
  2. rtexit localhost/(PC名).host_cxt/HiroNXGUI0.rtc を実行する
  3. GUI 画面でタイトルバーの×ボタンをクリックする
  4. shutdown ボタンを押して HIRO をシャットダウンすると、同時に終了する

環境設定

Ubuntu 10.04 の場合、以下のパッケージをインストールしてください。

インストール方法

subversion レポジトリからソースを入手する場合

(あらかじめ、パッケージから subversion を導入してください)
リポジトリからチェックアウトします。

 % svn co -r 12 https://hironx-interface.googlecode.com/svn/HiroNXInterface/HiroNXGUI/ 

実行したディレクトリに HiroNXGUI が掘られ、その下にソースファイルが展開されます。
展開したら、即実行できます。

ソースプログラムについて

プログラム本体の WxHiroNXGUI.py は、python で書かれたプログラムです。

python ソースプログラム
実行時に読み込む設定ファイル
アイコン画像ファイル(左右のハンドの開閉ボタンに貼られる)

l/rで左右、open/closeで開閉を示す。

以下のファイルは、開発者が WxFormBuilder で GUI画面 を作成するためのファイル。
以下のファイルは、開発者がRTコンポーネントのスケルトンを生成するために利用する。
以下すべて、IDL から生成された py ファイル。

機能追加について

HiroNXGUI に機能を追加する場合、ほとんどは HiroNX.idl に新しい命令を追加することになるはずです。
ここでは例として、newCommand メソッドを追加してみます。

なお、開発用のPC(Ubuntu 10.04)には、以下のパッケージが必要です。

IDL ファイルを更新する

HiroNXGUI ディレクトリにある HiroNX.idl を直接修正してもかまわないですが、対応するプロバイダRTC(今回は HiroNXProvider )ですでにIDLに命令を追加しているなら、それをコピーする方が早くて間違いがないでしょう。(参照:HiroNXProvider について

更新したIDL を omniidl でコンパイルします。

 % omniidl -bpython HiroNX.idl

HiroNX_idl.py が更新されます。

wxFormBuilder でボタンを追加する

wxFormBuilder を立ち上げて、HiroNXGUI.fbp を開きます。
WxFormBuilder1.png
左側のObject Tree ペインの、MyProject1 - MyFrame1- bSizer1 - m_notebook1 - m_system_tab - bSizer3 以下に、新しいボタンを追加します。
newCommand.png
新しいボタンの位置ですが、おおむねHIROの起動時に使用するボタン(Set Up Robot, Calibrate Joints, Go Initial Servo ON/OFFなど)は上に、終了時に使用するボタン(Go Off Pose, Shutdown, Reboot など)は下に、配置しています。
今回は Protective Stop と Hand Open の間に配置することにします。

追加するコマンド名が newCommand なので、新しいボタンの name プロパティも「m_newCommand」とします。WxHiroNXGUI.py では、システムタブのボタンについては、ボタン名から m_ を取ったものをコマンドとみなしプロバイダRTCを呼び出す仕組みになっているので、新しいボタンには必ず正しい名前を設定しなくてはなりません。
labelプロパティには任意のラベルを設定できるので、ここでは「新しいコマンド」とします。

ボタンを追加したら、これをもとに HiroNXGUI.xrc を生成します。
File メニューから Generate Code を選んでください。
もちろん、wxFormBuilder を終了するときにセーブするのも忘れずに。

作業はこれで完了です。WxHiroNXGUI.py を起動して、「新しいボタン」をクリックしてみましょう。

 % ./WxHiroNXGUI.py 
 ./WxHiroNXGUI.py
 .
 comp_args: HiroNXGUI
 gen HiroNXGUI
 CommandEvent
 m_newCommand newCommand
 RTC not connected.

何も接続していませんが、m_newCommand のクリックに対して、端末に応答メッセージが出力されます。

HiroNXProvider について

GitHubに格納されているHiroNXProvider は、双腕ロボット HIRO の制御 PC 上で動作して、HIRO の機能をRTミドルウェアから利用できるようにするRTコンポーネントです。ただし、HIROのソフトウェアは既にサポートされていませんので、NextageOPENを使う場合はgraspPlugin/RobotInterface/Nextage/NextageInterfaceを使います。

起動方法

端末を開いて HiroNXProvider をインストールしたディレクトリに移り、

 % ./HiroNXProvider.py

を実行します。

利用方法

EclipseのRTシステムエディタや rtcon コマンド等を使って、HiroNXポートとHIROポートを別のRTコンポーネントと接続します。

終了方法

以下のどの方法でも終了できます。
  1. RTシステムエディタで HiroNXProvider0 を右クリックして、コンテキストメニューで exit を選ぶ
  2. rtexit localhost/(PC名).host_cxt/HiroNXProvider0.rtc を実行する
  3. 起動した端末で Ctrl-C を打つ

環境設定

OpenRTM-aist-Javaが必要です。さらに、HiroNXの場合はJython(2.2以上)が追加で必要になります。

Jython での実行について(HiroNXの場合)

プログラム本体の HiroNXProvider.py は Jython で動くように書かれていますが実機上で使われるインタプリタは /opt/grx/bin/hrpsyspy です。
しかし、開発用の一般のPCでテストを行うときのために、一般の Jython で起動することも可能となっています。
以下に実行例を示します。

 % jython HiroNXProvider.py 
 Import failure: rtm
 Import failure: hrp.simulator
 Not exists: /opt/grx/HIRONX/share/hrpsys/jar/
 Import failure: OpenHRP
 mymodule init
 HiroNX_i.init
 hostname
 hostname: localhost

rtm, hrp.simulator, OpenHRP のインポートに失敗し、Javaライブラリパス /opt/grx/HIRONX/share/hrpsys/jar/ が見つからない旨のメッセージが出ています。

この場合、当然ロボット制御命令は実行できませんが、HiroNXProvider は中断せず、コンソールに例外が発生した旨のメッセージを出力して続行します。

 localhost
 setupRobot
 hostname: localhost
 localhost
 can not connect to localhost

setupRobot 命令を受け取っていますが、ロボットホスト localhost に接続できなかったというメッセージを表示して、再びコマンド待ちに入っています。

インストール方法(HiroNX)

Subversion と Java SDK が必要です。

subversion レポジトリからソースを入手する場合(HiroNX)

GitHubのリポジトリからチェックアウトします。実行したディレクトリに HiroNXProvider が掘られ、その下にソースファイルが展開されます。
 % cd HiroNXProvider

javac を実行します。
 % javac *.java

.robothost の設定

HiroNXProvider を利用する前に、Hiro のホスト名を .rohothost に設定してください。
付属の .robothost は仮に hiro011 となっていますが、Hiro一台一台に異なるホスト名が割り当てられているので、このままでは HiroNXProvider は動作しません。

HiroNXProvider.py の実行中に、sample.py の createComps メソッドの

    rh_svc = OpenHRP.RobotHardwareServiceHelper.narrow(rh.service("service0"))

のあたりで
 AttributeError: 'NoneType' object has no attribute 'service'

のようなエラーが出る場合は、この .robothost の値が正しくないためにHiro内部のRTコンポーネントにアクセスできなくなっていると考えられます。

これで HiroNXProvider.py を実行できるようになります。

ソースプログラムについて

以下の Jython プログラムは、HIROの制御プログラムです。
以下のファイルは、開発者がRTコンポーネントのスケルトンを生成するために利用するものです。
以下すべて、IDL から生成された java ファイル。
./CommonCommandsPackage:
./MotionCommandsPackage:

開発について

HiroNXProvider に機能を追加する場合、ほとんどは HiroNX.idl か、HIROController.idl に新しい命令を追加することになるはずです。
ここでは例として、HiroNX.idl に newCommand メソッドを追加してみます。
Java SDK が必要です。

IDLファイルに新しい命令を追加する

HiroNX.idl の内容は、以下のようになっています。

 interface HiroNX {
    void setupRobot();
    void restart();
    void goInitial();
    void goOffPose();
    void servoOn();
    void servoOff();
    void calibrateJoint();
    void servoOnHands();
    void servoOffHands();
    void EngageProtectiveStop();
    void DisengageProtectiveStop();
    void reboot();
    void shutdown();

    void rhandOpen();
    void rhandClose();
    void lhandOpen();
    void lhandClose();
 };

この最後の lhandClose のあとに、一行追加することにします。

    void lhandClose();
    void newCommand();
 };

この IDL ファイルから、IDLコンパイラ「idlj」で Java ソースを生成します。
 % idlj -fall HiroNX.idl

生成した java ファイルも、コンパイルしておきます。
 % javac *.java
 注:入力ファイルの操作のうち、未チェックまたは安全ではないものがあります。
 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。

警告が出ますが無視します。

HiroNX_idl_example.py にnewCommandを実装する

HiroNX_idl_example.py を編集して、 HiroNX_i クラスに newCommand メソッドを実装します。

HiroNX_idl_example.py の末尾付近に、

 if __name__ == "__main__":

という行があります。この行より前が HiroNX_i クラスの定義部分です。ここでメソッド newCommand を定義するため、「def newCommand(self):
」の一行を挿入します。
defの前の空白の数を、前に定義されている lhandClose に合わせることと、行の末尾の (self): を忘れないことに注意してください。
Python に慣れないと、(self): を忘れますし、エディタ上で空白の数が合ってるように見えても、タブとスペースの違いでエラーになることもあるようです。

    def lhandClose(self):
        try:
            print "lhandClose"
            gui.lhandClose()
        except:
            print sys.exc_info()[0]
            print sys.exc_info()[1]
            print traceback.print_tb(sys.exc_info()[2])

    def newCommand(self):

 if __name__ == "__main__":
    import sys
    

newCommand メソッドの内容を実装します。

    def newCommand(self):
        try:
            print 'newCommand!'
        except:
            print sys.exc_info()[0]
            print sys.exc_info()[1]
            print traceback.print_tb(sys.exc_info()[2])

命令そのものは単純なprint文一つですが、例外処理を5行も書いています。
通常RTコンポーネントでエラーが出ても明確なエラー表示がないため、デバッグに手間取ることがあります。
例外処理でバックトレースを表示すれば、デバッグの手間をいくらか軽減できます。

別に修正した HiroNXGUI を接続して、newCommand ボタンを押してみます。
GUIで「新しいコマンド」ボタンを押したとき、HiroNXProvider 側の端末で「newCommand!」と表示されれば成功です。

 % jython HiroNXProvider.py 
 Import failure: rtm
 Import failure: hrp.simulator
 Not exists: /opt/grx/HIRONX/share/hrpsys/jar/
 Import failure: OpenHRP
 mymodule init
 HiroNX_i.init
 hostname
 hostname: localhost
 newCommand!
 newCommand!

うまく行きましたか?

NextageInterface

ChoreonoidからHiroNXProviderを通してHiroNX/Nextageを操作する方法を説明します。

動作環境

1.インストール

HiroNXProvideはgraspPluginに含まれておらずhrgPlugin内のRobotModels/HIRO/NextageInterface下にあります。

HandManipProvideはhrgPlugin内のRobotModels/HIRO/THK下にあります。

PortDuplicatoはhrgPlugin内のRobotModels/HIRO/ProtDuplicator下にあります。

以下のコマンドでHiroNXGUIを入手できます。(subversionが必要ですので無い場合はインストールしてください。)
 $ svn co -r 12 https://hironx-interface.googlecode.com/svn/HiroNXInterface/HiroNXGUI/

ROSをインストールしていないときはhttp://wiki.ros.org/hydro/Installation/Ubuntuを参考にインストールを行ってください。
次にHironx/NEXTAGE OPEN APIを以下のコマンドでインストールします。(http://wiki.ros.org/rtmros_nextage/Tutorials/Install%20NEXTAGE%20OPEN%20software%20on%20your%20machine )

 $ apt-get install ros-hydro-rtmros-nextage ros-hydro-moveit-ros-visualization ros-hydro-moveit-planners-ompl

graspPluginにRobotInterfaceプラグインを使用するようにしていない場合は、以下の手順でRobotInterfaceプラグインを有効にしてください。
 # chorenoidのトップディレクトリに移動
 $ cd choreonoid
 $ ccmake .

cmakeの画面が表示されるのでGRASP_PLUGINS項目にRobotInterfaceを追加し、cキーを押しconfigureを行い、gキーを押しmakeファイルを生成してください。
最後にmakeを実行し、choreonoidをビルドします。
 $ make

http://openrtm.org/openrtm/ja/node/30 を参考にOpenRTPをインストールしてください。

2.使用方法

2.1設定

HiroNXProvider

ロボットとHiroNXProviderとを接続するときのパラメータを設定します。
設定するファイルはhrgPlugin/RobotModels/HIRO/NextageInterface下にある

です。
.robotnameにはロボットのRTコンポート名を記述します。(例 RobotHardware0)
.robothostにはロボットのネームサーバのホスト名/IPアドレスとポート番号を指定します。(例 hiro011:15005)

HandManipProvider

HandManipProviderの設定ファイルを編集します。対象ファイルは”.port”です。
ハンドと接続しているUSBシリアルのデバイスファイル名を記述します。
通常は/dev/ttyUSB0です。

2.2起動

初めに、ロボットを起動します。ロボットのネームサーバの起動前にHiroNXProviderを起動するとロボットとHiroNXProviderが接続できなくなります。
次にHiroNXProvider, HiroNXGUI, HandManipProvider, PortDuplicator, Choreonoidを起動します。

2.3接続

各プログラムを接続します。

GUIによる接続

RTシステムエディタ(eclipse)を起動します。
メニューからウインドウ→パースペクティブを開く→その他を選択するとパースペクティブ選択画面が表示されますのでRT System Editorを選択します。
左側に"Name Service View"が現れます。
Name Service ViewにArmController0|rtc, HandManipContrller|rtc, HiroNXGUI0|rtc, HiroNXProvider0|rtc, PortDuplicator0|trcがあれば、各RTコンポーネントは正常に起動しています。
ツールバーの"Open New System Editor"(図中①)をクリックするとSystem Diagramウィンドウが表示されます。ここに先ほどのRTコンポーネントをドラッグアンドドロップします。
下記表のポートペアを接続します。
コンポーネント名 ポート名 コンポーネント名 ポート名
HiroNXGUI0 HiroNX PortDuplicator0 HiroNX
HiroNXGUI0 HIRO PortDuplicator0 HIRO
ArmController0 HiroNX PortDuplicator0 HiroNX
ArmController0 HIRO PortDuplicator0 HIRO
PortDuplicator0 HiroNX0 HiroNXProvider0 HiroNX
PortDuplicator0 HIRO0 HiroNXProvider0 HIRO
PortDuplicator0 HiroNX1 HandManipProvider0 HiroNX
PortDuplicator0 HIRO1 HandManipProvider0 HIRO

AllActiveボタン(図中②)を押しRTコンポーネントをアクティブにします。

NextageInterface_rtsystemeditor.png

コマンドによる接続

以下のコマンドを入力することにより、上記のGUIによる接続と同じRTコンポーネントの接続を実現することができます。

 $ source `rospack find openrtm_tools`/scripts/rtshell-setup.sh
 $ rtcwd /localhost
 $ rtcon $host/HiroNXGUI0.rtc:HiroNX $host/PortDuplicator0.rtc:HiroNX
 $ rtcon $host/HiroNXGUI0.rtc:HIRO $host/PortDuplicator0.rtc:HIRO
 $ rtcon $host/ArmController0.rtc:HiroNX $host/PortDuplicator0.rtc:HiroNX
 $ rtcon $host/ArmController0.rtc:HIRO $host/PortDuplicator0.rtc:HIRO
 $ rtcon $host/PortDuplicator0.rtc:HiroNX0 $host/HiroNXPorvider0.rtc:HiroNX
 $ rtcon $host/PortDuplicator0.rtc:HIRO0 $host/HiroNXProvider0.rtc:HIRO
 $ rtcon $host/PortDuplicator0.rtc:HiroNX1 $host/HandManipProvider0.rtc:HiroNX
 $ rtcon $host/PortDuplicator0.rtc:HIRO1 $host/HandManipProvider0.rtc:HIRO
 $ rtact $host/HiroNXGUI0.rtc $host/HiroNXProvider0.rtc $host/ArmController0.rtc $host/PortDuplicator0.rtc $host/HandManipProvider0.rtc

2.4初期操作

HiroNXGUIの"Set up Robot"ボタンをクリックし、HiroNXProviderとロボットの接続を行います。
HiroNXGUIの"Calibrate Joints"ボタンをクリックし、キャリブレーションを行います。
HiroNXGUIの"Go Initial"ボタンをクリックし、ロボットを初期姿勢にします。

NextageInterface_HiroNXGUI.png

2.5Choreonoidからのロボット動作送信

Choreonoidで動作を生成します。
ChoreonoidのInterfaceツールバーの"Move"ボタンをクリックすると生成した動作をロボットへ送信されロボットが動作します。

3.その他

ローカルでHiroNXProvider/HiroNXGUIをテストする方法

HiroNXProvider/HiroNXGUIの動作を実機に接続して試すのではなくシミュレー
ション上で試すには以下の手順を行ないます。

HiroNXProviderの.robothostファイルを以下の内容に書き替えます。

 localhost:15005

HiroNXProviderの.robotnameファイルを以下の内容に書き替えます。
 HiroNX(Robot)0

以下のコマンドによりhrpsys-simulatorを起動します
  $ source `rospack find openrtm_tools`/scripts/rtshell-setup.sh
  $ rtmlaunch hironx_ros_bridge hironx_startup.launch

後は、実機で接続したときと同じ手順を実行します。

NextageInterface(windows)

choreonoidのRobotInterfaceプラグイン等で発行された動作命令をwindowsで処理するスクリプト

hrgPlugin内のRobotModels/HIRO/NextageInterfaceWindowsにあります。

動作にはOpenRTM(http://www.openrtm.org/openrtm/ja/content/openrtm-aist-official-website )が必要です。

・インストール方法
http://www.openrtm.org/openrtm/ja/node/5768 ページ中のパッケージ->WindowsインストーラからpythonとOpenRTMのパッケージをダウンロードします。
(既にpythonがインストールされている場合は、pythonのbitに合わせたOpenRTMをダウンロードします。)
Pythonをインストールし、OpenRTMをインストールします。

・使用方法
1.ネームサーバ起動 : NextagetIntefaceマシン(Windows)
 [スタート]->[すべてのプログラム]->[OpenRTM1.1]->[Tools]->[Start Python Naming Service]をクリックしネームサーバが起動します。
2.HiroNXProvider起動 : NextagetIntefaceマシン(Windows)
 エクスプローラを起動し、NextageInterfaceWindowsのフォルダへ移動します。HiroNXProvider.pyをダブルクリックし起動します。
3.choreonoid起動 : choreonoid操作マシン(Linux) 
 choreonoidがインストールされているディレクトリにrtc.confを編集します。(ない場合は作成してください)
 corba.nameserversの行に、windowsマシンのIPアドレスを設定してください。
  corba.nameservers: "windowsマシンのIPアドレス":2809
 ターミナルを立ち上げ、choreonoidがインストールされているディレクトリへ移動し、bin/chorenoidとコマンドを入力choreonoidを起動します。
4.RTコンポーネント接続 : NextagetIntefaceマシン(Windows)
  RTコンポーネントの接続はRT System Editor RCPを使用します。基本的な使用方法はhttp://openrtm.org/openrtm/ja/content/rtsystemeditor-110 を参照してください。
  [スタート]->[すべてのプログラム]->[OpenRTM1.1]->[Tools]->[RTSystemEditorRCP]をクリックすると、RT System Editor RCPが起動します。
  メニューからFile->Open New Sytem EditorをクリックするとSystem Dialogが表示されます。
  左側にName Service Viewタブがあります。ネームサーバが正常に起動されていれば127.0.0.1もしくlocalhostのアイテムが表示されているので、その左側の三角形をクリックしツリーをすべて表示します。
  HiroNXProverとChoreonoidが正常に起動されていれば、HiroNXProvider0|rtcとArmController0|rtcが表示されます。それぞれをSystem Dialogにドラッグします。
  次に下記のポートのペアを接続します。
   HiroNXProvider0|rtcのHiroNXポートとArmController0|rtcのHiroNXポート
   HiroNXProvider0|rtcのHIROポートとArmController0|rtcのHIROポート
  最後にAll Activateボタン(ツールバーの緑の三角形)をクリックしRTコンポーネントをアクティブにします。
5.動作
 Choreonoidで動作生成を行い、Interfaceツールバーの"Move"ボタンをクリックすると生成した動作(関節角度等)がWindows上のHiroNXProviderのコマンドプロンプトに表示されます。

linux用(RobotModels/HIRO/NextageInterface)と異なるのはHiroNXManipulator.pyのみです。
HiroNXManipulator.pyにgoInitial等が呼ばれときに表示する処理が記述されていますので、これを所望の処理に変更して使用してください。