今日の一言
2010/02/03(Wed) やっふーー! [長年日記] 編集 1:30現在曇 5℃
2010/02/14(Sun) 日曜なのに研究室ー・・・♪ [長年日記] 編集 18:00現在曇 8℃
_ [Ubuntu][FC][Linux][プロジェクト実習][研究関係]OpenRTM-aistのインストールに失敗する場合
別バージョンのOpenRTM-aistが完全にアンインストールされていない可能性がある。
なので別バージョンを一度アンインストールしてから、再度インストールを行う。
Vine・Fedora・ubuntu・debian共通
pkg_install_XXXX.sh(http://www.openrtm.org/OpenRTM-aist/html/E38380E382A6E383B3E383ADE383BCE383892FC2B2B2F0.4.2-RELEASE.html)を利用してアンインストールする。
$ sudo pkg_install042_XXXX.sh -u
(XXXXはディストリビューションに応じて変わる)
で、再起動した後、インストール。
$ sudo pkg_install042_XXXX.sh
これでOK。
_ [Ubuntu][FC][Linux][研究関係]make時のエラーログをとる
メッセージを全部保存したいなら、普通にリダイレクトを使えばいい。
$ make > log.txt
が、次のコマンドを使うことで、エラー以外はコンソールに表示し、エラーだけをログに出力ということが出来るらしい。
(http://www.freedomcat.com/diary/?date=20090914#p02)
$ ( make > /dev/tty ) >& log.txt
うん、便利だな。とてもありがたい。
*ほとんど嘘でした!
正しいやり方はこちら(http://robotics.naist.jp/~akihiro-i/dialy/?date=20100511#p02)をどうぞ。
_ [Ubuntu][FC][Linux][OpenHRP3][研究関係]OpenHRP3をUbuntu9.04で動かすときの注意
使ったのはUbuntu9.04とOpenHRP-3.0.3。
そ、そもそも9.04は最新版でもまだ対応してないんだからねっ!
と、まあ、そんな状況なんですが、
男にはやらねばならないときがある!
ということで。
あえて9.04でやってみる。もちろん真似して動かなくても我不知道。
とりあえずやっておくこと(公式HPにも載ってるけど念のため)
OpenHRP3.0系は、OpenRTM-aist-1.0系には未対応。
なので、OpenRTM-aist の旧バージョン (OpenRTM-aist-0.4.2-RELEASE) をインストールする必要があるのだが・・・
どういうわけか、パッケージ導入スクリプトには1.0系を入れるための記述がある。
なので、ソースを解凍したら、最優先で修正しておこう。
{OpenHRPソースパッケージディレクトリ}/util/pkg_install_ubuntu.shの、17行目のopenrtmの値を以下のように変更する。
<変更前>
openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example python-yaml"
<変更後>
#openrtm="openrtm-aist openrtm-aist-doc openrtm-aist-dev openrtm-aist-example python-yaml" openrtm="python-yaml"
見て分かるように、単純にOpenRTMのインストールを止めただけです。
なので、OpenRTM-aist-0.4.2は自分で入れる必要がある。
ま、Ubuntuの場合は、
ココ(http://www.openrtm.org/OpenRTM-aist/html/E38380E382A6E383B3E383ADE383BCE383892FC2B2B2F0.4.2-RELEASE.html)からパッケージ(pkg_install042_ubuntu.sh)をDLして、
$ sudo sh pkg_install042_ubuntu.sh
するだけなのでかなり楽だが。
なお、以前にも書いた(http://robotics.naist.jp/~akihiro-i/dialy/?date=20091118#p02)が、OpenRTM-aistの自動アップデートは必ず止めておくこと。
勝手に1.0系にされると、本気で修正が大変になると思われ。
パッケージ導入スクリプト
はい、当然対応してません。
が、実際のところあまり問題はないっぽい。とりあえず、
$ ./installPackages.sh packages.list.ubuntu.8.04
と、同封されていた奴の中で一番新しいのを選んでやってみたら動いた。
*というか、7.04、7.10、8.04でdiffをとってみたら、違いはコメントにかかれているディストリビューション名だけ。
・・・いや、どこに分ける意味が?
が、そもそも9.04の設定を8.04ので(根拠もなく)代用している時点でかなり無茶なので、今後問題が生じる可能性は極めて大。
ま、その時はその時考えるということで。
コンパイル
ええ。当然、9.04用のmakefileなんてないです。
が、これも、
$ cp Make.vars.ubuntu.8.10 Make.vars
として
$ make
でいけた。とりあえずエラーは出ていない。
ちなみに、Make.vars.ubuntu.8.10は、OpenHRP-3.0.3には入ってなかったので、最新の安定版であるOpenHRP-3.0.5からコピーした。
*3.1.*からはmakefileではなくcmakeになった模様。
とりあえずここまではOKっぽい。
GrxUIでDynamic Simulatorが動かない場合の対処法
とまあ、ここまではテキトーにやってても出来ると思う。というか、適当な対処しかしていない。
で、一通り終わったからさて実行しようか、と言う段階で問題が発生。
GrxUIでDynamic Simulatorが認識されない。
ココ(http://www.humanoidrobots.org/openhrp/users_forum/c-board.cgi)にも似たような現象に陥っている人が多数いるが、どうやら現員が異なる模様。
~/src/OpenHRP-3.0.3/DynamicsSimulator/serverにはきちんとDynamicsSimulatorが生成されていたので、コンパイルは成功している。
ただ、「Tools」の中の「Process Manager」には出てこない。というか、出てきているけどチェックが入れられない。
「Process Manager」タブを確認したところ、
IDL:omg.org/CORBA/TRANSIENT:1.0
との記述が。
試しに、ココ(http://www.openrtp.jp/openhrp3/3.1.0.beta3/jp/troubleshooting.html)に載っていた方法をやってみた。
/etc/hostsを開き、
$ sudo gedit /etc/hosts
ipv6のlocalhost設定の行をコメントアウトする。
<変更前>
::1 localhost ip6-localhost ip6-loopback
<変更後>
#::1 localhost ip6-localhost ip6-loopback
で、実行。
成功。
これで後は自由に動かせるようになるだけだぜー!
ま、それが一番大変なんだがな。
*どうやら、ubuntu9.04でipv6がデフォルトで有効でなくなったことが原因らしい。
・・・ipv6もなかなか迷走してるなぁ。
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に載っていない情報が過去ログにあるのかは不明なりー。
_ Helleojagasip [Hi VEry nice posts i'sure i'sts nice]