2008年5月14日 ヒューマノイド演習第1回

  1. 注意
  2. 演習の環境設定
  3. OpenHRPシミュレーターの使用
  4. 環境の3次元モデル
  5. bodycontrol pluginの使い方
  6. stの使用・不使用の切り替え
  7. シミュレーションモードの変更
  8. 課題
  9. オプショナル課題
  10. アドバンスト課題
  11. 課題提出方法

  1. 注意

  2. 演習の環境設定

    1. 環境変数の設定

      • 以下の環境変数の設定をしておくこと.
      • .bashrc または .cshrc に書き込む
      .bashrc の場合
      export OPENHRPHOME=$HOME/src/OpenHRP
      export PATH=/usr/local/OpenHRP/jdk1.5.0_08/bin:$PATH
      .cshrc の場合
      setenv OPENHRPHOME ${HOME}/src/OpenHRP
      setenv PATH /usr/local/OpenHRP/jdk1.5.0_08/bin:${PATH}
    2. Jython2.1 のインストール

      スクリプト言語Jythonをインストールします. インタプリタも持つオブジェクト指向のスクリプト言語であるpythonを, Javaで実装したものです. OpenHRPを使って,ヒューマノイドのシミュレータや実機を動かすときに, フロントエンドとして使用することができるものです.

      which java 

      と打ち込み,結果が

      /usr/local/OpenHRP/jdk1.5.0_08/bin/java

      となっていることを確認した上で,

      cd ~ikuo/archives/
      java jython_21

      を実行します(CLASSPATHがカレントディレクトリに通っている必要有り).ダイアログウィンドウが出てきて質問をされます.全て「Next」としていればOKです.

      ※jythonのホームページ http://www.jython.org/

       
      HRP2V
      図.HRP2V
      HRP2JSK
      図.HRP2JSK
       
      HRP2W
      参考図.HRP2W
      (HRP2Vの前身)
    3. OpenHRP環境の設定

      cd
      mkdir -p src
      cd src
      tar zxvf ~ikuo/archives/OpenHRP-lec08.tar.gz

      としてソースツリーを展開.

      ☆ ☆ ☆

      cd ${OPENHRPHOME}/bin/
      ls -l lservrc
      とするとライセンスファイル"lservrc"が, どのファイルへのシンボリックリンクになっているかがわかります.
      ホスト名とライセンスファイルの対応表を参照し, 正しいライセンスファイルへのシンボリックリンクになるようにlservrcを更新します.
      例えば,mechpc66を使用しているならば,~ikuo/license/63-67/lservrc を使うために,次のようにします.
      ln -sf ~ikuo/license/63-67/lservrc ${OPENHRPHOME}/bin/
      なお,
      ls -F ~ikuo/license/
      とすると,
      26-28/  32/     37-39/  44-45/  48-51/  56-62/  69-70/  79/
      29-30/  33-35/  40-42/  46/     52/     63-67/  71-76/  80/
      31/     36/     43/     47/     53-55/  68/     77-78/
      のように表示され,PCの番号の対応がわかります. mechpc26〜mechpc80が使用可能です.

      ☆ ☆ ☆

      cd ${OPENHRPHOME}/bin
      make clean
      make ROBOT=HRP2W

      として,特にエラーメッセージが出ていないことを確認し,

      ./Auditor.sh

      と実行すると,ヒューマノイドHRP2V(右図)のシミュレーターが起動します.

      ※HRP2Vを使うために前身であるHRP2Wを指定するのは, HRP2VがまだOpenHRPにサポートされていないため,サポートされているHRP2Wの名前を借りているため.

      ☆ ☆ ☆

      cd ${OPENHRPHOME}/bin
      make clean    # 本来は,make ROBOT=それまで使っていたロボット clean とするのが正解だが・・・.
      make ROBOT=HRP2JSK

      として,特にエラーメッセージが出ていないことを確認し,

      ./Auditor.sh

      と実行すると,ヒューマノイドHRP2JSK(右図)のシミュレーターが起動します.

      ☆ ☆ ☆

      うまく起動しない場合,$OPENHRPHOME/Make.vars をエディタで立ち上げ,

      # Jython installed directory
      JYTHON_DIR = $(HOME)/jython-2.1

      という行の$(HOME)の部分を消して,自分のホームディレクトリを/から記入します(例:JYTHON_DIR = /home/ikuo/jython-2.1). 学生は/home/ではない場合があるので,注意が必要です./home06/等の場合があります.

  3. OpenHRPシミュレーターの使用

    1. オンラインドキュメント

      General Robotix 社のオンラインドキュメント
      https://www.generalrobotix.com/openhrpsupport/support_main.htm
      を参考にすること.アクセスするために必要なパスワードは演習中に発表します.

      このオンラインドキュメントの Auditorのところ に詳しい説明が記載されています.

    2. サンプルプログラムの実行

      cd ~/src/
      tar zxvf ~ikuo/archives/sample.tgz

      とすると,サンプルプラグインとそれを使用するためのスクリプトファイルが~/src/SamplePlugins20080514/以下に展開されます.~/src/SamplePlugins20080514/script/sample?.py がjython のスクリプト,~/src/SamplePlugins20080514/sample?.cpp がそのプラグインのソースです.

      これらのサンプルを実行して,どのような動作が生成されるかを確認してください.

      ※注意事項:
      • プラグインのコンパイルは,~/src/SamplePlugins20080514/ で,make します.
      • make した結果は,${OPENHRPHOME}/Controller/IOserver/robot/${ROBOT}/bin/ に出力されます.
      • これらのサンプルは,HRP2JSK用です.
      • 結果の確認は,スクリプト実行終了後に play ボタンを押すとわかりやすいです.
  4. 環境の3次元モデル

    1. VRMLモデルの追加

      OpenHRPでは,モデルはVRMLベースで記述します.サンプルのモデルは

      $ cat $OPENHRPHOME/etc/box.wrl

      で見ることができます.厳密なVRMLとは異なりOpenHRP独自規格ですが,物体の形状定義部分はVRMLであることが確認できます. ここでは新しいモデル

      $ cat $OPENHRPHOME/etc/table.wrl

      を準備しているので,これを入れるようにします.

    2. 3次元モデルの環境設定

      $OPENHRPHOME/client/gui2/property/defaut.properties
      の中の,
      simulation.model1.url = file://$(simulation.openhrphome)/etc/floor.wrl
      の下の行に,
      simulation.model2.id = table
      simulation.model2.url = file://$(simulation.openhrphome)/etc/table.wrl
      を追加します.初期位置を変更したい場合,
      simulation.model2.translation = 0 0 3 #上に3m
      simulation.model2.rotation = 1 0 0 0 1 0 0 0 1

      以降,同様にして3次元モデルを導入したい場合には,

      $OPENHRPHOME/etc/

      のディレクトリにVRMLを置き,上記のファイルを訂正すれば良い.

  5. bodycontrol pluginの使い方

    様々な運動パターンを生成するために,bodycontol pluginが用意されています.
    これは,サンプルと同様にjythonのスクリプトから利用することが可能です.
    動作生成スクリプトの記述フォーマット例として,bodysample-HRP2JSK.py 及び,bodysample-HRP2V.py が用意されています.
    それぞれ,そのロボットのシミュレータを起動して呼び出してください.
    ~/src/OpenHRP/jsk/script/にある(~/src/OpenHRP/Controller/IOserver/robot/ロボット名/bin/script/にもあります).
    行動の変更は,スクリプトの以下の部分を編集することで可能です.

    #
    # vvvvvv change here vvvvvv
    #
    bc.sendMsg(":inverse-kinematics :rarm 0.2 -0.3 0.2 0 -90  20 4.0")
    bc.sendMsg(":inverse-kinematics :larm 0.2  0.3 0.2 0 -90 -20 4.0")
    bc.sendMsg(":wait-interpolation")
    bc.sendMsg(":neck-angles 20 20 2.0")
    bc.sendMsg(":waist-location 0.8 0.2 0 60")
    bc.sendMsg(":neck-angles 40 20 4.0")
    bc.sendMsg(":wait-interpolation")
    bc.sendMsg(":torso-angles 20 20 4.0")
    bc.sendMsg(":wait-interpolation")
    #
    # ^^^^^^ change here ^^^^^^
    #

    簡単な記法を以下に説明します.

  6. stの使用・不使用の切り替え

    bodysample-HRP2JSK.pyの中の,

    use_st=1

    の部分を,

    use_st=0

    にすることで,歩行時の安定化プラグインであるstabilizer(st) の使用・不使用を切り替えることが可能です. stの有無によってシミュレーションの結果が変化するかどうか確認してください.

  7. シミュレーションモードの変更

    Auditorのメニューの,

    Mode->Simulation->Property->Integration Method

    の部分を変更することで,動力学シミュレーション時の 数値積分手法を変更することが可能です.

    Euler->オイラー法.通常時はこれになっています.
    Runge Kutta->ルンゲ・クッタ法.オイラー法に比べて正確な積分値が得られるが計算時間がかかります.
    No Sim.->動力学シミュレーションを行わず,ロボットの関節角度時系列および移動のみが再現されます.

    No Sim.モードの際には,bodysample-*.pyをベースにする場合はuse_st=0としなければならないことに注意してください. 試行錯誤的に動作を作っている最中は,No Simモードで確認し,最終確認のみ動力学シミュレーションにかけることで,効率的な開発が行えます.

     

  8. 課題

    1.面白い動作を作ってTAを笑わせよ.AND/OR 将来ヒューマノイドが役に立ちそうな利用場面を考え,そこでのロボット動作をプログラミングせよ.

    2.log pluginを使うと,関節角度やセンサ情報の時系列データを取得することができる.自分の作成した運動のlogをとり,gnuplot等を使って解析せよ.

  9. オプショナル課題

    3.センサ情報に応じて,動作が変更される例を考え,https://www.generalrobotix.com/openhrpsupport/online_manual/manual2/auditor2.htm#_Toc94441112 を参考にスクリプトを作成せよ.

    少くとも上のURLにあるサンプルの意味は考えてみること.

  10. アドバンスト課題

    4.机や箱など,床以外の3次元物体を登場させ,ヒューマノイドと物理的な相互作用をする動作を作成せよ.

    5.stに代わる新しい歩行時の安定化アルゴリズムを考案し,プラグインとして実装せよ.

  11. 課題提出方法

    知能機械情報学演習


Last modified: Wed May 28 11:28:01 JST 2008