Skip to content
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

hrpsys-simulatorなどの関節トルクについて #1202

Open
snozawa opened this issue Sep 4, 2017 · 3 comments
Open

hrpsys-simulatorなどの関節トルクについて #1202

snozawa opened this issue Sep 4, 2017 · 3 comments

Comments

@snozawa
Copy link
Contributor

snozawa commented Sep 4, 2017

関節トルクについて質問があります。
(hrpsys-simualtorを使っている点、および中身に関してはopenhrp3/choreonoid双方に関連する質問になりそうでしたので、こちらに失礼します)

hrpsys-simulatorで全部の関節をTORQUEモードで実行してシミュレーションするときに、
(openhrp3プロジェクトファイルに記載したら追加される)JointTorqueのInPort/OutPortは
何のトルクとなっているかという点について質問がございます。

値を見ると、関節トルク(リンク側最終出力のトルク)でなく、(ものによって違うとは思いますが)100倍くらいオーダが違う大きい値がはいっているようでした。

  • 関節トルク(joint->u)は、リンク側の最終出力トルクでなく、モータ側の入力トルクのようなものになりますでしょうか(かもしくは、gearRatio, rotoInertiaのかけ合わさった何かしらの値でしょうか)
  • もし上記があっている場合、リンク側の最終出力トルクを実測トルクとして取得する方法はございますでしょうか。
  • TORQUEモードの場合、指令トルクと出力トルク(つまり、InportのトルクとOutPortのトルク)は同じ値がはいっているという理解でよろしいでしょうか。

よろしくお願いいたします

@fkanehiro
Copy link
Owner

いずれも関節のトルク(Link::u)となっています。
https://github.com/fkanehiro/hrpsys-base/blob/master/lib/util/PortHandler.cpp#L162
https://github.com/fkanehiro/hrpsys-base/blob/master/lib/util/PortHandler.cpp#L178
100倍くらいオーダが違うというのは何と何を比較した場合の話になりますでしょうか?

@snozawa
Copy link
Contributor Author

snozawa commented Sep 5, 2017

(A) 軌道計画時の関節トルク
(B) シミュレーションの力計測値・ロボット状態から逆動力学で求めたトルク
(C) hrpsys-simulatorのトルクのポート(Link::u)のトルク

などをそれぞれ比較しました。
(A)と(B)はだいたい一致しておりましたが、(C)が違ってるようでした。

たとえば、一歩時間0.45[s]の歩行シミュレーションで
(B)の結果
actual-tq-from-ee-force
(C)の結果
act-tq
関節エラー値
error-ja
で、この例では(B)と(C)が概ね4倍程度違ってそうでした。
関節エラーが大きくなるときにトルクが増えているようで、この例でなくジャンプのような動作では
より大きい違い(ケタが違う)になってました。
また、PDゲインとこのエラー値を掛け合わせたものは(C)とあってるようでした。

なので、(C)のシミュレータから得られるLink::uの値はPDサーボの値がそのままはいっているようで、
関節角度エラーが大きくなると大きいようでした。

またこのシミュレーションは、sample1_bush.wrlで関節トルクモード、足にはブッシュありでおこなっておりました。
(B)での計測力は、ブッシュの奥(ブッシュよりも本体側)なので、もしかしたらこれも関係ありますでしょうか。

@fkanehiro
Copy link
Owner

はい、トルク制御モードの場合、Link::uは外から与えたトルク指令そのものになりますね。
(B)の計算がリジッドな足首で、力センサから得た力が床から足平に作用している力として計算しているなら、それなりの差を生む原因にはなるのではないでしょうか。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants