-
Notifications
You must be signed in to change notification settings - Fork 43
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
オドメトリをおかしくせずに2足から4足に移行する方法 #213
Comments
オドメトリがおかしくならないようにするのに、どこを修正すべきかは、いくつか候補があるように思います。
|
さっき口頭ではなしていて、
がいまのところの候補です |
ちょっとABCにも修正が必要な気がしてきた |
以下を試してみてください。 hrpsys-baseのfkanehiro/hrpsys-base#1065 のbranchを使って、以下を試してみてください。
stop-auto-balancerしたときにstateHolderが送ってる値に動機するようになるのですが、 |
@mttamtam |
@snozawa さん、 @YoheiKakiuchi さん、 先ほど見ていただいたときの、readlineは、このように入っていて、
都度のrtprintの結果は(こんなコマンドがあるのですね)、 |
報告ありがとう。
くらいの分量で際限するコードができるか作って見てください。 |
すいません、遅くなりましたが、 |
:angle-vector-sequence-fullのrpy引数は でなく |
ほとんど挙動が変わりませんでした。 :rpy (list (reverse (car (send cc :rpy-angle))))のとき、 tamura@denali: reverseしてないとき |
なるほど。ここだけが問題ではなかったっぽいね。 odomはbaseTformOutの値をちょっとかえてだしてるかもしれないので。 |
4足歩行でないパターンで見てみたけど、angle-vector-sequencce-fullを送るとabcのbaseTformは変わっているようだ。 なので、見てみるといいのは、
を送るまえにprintしてみる。 |
あとは,baseTformは適切にでてるけど,odomの計算部分で何か違ってる,というのもありそうと思いました.
を試してみると良いと思いました. こちら,すいません,まだ僕自身は,自分の手元では試せてないです |
テスト関数に
を定義してみて、 ところで、問題は何だっけ?トピックの/odomがうごいちゃうこと?それともtfの/odomがうごいちゃうこと? |
一番最初の目標は、トピックの/odom (これは、位置姿勢は abc.baseTformOut そのまま)が、auto-balancerのon/off、4足歩行のシーケンスで連続性を保つこと。 それが、保たれている前提で、tfの/odomがずれるようなら、footcoordsを修正することになると思う。 |
パット見のコードや、立っている時の値を見るに、トピックの/odomとtfの/odomに差はないように見える。 tfの/odomまで、思ったとおりの連続性を保っていて、rvizの表示がずれるようなら、 |
hrpsysとhrpsys_ros_bridgeを最新にしてビルドして試してみましたが、やはりauto-balancerを切ったときにbaseTformが戻ってしまいます(snozawaさんの方法を使ってもirtviewer内で原点に戻る)。 fix-leg-to-coordsしたあと https://gist.github.com/mttamtam/b43f062b45a0f10a14309f82e19865ef |
あれ、手元でhrpsys-simulatorでやったら値が上記のときにかわらなかった。 |
すいません、先程のはカッコが抜けててそのような挙動にこちらでもなったので、修正しました。 |
snozawaさんのおっしゃるとおりで、hrpsys-simulatorだと確かにauto-balancerを切ったときに最初の姿勢に戻らないでとどまりますね。。。。 |
すいません。choreonoidで使っているconf/モデルに問題があります。 モデルは、ハンドの関節についてjaxonと異なるので、angle-vectorの長さが違ってしまいます。
|
修正ありがとうございます。今度はchoreonoidでもうまくいくようになりました。 |
|
研究会で言っていた問題点:
2足から4足に変化するとき、足先位置はずっと固定であることを使うと変にならないだろうという気がします。 というふうに考えております。 |
そもそも今いきなり4脚モードで開始して4脚歩行できてるのかな? |
まったくコードを見ていないヤマカンだけど、footstepがbaseTform相対でいい感じになるのが入っていない go-posした時にhrpsysのconsoleにステップ表示されると思うのだけど、それ見たらなにか分かることあるかな? |
anglevector-sequence-fullでデータを送っているけれど、 |
seqがqRefを出してしまってダメだった。 |
これなんでしょう?
くらいがほぼマストなので,これらは同期したものをいっきに送る必要があります. set-base-pos, set-base-coordsなどは,他に必要な状態量と同期させられず整合性がとれないので, |
今回の件では、STやABCは止めている状態なので、とにかくshからbasepos/rotが出ればいいと思っている。 それで、set-base-posを使ったが、seqからbaseposのみの出力ではなく、qRefも出力された。よく分かっていないがこれはseqの仕様なのだろう。 |
おそらく再度どちらかをいれたら問題がでてくるので、やはり個別に状態量を送るのはおすすめでなく、 start-jsk/rtmros_common#988 また、今回のようにst, abcのstop/startでの切り替わりでの用途なので、 ですので、将来的にはこの遷移のためのangle-vector-sequence-fullのeusのコードが0になります。 |
ここのコード自体はそんなに問題だと思っていないのだけど、別件?で、 odomの初期位置は理論上は足元(end-coordsと同じ高さ)である必要はないはずですが、 |
了解です.
をしていただくのが良いと思います. |
(メモ)
|
@orikuma さんのSLAMを継続的に2足歩行の状態と4足歩行の状態を行き来しながら使えるようにしたいです。
いま、普通の2足の姿勢から4足の姿勢に移行するときに、hrpsys_ros_bridge_jvrcのgait_controller.lを使っていて、
https://github.com/start-jsk/rtmros_choreonoid/blob/master/hrpsys_ros_bridge_jvrc/euslisp/gait_controller.l#L363-L400
腰を下ろした姿勢の状態で、一度stとautobalancerを切ってから四足の姿勢になり、そこでstとautobalancerをもう一度入れる、というふうになっていますが、こうすると途中でオドメトリが狂う?(少なくとも、octomapは乱れる)みたいで、オートバランサを入れっぱなしで姿勢変化ができたらうれしいのですが、なかなかうまくいかないです。
https://github.com/mttamtam/rtmros_choreonoid/blob/gctemp/hrpsys_ros_bridge_jvrc/euslisp/gait_controller.l#L363-L407
例えば、こんな感じに書き換えるとシミュレータでは姿勢変化はうまく行くが、go-posしようとすると、手のcoordsがおかしくなります。
@snozawa さん、先ほど口頭で教えていただいたのにまたわからなくなってしまったのですが、touch-down-poseの状態で、一度オートバランサを切る前に腰の座標をもらってから、それをどこに入れるんでしたっけ?
The text was updated successfully, but these errors were encountered: