-
Notifications
You must be signed in to change notification settings - Fork 88
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
servoのアラームでemergencysignalを出したい #490
Comments
この件に関連しまして、DataLoggerの以下の部分のコードはどのような動作をするように意図されているのでしょうか?
|
通常DataLoggerは他のRTCと直列実行して、他のRTCのECで駆動されていると思います。 |
DataLoggerをDataLogger自身のECで走らせる/走らせない,の違いは ◉ Kei Okada 2015-03-10 7:36 GMT+09:00 Fumio KANEHIRO [email protected]:
|
非常信号で自動的にログを取りたければ走らせる、別に取らなくてよければ走らせない、でしょうか。 2015年3月9日 18:47 Kei Okada [email protected]:
|
ありがとうございます。 |
だとすると,常に別ECで走らせておけばいい気がしますが,それだとやはり取りこぼしがあったりする,とかあるんでしょうか? ◉ Kei Okada On Wed, Mar 11, 2015 at 4:30 PM, Yohei Kakiuchi [email protected]
|
?別ECというのはどれのことだろう? |
すいません.別ECというのは
◉ Kei Okada On Sat, Mar 14, 2015 at 4:02 PM, Fumio KANEHIRO [email protected]
|
常に走らせておいて問題ないと思いますよ。 |
#510 でクローズでしょうか? |
すいません.これ,テストに通っていないは,純粋にこのPRを入れるとプログラムが動かないのですが,具体的には 1)上のコメントでは,
と書いてありますが,PR(https://github.com/fkanehiro/hrpsys-base/pull/510/files)では,
どちらがただしいでしょうか?僕の環境だと,
|
あと, hrpsys-base/python/hrpsys_config.py Line 444 in 6c6205c
の
のrtcListにself.logは入っていていいのでしょうか? |
おっとすいません。
をself.logをserializeComponent()した後で、両方やるのが正しいと思います。 Line 437 in 6c6205c
ログを取りながら、エマー信号でログを自動的に保存するには、ロガーをserializeComponent()して |
うーん.だとすると,2行目から帰ってこないんですが,,,なにかちがうんですかねぇ. ◉ Kei Okada 2015-04-05 22:09 GMT+09:00 Fumio KANEHIRO [email protected]:
|
https://github.com/fkanehiro/hrpsys-base/blob/master/python/rtm.py#L107
となっていますが, |
serializeした後は、DataLoggerのself.ecは他のRTCのecになっているはずで、ここはこのままで 以下のようなスクリプトで試す限りは返ってこなくなる、ということはなさそうです。 import rtm rtm.nsport = 2809 ms = rtm.findRTCmanager() ms.load("NullComponent") ms.load("DataLogger") rtm.serializeComponents([np, dl]) np.start() dl.owned_ecs[0].start() |
うーん.こちらの環境だと,今度はこのプログラムだと,
実行したプログラムは以下
ちなみに,VERBOSEにしてとったログを |
を立ち上げています |
NullComponent0のECのタイプがSyncExtTriggerになっているけれども、トリガが 2015-04-05 23:12 GMT+09:00 Kei Okada [email protected]:
|
トリガはどうやって送るのでしょうか? |
rtcdの時は |
ちがいますね.https://code.google.com/p/hrpsys-base/issues/detail?id=14
としました. ところで,この場所はいまsetupLoggerの最後ですが,ここでいいでしょうか(あるいはここでないといけないでしょうか)activateCompsの最後でもいいかなとも思ったんですが. |
その変更だとシミュレーション時はエマーでログを保存する、ということはできませんがそれでいいでしょうか。 場所についてはロガーのセットアップとも言えるし、コンポーネントをアクティベートしてるとも言えるし、ほぼ同じ場所で呼んでるので、まぁお好みで。serializeComponents()の後であればよいです。 hrpExecutionContextとかSyncExtTriggerとかは実時間スレッドを模擬するためのもので、システムの中で使う数は(こちらでは)限られているので、こちらではrtc.confでこれらの実行コンテキストを指定することはせずに、serializeComponentsの引数のコンポーネントリストの最初のコンポーネントに対応するxxx.confでこれらの実行コンテキストを指定するようにしています。どこにも紐付けられてない実行コンテキストを作ったり、コンポーネントに紐付けられている実行コンテキストを作りなおしたりする手段がないようなので。 |
相変わらずわかっていなくてもうしわけないですが,いまみてみると,SampleRobot.RobotHardware.confは(serializecomponentnの最初のRTCはRobotHardware)
になっていて,実行時の また,SampleRobot.RobotHardware.confに何も書かず, ◉ Kei Okada 2015-04-06 8:09 GMT+09:00 Fumio KANEHIRO [email protected]:
|
あと,どのケースでも owned_ecsは ◉ Kei Okada 2015-04-06 11:38 GMT+09:00 Kei Okada [email protected]:
|
う〜む、いまいちどういう使い方をしようとしているのかがわからないのですが、 実行コンテキストのタイプを指定しないとデフォルトの実行コンテキストで作られるわけですが、 2015年4月6日 11:38 Kei Okada [email protected]:
|
どの実行コンテキストもExtTrigExecutionContextServiceを継承しているようなので見分けつかないですね。 2015年4月6日 11:40 Kei Okada [email protected]:
|
すいません.実行は
としてあるのは何も効果がなく, |
シミュレーション時にSyncExtTriggerECが必要かどうかは、シミュレーション世界の時刻に同期した処理(実世界でいうところのリアルタイム処理)が必要か否か次第ですが、普通は少なくとも関節の制御には必要かと思います。 で、SyncExtTriggerECの使用をrtcdの引数またはrtc.confで指定するか、特定のコンポーネントのconfファイルで指定するかは動かすECの内SyncExtTriggerが多いか通常のPeriodicが多いか次第でしょうか。 今回のケースですとおそらく、リアルタイム(SyncExtTrigger)で動くEC(SampleRobotが持っているもの)と非リアルタイムで動くEC(DataLoggerが持っているもの)が1個づつぐらいしかないと思うのでどちらでもよくて、これまでrtcdの引数でSyncExtTriggerを指定していたのであれば、それは変えずにDataLogger.confを作ってPeriodicの使用を指定してはどうでしょうか。 2015年4月6日 12:08 Kei Okada [email protected]:
|
ありがとうございます. |
ログ自体は他人のecを使って取るので、変数名はちょっと変えた方がいいかもしれませんが、まぁ start()等、いくつか無限に返ってこなくなる可能性のある関数がありますが、これは凶悪なので 2015年4月6日 16:55 Kei Okada [email protected]:
|
なるほど.log_use_non_serialize_ec ? log_use_owned_ec ?とかでしょうか. |
ネーミングセンスが無いんで、お任せします:-) 2015-04-06 17:09 GMT+09:00 Kei Okada [email protected]:
|
ありがとうございます.ようやくクローズできます. |
すいません。テスト環境で動いていないことが分かっていませんでした。 |
サーボのアラームでemergency signalを出したいのですが、
iob.hのservoアラームのビット定義[1] は12bit分されていて、servo alarmのmaskとshift [2] からは
16bitがmaskされており、ほかのshiftからも16bit 使えるように見えます。
この未定義の4bitのうち1ビットを SS_EMERGENCYとさせていただき、
RobotHardwareの checkemergency [3] か servo alarmをセット[4]しているところで
このビットが立っていたら、emergency signalを出すというようにしたいと考えております。
まずは、iob.hのアラームビット定義を追加して良いかと 、
そのアラームによってemergency signalを送るようにする変更について意見をお願いします。
[1] iob.hのservoアラームのビット定義(12bit)
https://github.com/fkanehiro/hrpsys-base/blob/master/lib/io/iob.h#L33-L46
[2] servo alarmのmaskとshift
https://github.com/fkanehiro/hrpsys-base/blob/master/idl/RobotHardwareService.idl#L9-L18
[3] checkemergency
https://github.com/fkanehiro/hrpsys-base/blob/master/rtc/RobotHardware/RobotHardware.cpp#L220
[4] servo alarmのセット
https://github.com/fkanehiro/hrpsys-base/blob/master/rtc/RobotHardware/RobotHardware.cpp#L289
The text was updated successfully, but these errors were encountered: