cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

hiro_handleを使ってWindowsからHIRONX実機を動かす

初稿: 2013/10/6, 最終更新: 

8.Windowsにhiro_handleをセットアップ

HIRONXのメーカー付属サンプルプログラムのJythonが邪魔な場合や、Windows環境からHIROを直接動かしたいとき、電通大の末廣先生が開発されたhiro_handleを使うと便利です。詳細は、リンク先をご覧ください。

hiro_handle:rtc_handleを使ってhiroNXを動かす

ここでは、Windowsへインストールする時の注意点だけを記載します。

8.1 準備

自前のpcのネットワークの設定

  • 自身の有線のネットワークアドレス

HIRONXのQNXコントローラのIPアドレスと同じサブネットになるように、ネットワーク設定を変更します。そのままインターネットに接続できなくなってしまうので、LANカードを2枚差しにしたり、無線LANを使えるようにしておくと便利です。

仮に、ネットワーク設定が次のようになっているとします。*1

QNXのIP Address: 10.254.20.1

この場合、hiro_handleをインストールするPCのネットワークは次のようにします。

IP Address: 10.254.20.20 //下2桁は0-254までの適当な数字

Subnet Mask: 255.255.255.0

  •  robot-hostのネットワークアドレスが引けるようにする.

Windowsの/etc/hostsは、

C:\Windows\System32\drivers\etc\hosts

です。セキュリティ権限がないと編集できませんので、管理者権限が得られるように設定変更してください。テキストエディタで開いて、”QNXのIP Address hiroシリアル番号”を一番最後に一行加えます。シリアル番号は、頭を0で埋める3桁の数字ですので注意してください。

10.254.20.1 hiro020

 OpenRTM-aist-Pythonの準備

まずOpenRTM-aist-Pythonと必要なツールを産総研OpenRTM-aist-Python-1.1.0-RC1からダウンロードします。

  1. python-2.6.6.msi (表記が2.6.2になっていますが、2.6.6の表記の間違いです)
  2. Windows用インストーラ OpenRTM-aist-Python-1.1.0-RC1.msi 
  3. Pythonソースコード(Win32) OpenRTM-aist-Python-1.1.0-RC1.zip 
  4. MSVCR71.dll, MSVCP71.dll

1,2はダウンロード後インストールします。4も説明に従い、正しくコピーします。

コマンドプロンプトPythonを使えるようにするため、環境変数PATH(コントロール パネル\システムとセキュリティ\システムからシステムの詳細設定>詳細設定>環境変数>システム環境変数)の最後尾にPythonを加えます。

;C:\Python26;

まだインストールしていない多くの場合、MSVCR71.dll, MSVCP71.dll が必要になるので、64ビットOSの場合c:\Windows\SysWow64の下にコピーします。

8.2  hiro_handleのインストール

ソースからのビルドで追加

指示に従って修正を加えていきます。OpenRTM-aist-Pythonのビルド方法はこちらに説明があります。

rtc_handle のインストール、hiro_handle のインストール

ここでは、c:\workspace\hiro_handleの下に展開するものとします。パスを通す代わりにお行儀が悪いですが、rtc_handleの下のrtc_handle.py、rtc_handle_util.pyとembryonic_rtcの下のEmbryonicRtc.pyをc:\workspace\hiro_handleの下にコピーします。

hiroNXのrtcのservice interfaceのidlのインストール

そのままではWindowsのコマンドプロンプト上でワイルドカード*は有効になりませんので、一つ一つファイル名を直接入力します。

omniidl -bpython *.idl

の代わりに、

omniidl -bpython RobotHardwareService.idl

omniidl -bpython SequencePlayerService.idl

omniidl -bpython SystemAdminService.idl

omniidl -bpython ArmControlService.idl

omniidl -bpython GrasperService.idl

omniidl -bpython TimeKeepereService.idl

omniidl -bpython DataLoggerService.idl

 8.3 使い方

set_env.pyのNS_HIROを使用するHIROのシリアル番号に指定します。

NS_HIRO=”hiro020″

QNXの上に起動しているnameserviceを使うことにしてrtc.confを次のように編集します。

corba.nameservers: hiro020:9876

 8.4 テスト

 ここでは他にrtc_handleのコンポーネントを使いませんので、hiro_test.pyを書き換えます。実機があるなら、動作テストもしてしまいましょう。

import sys

from hiro_handle import *

 

#env=RtmEnv(sys.argv,[NS0,NS1])

#hiro=HiroEnv(None, NS_HIRO, env.orb)

hiro=HiroEnv(sys.argv, NS_HIRO)

hiro.init()

hiro.servoOff(doConfirm=False)

hiro.calibrateJoint()

hiro.getVersion()

hiro.goInitial()

hiro.servoOff(doConfirm=False);

 ただし、log周りに少しバグがありますので、logを使わないようにhiro_handle.pyを一部書き換えます。servoOff関数の中のself.saveLog()を頭に#をつけてコメントアウトしてください。

HIRONXの実機があれば、QNXの電源を入れて実行してみましょう。最初はぶつけたり、暴走したりする可能性もありますので、十分に注意してください。コマンドプロンプトを開いてスクリプトを実行します。

python hiro_test.py

上手く動きましたか?

f:id:cvl-robot:20131007221029p:plainfig.16 実行結果

 

*1:HIRONXのネットワーク設定は、販売時期やシリアル番号によって異なり、メーカーサポートページのオンラインマニュアルに記載されています。ただし、IDとパスワードが必要です。購入するまでロボットの詳細が分からないのですから不便ですね。