ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
RTMコンテストの準備が何もできてない・・・・
と言うより,アイデアがない.
ちょっと前にやったRTMとxPC-Targetを組み合わせるのは,あんまり需要なさそうだしなぁ.
それに,ターゲット側のPCでRTM動かしてるわけじゃないし.
全然アイデアがないものだから,ニンテンドー3DSでRTMが動かないかとかよく分からんこと考えてみたりしてるところです.
それはさておき,今回はコンフィギュレーションパラメータのコールバックをやります.
サンプルはここからダウンロード出来ます.
C++版,Python版を同梱してます.
僕はJavaではHello Worldレベルのことしかできないので知りません.
まず,コンフィギュレーションのコールバックに何があるかというと,
OnUpdateCallback
OnUpdateParamCallback
OnSetConfigurationSetCallback
OnAddConfigurationAddCallback
OnRemoveConfigurationSetCallback
OnActivateSetCallback
があります.
サンプルプログラムを省略して,コールバックを実装するのに最低限のコードだけ抜き出すと,
class MyOnUpdate
: public RTC::OnUpdateCallback
{
public:
MyOnUpdate()
{
}
virtual void operator()(const char* config_set)
{
}
};
・・・・
this->m_configsets.setOnUpdate(new MyOnUpdate(this));
のようにしてコールバックを設定します.
OnUpdate以外も同様です.
データポートのコールバックとほぼ同じです.
ちなみに,m_configsetsはコンフィギュレーション情報管理オブジェクト(ConfigAdminクラス)で,ConfigAdmin.hにコールバックの定義があります.
では,今回のサンプルで動作を確認します.
コールバックは全て実装していて,コールバックが呼ばれると実行周期がコンフィギュレーションパラメータIntervalに設定されます.
・・・本当はonXXX()関数以外でコンフィギュレーションパラメータを使うのは良くないらしいのですが,別に今回のサンプルに実用性は求めてないのでスルーします.
また,アクティブ,非アクティブに遷移したときにコンフィギュレーションパラメータを勝手に変更します.
まず,RTCを起動すると,
defaultはコンフィギュレーションセットで,RTSEのコンフィギュレーションのスペースの左側に出てるやつです.
続いて,RTCをアクティブにしてみます.
この時のプロパティはsetProperty("Interval", "1")で,Intervalは1000から1に設定されるはずです.
そして,m_configsets.activateConfigurationSet("default")でコンフィギュレーションセットがアクティブ化された時にOnSetActivateSetが呼ばれます.
見ても分かるとおり,この瞬間はまだコンフィギュレーションパラメータは変更されてません.
さらに,m_configsets.update("default","Test")とすることで,もう一つのコンフィギュレーションパラメータTestのみをアップデートします.
案の定,Intervalの方は1000のままです.
しかし,ここでm_configsets.update("default")としてコンフィギュレーションセットごと更新することで,Intervalが1に設定されました.
ちなみに,このコンフィギュレーションセットごと更新は別にm_configsets.update("default")が無くても実行されます.コンフィギュレーションセットがアクティブ化された状態でRTCのアクティビティが呼び出されると更新される・・・とは思うのですが定かではありません.
次にアクティブ化したままRTSEでIntervalを変更してみます.
そして,次のonExecuteの後に更新が行われる・・・・かどうかは定かではありません.自分で調べてください.
続いて,非アクティブにしてみます.
今回は,m_configsets.update("default","Interval")で値が更新されてることが確認出来ます.
続いて,RTSEでコンフィギュレーションセットを追加します.
上の方で出てきた図の赤枠で追加を押した後,右の適用を押すと,
さらに,追加下セットを削除すると,
最後にコンフィギュレーションパラメータを追加して適用を押すと,
基本的に,パラメータの変更はRTCのアクティビティが呼び出されるまではコンフィギュレーションパラメータが外で変更されても反映されませんが,コールバックを使う事でいろいろできるんではないでしょうか?
今日はこの辺にしといてあげます.
次回はcoilでもう一回遊んでみます.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
と言うより,アイデアがない.
ちょっと前にやったRTMとxPC-Targetを組み合わせるのは,あんまり需要なさそうだしなぁ.
それに,ターゲット側のPCでRTM動かしてるわけじゃないし.
全然アイデアがないものだから,ニンテンドー3DSでRTMが動かないかとかよく分からんこと考えてみたりしてるところです.
それはさておき,今回はコンフィギュレーションパラメータのコールバックをやります.
サンプルはここからダウンロード出来ます.
C++版,Python版を同梱してます.
僕はJavaではHello Worldレベルのことしかできないので知りません.
まず,コンフィギュレーションのコールバックに何があるかというと,
OnUpdateCallback
OnUpdateParamCallback
OnSetConfigurationSetCallback
OnAddConfigurationAddCallback
OnRemoveConfigurationSetCallback
OnActivateSetCallback
があります.
サンプルプログラムを省略して,コールバックを実装するのに最低限のコードだけ抜き出すと,
class MyOnUpdate
: public RTC::OnUpdateCallback
{
public:
MyOnUpdate()
{
}
virtual void operator()(const char* config_set)
{
}
};
・・・・
this->m_configsets.setOnUpdate(new MyOnUpdate(this));
のようにしてコールバックを設定します.
OnUpdate以外も同様です.
データポートのコールバックとほぼ同じです.
ちなみに,m_configsetsはコンフィギュレーション情報管理オブジェクト(ConfigAdminクラス)で,ConfigAdmin.hにコールバックの定義があります.
では,今回のサンプルで動作を確認します.
コールバックは全て実装していて,コールバックが呼ばれると実行周期がコンフィギュレーションパラメータIntervalに設定されます.
・・・本当はonXXX()関数以外でコンフィギュレーションパラメータを使うのは良くないらしいのですが,別に今回のサンプルに実用性は求めてないのでスルーします.
また,アクティブ,非アクティブに遷移したときにコンフィギュレーションパラメータを勝手に変更します.
まず,RTCを起動すると,
- OnUpdateCallback default
- OnUpdateCallback default
defaultはコンフィギュレーションセットで,RTSEのコンフィギュレーションのスペースの左側に出てるやつです.
続いて,RTCをアクティブにしてみます.
- OnSetConfiguration default
- OnSetActivateSet default
- Interval: 1000
- OnUpdateParamCallback dafault Test
- Interval: 1000
- OnUpdateCallback default
- OnUpdateCallback default
- Interval: 1
- Test: 0
- Interval: 1
- Test: 0
- ・・・・
この時のプロパティはsetProperty("Interval", "1")で,Intervalは1000から1に設定されるはずです.
そして,m_configsets.activateConfigurationSet("default")でコンフィギュレーションセットがアクティブ化された時にOnSetActivateSetが呼ばれます.
見ても分かるとおり,この瞬間はまだコンフィギュレーションパラメータは変更されてません.
さらに,m_configsets.update("default","Test")とすることで,もう一つのコンフィギュレーションパラメータTestのみをアップデートします.
案の定,Intervalの方は1000のままです.
しかし,ここでm_configsets.update("default")としてコンフィギュレーションセットごと更新することで,Intervalが1に設定されました.
ちなみに,このコンフィギュレーションセットごと更新は別にm_configsets.update("default")が無くても実行されます.コンフィギュレーションセットがアクティブ化された状態でRTCのアクティビティが呼び出されると更新される・・・とは思うのですが定かではありません.
次にアクティブ化したままRTSEでIntervalを変更してみます.
- ・・・・
- Interval: 1
- Test: 0
- Interval: 1
- OnSetConfiguration default
- OnSetActivateSet default
- Test: 0
- Interval: 1
- OnUpdateCallback default
- OnUpdateCallback default
- Test: 0
- Interval: 2
- ・・・・・
そして,次のonExecuteの後に更新が行われる・・・・かどうかは定かではありません.自分で調べてください.
続いて,非アクティブにしてみます.
- ・・・
- Test: 0
- Interval: 2
- OnSetConfiguration default
- OnSetActivateSet default
- Interval: 2
- OnUpdateParamCallback dafault Interval
- Interval: 800
- OnUpdateCallback default
- OnUpdateCallback default
- Interval: 800
今回は,m_configsets.update("default","Interval")で値が更新されてることが確認出来ます.
続いて,RTSEでコンフィギュレーションセットを追加します.
上の方で出てきた図の赤枠で追加を押した後,右の適用を押すと,
- OnAddConfigurationAdd (追加したセットの名前)
- OnSetActivateSet default
さらに,追加下セットを削除すると,
- OnRemoveConfigurationSet (追加したセットの名前)
- OnSetActivateSet default
最後にコンフィギュレーションパラメータを追加して適用を押すと,
- OnSetConfiguration default
- OnSetActivateSet default
基本的に,パラメータの変更はRTCのアクティビティが呼び出されるまではコンフィギュレーションパラメータが外で変更されても反映されませんが,コールバックを使う事でいろいろできるんではないでしょうか?
今日はこの辺にしといてあげます.
次回はcoilでもう一回遊んでみます.
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・
PR
この記事にコメントする