ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
一日一回更新すると宣言してしまった記事は削除して無かったことにしようかと思ったりもしている本企画の第3回です.
rtc.confの設定項目にデフォルトの実行コンテキストのタイプを変更する項目があります.
rtc.confに書かなかった場合は
exec_cxt.periodic.type: PeriodicExecutionContext と設定されます. デフォルトと言うことは何らかの方法で動的に変更できそうですね. PeriodicExecutionContextは周期実行できます. 対してExtTrigExecutionContextを設定すると外部トリガによる実行になります. OpenRTM-aistのPython版にサンプルがあります. C++で簡単にをつくってみました. ここからダウンロードできます. 実行する前に,
corba.nameservers: localhost
naming.formats: %n.rtc
exec_cxt.periodic.type: ExtTrigExecutionContext
exec_cxt.periodic.rate: 1000
という内容のrtc.confを作成して,適当なフォルダに入れた後,OpenRTM-aist-1.0.0-RELEASE付属のConsoleInCompとConsoleOutCompをそのフォルダにコピーして起ち上げてください.
その後,今回作成したプログラムを起動すれば,0を押したときはConsoleInComp,1を押したときはConsoleOutComp,2を押したときは両方を実行します.
・・・Python版のサンプルと同じになるはずですが,僕の環境が悪いのかどうかはわかりませんがPython版のサンプルが入力に関係なく周期実行になってしまいますね.これを読んでる皆さんの環境ではどうなってますかね?
※OpenRTM-aistのメーリスで質問してくれた人がいて,どうやらバグだったみたいです.
と言うかサンプルプログラムなのに誰も動作確認しようとしなかったのか,僕みたいに自分の使い方が間違ってると思い込んで報告しなかったのかどっちなんでしょうね?
これなら,WubiでOpenRTM-aistが使えないのもバグかも.
とりあえず,今回のプログラムとC++版のConsoleInCompとConsoleOutCompを使うと,0を入力した後しかConsoleInCompの数字の入力が受け付けなくなり,1を入力した時しかConsoleOutCompのInportから入力された値が表示されなくなります.
今回作成したプログラムのポイントは
CorbaConsumer<OpenRTM::ExtTrigExecutionContextService> ec0;
CorbaConsumer<OpenRTM::ExtTrigExecutionContextService> ec1;
ec0.setObject(ExecutionContextListIn[0]);
ec1.setObject(ExecutionContextListOut[0]);
ec0->tick();
ec1->tick();
です.
tick()で実行できるみたいです.
PeriodicExecutionContext,ExtTrigExecutionContex以外では,OpenHRP3のコントーラーに使う SynchExtTriggerEC,ARTLinux用実行コンテキストARTExecutionContextがあるみたいですね.
rtc.confは他にも設定できる項目はありますが,だいたいOpenRTM-aistの公式HPの通りなので別にここでやらなくても・・・・という感じですね.
強いて言うなら,managerに関する設定と,corba.endpointとかはやってもいいかもしれないけど,managerは後でやりたい気分だし,corba.endpointは他のサイトで解説があるようなので別に触れなくても良いかなと思ったりですね.
次回はポートの動的な追加,削除をやりたいと思います.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
rtc.confの設定項目にデフォルトの実行コンテキストのタイプを変更する項目があります.
rtc.confに書かなかった場合は
exec_cxt.periodic.type: PeriodicExecutionContext と設定されます. デフォルトと言うことは何らかの方法で動的に変更できそうですね. PeriodicExecutionContextは周期実行できます. 対してExtTrigExecutionContextを設定すると外部トリガによる実行になります. OpenRTM-aistのPython版にサンプルがあります. C++で簡単にをつくってみました. ここからダウンロードできます. 実行する前に,
corba.nameservers: localhost
naming.formats: %n.rtc
exec_cxt.periodic.type: ExtTrigExecutionContext
exec_cxt.periodic.rate: 1000
という内容のrtc.confを作成して,適当なフォルダに入れた後,OpenRTM-aist-1.0.0-RELEASE付属のConsoleInCompとConsoleOutCompをそのフォルダにコピーして起ち上げてください.
その後,今回作成したプログラムを起動すれば,0を押したときはConsoleInComp,1を押したときはConsoleOutComp,2を押したときは両方を実行します.
・・・Python版のサンプルと同じになるはずですが,僕の環境が悪いのかどうかはわかりませんがPython版のサンプルが入力に関係なく周期実行になってしまいますね.これを読んでる皆さんの環境ではどうなってますかね?
※OpenRTM-aistのメーリスで質問してくれた人がいて,どうやらバグだったみたいです.
と言うかサンプルプログラムなのに誰も動作確認しようとしなかったのか,僕みたいに自分の使い方が間違ってると思い込んで報告しなかったのかどっちなんでしょうね?
これなら,WubiでOpenRTM-aistが使えないのもバグかも.
とりあえず,今回のプログラムとC++版のConsoleInCompとConsoleOutCompを使うと,0を入力した後しかConsoleInCompの数字の入力が受け付けなくなり,1を入力した時しかConsoleOutCompのInportから入力された値が表示されなくなります.
今回作成したプログラムのポイントは
CorbaConsumer<OpenRTM::ExtTrigExecutionContextService> ec0;
CorbaConsumer<OpenRTM::ExtTrigExecutionContextService> ec1;
ec0.setObject(ExecutionContextListIn[0]);
ec1.setObject(ExecutionContextListOut[0]);
ec0->tick();
ec1->tick();
です.
tick()で実行できるみたいです.
PeriodicExecutionContext,ExtTrigExecutionContex以外では,OpenHRP3のコントーラーに使う SynchExtTriggerEC,ARTLinux用実行コンテキストARTExecutionContextがあるみたいですね.
rtc.confは他にも設定できる項目はありますが,だいたいOpenRTM-aistの公式HPの通りなので別にここでやらなくても・・・・という感じですね.
強いて言うなら,managerに関する設定と,corba.endpointとかはやってもいいかもしれないけど,managerは後でやりたい気分だし,corba.endpointは他のサイトで解説があるようなので別に触れなくても良いかなと思ったりですね.
次回はポートの動的な追加,削除をやりたいと思います.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
PR
前回の記事で実行周期の変更の仕方が分からないからRateChangedが呼び出せないとか書きましたが,自己解決しました.
RT System Editorは使わずにC++でRTCをアクティブにして実行周期を変更するプログラムを作成しました.
ここからダウンロードできます.
ポイントは
corbaConsumer<RTC::ExecutionContext> ec0;
ec0.setObject(ExecutionContextListIn[0]);
ec0->set_rate(rate);
です.
単純にRTCの実行コンテキストの周期をset_rate関数で変えてやってるだけです.
RT System Editorからはどうやって変えるのかわからなかったので誰か教えてください.
今日の記事はこれで勘弁してください.現在書きため中です.
明日こそはrtc.confをやります.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
RT System Editorは使わずにC++でRTCをアクティブにして実行周期を変更するプログラムを作成しました.
ここからダウンロードできます.
ポイントは
corbaConsumer<RTC::ExecutionContext> ec0;
ec0.setObject(ExecutionContextListIn[0]);
ec0->set_rate(rate);
です.
単純にRTCの実行コンテキストの周期をset_rate関数で変えてやってるだけです.
RT System Editorからはどうやって変えるのかわからなかったので誰か教えてください.
今日の記事はこれで勘弁してください.現在書きため中です.
明日こそはrtc.confをやります.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
と言うわけで,一日一回更新すると宣言してしまったのを早くも後悔気味なこの企画の第一回です.
今回はいろんなアクティビティを試してみます.
・・・・とは言ってもOpenRTM-aistの公式サイトにもっと詳しく書いてるので,そっち見た方が良いかも.
UMLとRTミドルウェアによるモデルベースロボットシステム開発によると,よく利用されるアクティビティは
それ以外のアクティビティとしては
今回は状態が遷移すると現在の状態を表示するRTCを作成して試してみました.
プログラムはここよりダウンロードできます.
まず,このコンポーネントを起ち上げてみました.
すると,
Initializeが呼ばれるのはRTCのライフサイクルの開始時のみです.
対してStartupはExecutionContext(EC)が実行を開始するときに呼ばれます.
ここで,System EditorでRTCのECをStopの状態にしてみます.
すると,
今はECが停止してあるためアクティブ化ができません.
続いてECをStartしてみます.
ここではECを起動しただけなのでInitializeは呼び出されません.
続いて,RTCをActiveにしてみます.
Activateはアクティブ化したときのみ呼び出されて,
Executeは周期的に呼ばれます.
StateUpdateはExecuteの後に呼ばれます.どういう状況で使えるかはよくわかりませんが.
ここで,今回作成したRTCはExecuteが5回以上呼ばれると
return RTC::RTC_ERROR;
としてエラー状態に遷移するようにしてあります.
このままRTCをアクティブにしたままにしておくと
エラー状態に遷移するとまず非アクティブにした後エラーとなるようです.
Abortingはエラー状態になった時のみ呼び出されて,Errorはエラー状態の時に周期的に呼び出されます.
ここで,Resetをすると
ここで,アクティブ状態からSystem Editorより非アクティブ状態にしてみます.
最後にExitしてみます.
Finalizeはライフサイクルの終了時のみ呼び出されます.
どうやら,ライフサイクルの終了→ECの終了の順みたいです.
あと,RateChangedが残っていますが,一体どうすればRTCを起ち上げたまま実行周期を変更できるのかわからないのでだれか教えてください(泣´Д`).
※自己解決しました.
次回はrtc.confをいぢくってみたいと思います.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
今回はいろんなアクティビティを試してみます.
・・・・とは言ってもOpenRTM-aistの公式サイトにもっと詳しく書いてるので,そっち見た方が良いかも.
UMLとRTミドルウェアによるモデルベースロボットシステム開発によると,よく利用されるアクティビティは
- onInitialize
- onActivated
- onExecuted
- onDeactivated
- onFinalize
それ以外のアクティビティとしては
- onStartup
- onShutdown
- onAborting
- onError
- onReset
- onStateUpdate
- onRateChanged
今回は状態が遷移すると現在の状態を表示するRTCを作成して試してみました.
プログラムはここよりダウンロードできます.
まず,このコンポーネントを起ち上げてみました.
すると,
- Initialize
- Startup
Initializeが呼ばれるのはRTCのライフサイクルの開始時のみです.
対してStartupはExecutionContext(EC)が実行を開始するときに呼ばれます.
ここで,System EditorでRTCのECをStopの状態にしてみます.
すると,
- Shutdown
今はECが停止してあるためアクティブ化ができません.
続いてECをStartしてみます.
- Startup
ここではECを起動しただけなのでInitializeは呼び出されません.
続いて,RTCをActiveにしてみます.
- Activated
- Execute
- StateUpdate
- Execute
- StateUpdate・・・・
Activateはアクティブ化したときのみ呼び出されて,
Executeは周期的に呼ばれます.
StateUpdateはExecuteの後に呼ばれます.どういう状況で使えるかはよくわかりませんが.
ここで,今回作成したRTCはExecuteが5回以上呼ばれると
return RTC::RTC_ERROR;
としてエラー状態に遷移するようにしてあります.
このままRTCをアクティブにしたままにしておくと
- ・・・Execute
- Stateupdate
- Deactivated
- Aborting
- Error
- Error・・・
エラー状態に遷移するとまず非アクティブにした後エラーとなるようです.
Abortingはエラー状態になった時のみ呼び出されて,Errorはエラー状態の時に周期的に呼び出されます.
ここで,Resetをすると
- ・・・・Error
- Reset
ここで,アクティブ状態からSystem Editorより非アクティブ状態にしてみます.
- ・・・Execute
- Stateupdate
- Deactivated
最後にExitしてみます.
- Finalize
- Shutdown
Finalizeはライフサイクルの終了時のみ呼び出されます.
どうやら,ライフサイクルの終了→ECの終了の順みたいです.
あと,RateChangedが残っていますが,一体どうすればRTCを起ち上げたまま実行周期を変更できるのかわからないのでだれか教えてください(泣´Д`).
※自己解決しました.
次回はrtc.confをいぢくってみたいと思います.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
卒論も出し終わったので新企画やります.
まあ,とは言ってもRTミドルウェアに関することですが.
上手いタイトルが思い浮かびませんが,RTミドルウェアの細かい機能をいぢくっていくのが目的です.
例えば,rtc.confの設定項目でも僕も使ったことがない項目が多いですし,勉強もかねてそういう細かい所を突いていきたいと思います.
でも,F#でゲームを作るとか,全く更新してないので,それを反省して今回の企画はネタが尽きるまで1日1回更新します.
・・・・あと,ロボットモデリングツールのバグの改善とかも今日からやる予定です.
あるかどうかわからんけど,RTミドルウェアコンテスト2011の準備もやらなくては.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
まあ,とは言ってもRTミドルウェアに関することですが.
上手いタイトルが思い浮かびませんが,RTミドルウェアの細かい機能をいぢくっていくのが目的です.
例えば,rtc.confの設定項目でも僕も使ったことがない項目が多いですし,勉強もかねてそういう細かい所を突いていきたいと思います.
でも,F#でゲームを作るとか,全く更新してないので,それを反省して今回の企画はネタが尽きるまで1日1回更新します.
・・・・あと,ロボットモデリングツールのバグの改善とかも今日からやる予定です.
あるかどうかわからんけど,RTミドルウェアコンテスト2011の準備もやらなくては.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
2ヶ月ぐらいは更新しないと前回の記事で書きましたが,RTMコンテストの賞状が届いたので載せときます.
去年はベストコンセプト賞を頂いたので満足はしていますが,今年はさらに上を狙うつもりで開発を行いたいと思います.
それとは全く無関係な話ですが,ROBOMEC2011の講演申し込み締め切りが今月の21日となってます.
僕も本職の方を発表・・・・するかなぁ?
多分,今回はすると思うので,岡山ではよろしくお願いします.
<追記>
完全に関係ない話ですが,この時期になったらB4はみんな土日かかわらず研究室に来ると思ってたよ・・・・・
そんなふうに考えてた時期が俺にもありました.
土日どころか平日でもあんまり見かけないんだけどね.
僕がSI2010に行ってて参加できなかったゼミでぼろくそにされた人がいるらしいけど,3週間ぐらい見ても無いしなぁ.
どんだけ余裕なんだ.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
去年はベストコンセプト賞を頂いたので満足はしていますが,今年はさらに上を狙うつもりで開発を行いたいと思います.
それとは全く無関係な話ですが,ROBOMEC2011の講演申し込み締め切りが今月の21日となってます.
僕も本職の方を発表・・・・するかなぁ?
多分,今回はすると思うので,岡山ではよろしくお願いします.
<追記>
完全に関係ない話ですが,この時期になったらB4はみんな土日かかわらず研究室に来ると思ってたよ・・・・・
そんなふうに考えてた時期が俺にもありました.
土日どころか平日でもあんまり見かけないんだけどね.
僕がSI2010に行ってて参加できなかったゼミでぼろくそにされた人がいるらしいけど,3週間ぐらい見ても無いしなぁ.
どんだけ余裕なんだ.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・