今日の一言
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に載っていない情報が過去ログにあるのかは不明なりー。