トップ «前の日記(2010/02/19(Fri)) 最新 次の日記(2010/02/28(Sun))»
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


2010/02/24(Wed) 一日が24時間ってのは短すぎる・・・ [長年日記] 1:00現在 9℃

_ [OpenHRP3][Linux][Ubuntu][研究関係]GrxUIが操作できなくなった場合の対処法

【環境:OpenHRP3.0.3 on Ubuntu9.04】

今日のミーティング用に、久しぶりにOpenHRP3でシミュレーションの動画を撮ろうとしたところ、

まっっったく、動かない。

具体的には、GrxUIは起動しているっぽいものの、キー操作をまったく受け付けない。

しかも、エラーを吐いてくれないという始末の悪さ。

もしやと思い、直前に行ったセキュリティアップデートを可能な限り元に戻してみた。

が、やはり動かない。

色々試したがやはり動かず、OpenHRP3を再インストールすることに。

うん・・・動かない。

ぬわーっとなって、いろいろやっていたら、GrxUI.shと同じフォルダに

 FixEnvironment.sh

と、

 reset_openhrp.sh

なるものが入っていることに気づいた。

ダメ元で、

 $ sh reset_openhrp.sh
 $ sh FixEnvironment.sh

を叩く。で、

 $ ./Grxui.sh

・・・よし、動いたぜ!

やはり開発元はすごいなぁ。

が、自分が調べた限りでは、

reset_openhrp.shも、

FixEnvironment.shも、

まったくどこにも使い方が書いてないのだが!?

せっかく使えるんだから、もっとアピールすればいいのに。

*もしかしたら環境がおかしくなったんじゃなくて、前のログとかが残っていたのが原因かも。

reset_openhrp.sh だけでよかったかもしれない。

*そもそも、コレらが、こういうときのためのものかどうかは不明。

中身を見た限り、いけそうだったので試したみた次第でござるー。

_ [OpenHRP3][Linux][Ubuntu][研究関係]OpenHRP3.0.3を勉強する時の注意点

【環境:OpenHRP3.0.3 on Ubuntu9.04】

本家HPに行ったら、まず左下の「HPログ」から、「3.0系ドキュメンテーションログ」を開くこと!

で、「3.0.3 ドキュメンテーショントップ」を選択する!

これ、凄く重要。

というのも、公式HP(http://www.openrtp.jp/openhrp3/jp/index.html)は、常に現行バージョンのドキュメントやガイドを掲載する方針っぽい。

なので、旧バージョンの情報を得る場合には、過去ログを見る必要がある。

・・・自分はそれになかなか気づかず、ものっそい苦労した。

パスは違うわ、コントローラ名は違うわ、・・・まあ、バージョンが違うんだから仕方ないんだが。

大事なことなので、もう一度書く。

本家HPに行ったら、まず左下の「HPログ」から、「3.0系ドキュメンテーションログ」を開くこと!

で、「3.0.3 ドキュメンテーショントップ」を選択する!

今どちらを開いているかは、見分け方は、アドレスが、

 http://www.openrtp.jp/openhrp3/3.0.3/jp/何とか

になっているかどうかで分かる。

(通常だと、http://www.openrtp.jp/openhrp3/jp/なんとか)

*よく見たら、上の方に、 (旧OpenHRP Ver.3.0.3 版 page) ってちゃんと出てました。なので、アドレスは見なくても大丈夫!

_ [OpenHRP3][Linux][Ubuntu][研究関係]OpenHRP3.0.3で、ビューシミュレーションを動かしてみる

【環境:OpenHRP3.0.3 on Ubuntu9.04】

上の記事と思いっきり関係するのだが、今になって、バージョンごとにドキュメントの内容が違うことに気づいた。

今までその辺をまったく気にせず見ていたせいで、3.0.3とそれ以外のバージョンの情報を混同して考えていた模様。

・・・うん、バカだねー。

まあ、それはそれとして。

戯れに3.1.0β3のドキュメントを見ていたら、おもしろいのを見つけた。

「応用サンプル」の、「ビューシミュレーション利用チュートリアル」

http://www.openrtp.jp/openhrp3/3.1.0.beta3/jp/users_manual.html

サンプルロボットの頭部のカメラを使って、カメラ視点の映像をシミュレーションするというもの。

研究でちょっと使えそうなので、試してみた。

基本はココ(http://www.openrtp.jp/openhrp3/3.1.0.beta3/jp/view_simulation.html)の通りにすればいい。

が、今回は3.0.3なので、いくつか直す部分がある。

カメラ画像の設定

ロボットのモデルであるsample/model/sample.wrlを若干修正する。

これは記載されている内容をそのままやればOK。

以下、引用。

2台のカメラとも、出力する画像のタイプが"DEPTH"(距離画像) となっています。ここでは画像タイプを次のように"COLOR"に変更します。

DEF VISION_SENSOR1 VisionSensor {
   :
   :
  type          "COLOR"
   :
   :
}
DEF VISION_SENSOR2 VisionSensor {
   :
   :
  type          "COLOR"
   :
   :
}

シミュレーションプロジェクトの変更

GrxUI上で、ビューシミュレーションを有効化する。

これも記載されている内容をそのままやればOK。

以下、引用。

OpenHRP Viewのsimulationタブを開き、ViewSimulationチェックボックスにチェックを入れて下さい。これでビューシミュレーション機能が有効になります。

コントローラの変更

コントローラのソースファイルSamplePD.hおよびSamplePD.cppを編集してポートを追加する。

*過去の日記(http://robotics.naist.jp/~akihiro-i/dialy/?date=20090928#p05)とやっていることは同じなり。

これも記載されている内容をそのままやればOK。

『SamplePD.h』

  // </rtc-template>
  // DataInPort declaration
  // <rtc-template block="inport_declare">

の真下に

    TimedLongSeq m_image;
    InPort<TimedLongSeq> m_imageIn;

を追加。

『SamplePD.cpp』

  // <rtc-template block="initializer">

の下に

    m_imageIn("image", m_image),

を追加。次いで、

  // Registration: InPort/OutPort/Service
  // <rtc-template block="registration">
  // Set InPort buffers

の真下に

  registerInPort("image", m_imageIn);

を追加。

画像を入力ポートから読み込み処理する部分を追加

これも記載されている内容をそのままやればOK。

SamplePD.cppを開き、

RTC::ReturnCode_t SamplePD::onExecute(RTC::UniqueId ec_id)
{
     :
     :
  m_angleIn.update();

の真下に、

  if (m_imageIn.isNew()){
	  m_imageIn.read();
	  printf("t = %4.1f[s] : ",m_image.tm.sec + m_image.tm.nsec*1e-9);
#define isBlack(x) (x)==0xff000000

	  for (int i=320*120+150; i<320*120+170; i++){
		  if (isBlack(m_image.data[i])){
			  printf("0");
		  }else{
			  printf("1");
		  }
	  }
	  printf("\n");
  }

を追加。

『修正部分』

SamplePD.cppを開き、

 m_torque.data.length(DOF);
 m_angle.data.length(DOF);

のあとに、

 m_image.data.length(320*240);

を追加。

コントローラブリッジの設定変更

ここでは3.0.3用に若干の修正が必要。

SamplePD.shを次のように変更する。

#!/bin/sh

~/src/OpenHRP-3.0.3/bin/ControllerBridge \
--server-name SamplePDController \
--module SamplePD \
--out-port angle:JOINT_VALUE \
--out-port left-eye:0:COLOR_IMAGE \
--in-port torque:JOINT_TORQUE \
--connection angle:angle \
--connection torque:torque \
--connection left-eye:image

まず、

openhrp-controller-bridge 

を、3.0.3のコントローラブリッジである、

~/src/OpenHRP-3.0.3/bin/ControllerBridge \

に変更。(当然、パスは環境によって異なる)

で、

--out-port left-eye:0:COLOR_IMAGE:0.1 \

を、

--out-port left-eye:0:COLOR_IMAGE \

にする。

*どうやら3.0.3の時点では出力周期までは設定できない模様。 詳しくは、ココ(http://www.openrtp.jp/openhrp3/3.0.3/jp/controller_bridge.html)を参照のこと。

シミュレーションプロジェクトの修正

HPでは明記されていないが、当然、必要。

*というか、やらないとデフォルトのコントローラが動いてしまう。

ココ(http://www.openrtp.jp/openhrp3/3.0.3/jp/create_project.html)の「コントローラ 」の部分を参考に、コントローラの設定を行う。

おそらく、「Working Dir.」を、実際にコントローラを動かしているディレクトリにし、「Controller」の名前を一致させればOK・・・のはず。

シミュレーションの実行

準備が出来たので実行する。

$ sh SamplePD.sh

で、GrxUIを起動させて、"start simulation"ボタンでシミュレーション開始。

これでOK!

*ちなみに、今のHPには、「応用サンプル」として「ジョイスティック接続サンプル」しか置かれていない。

なぜ、現行のHPに載っていない情報が過去ログにあるのかは不明なりー。