-
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
Update st transition bugs #1102
Conversation
…f whether the client program is mode changer or not (fkanehiro#1098)
…DE_IDLE=>MODE_ST) because the coordinates for ref_cog differs among st algorithms.
また、issueとは別にref_cogvelが遷移開始時にとんでしまうバグがあったので直しました。 |
Refer to this link for build results (access rights to CI server needed): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
マージされちゃいましたが、waitはif文の前でないと効果が無いように思います。
Guard guard(m_mutex); | ||
if ( transition_count == 0 && (control_mode == MODE_ST || control_mode == MODE_AIR) ) { | ||
std::cerr << "[" << m_profile.instance_name << "] " << "Stop ST" << std::endl; | ||
control_mode = MODE_SYNC_TO_IDLE; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これだと、transition != 0 のときに、やはりstopされないと思うのだけどもどうだろうか?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
waitはできるので問題ないと思うのですが、僕がそもそも問題を勘違いしてますか?
再現コードが2端末にわかれるのでかきにくいですが
start-stされてる状態で
- 端末1
(send *ri* :stop-st)
を実行してすかさず(遷移時間である2秒いない)
- 端末2
(send *ri* :stop-st)
をすると、
- このPR前:端末2のstop-stがSTが止まるのをwaitせずにすぐreturnしてしまう
- このPR後:ちゃんとwaitしてくれる
となります(テスト自体はpythonのコードでためしました)
上記ようなものが問題だと思ってましたが違うでしょうか。
再現コードを教えてください。
問題は、2回目のstop-stではなくて、airへの遷移で起こっていて、 違うのは、airへの遷移の場合、stop-stが一回も有効になっていないのでstが切れないこと。 以下、テストコードです。
|
… ST transition problem (fkanehiro#1098, fkanehiro#1102).
ありがとうございます、ようやくじょうきょうがわかりました。 |
#1098
のSTがきれないバグを修正しました。
直し方は
#1098 (comment)
で、STのモード遷移を行ったスレッドかどうかに関わらず遷移をwaitするようにしました。
よろしくお願いします。