atlasでインピーダンス制御を入れると手が振動する
Closed this issue · 11 comments
hrpsysを使ったgazebo上のatlasシミュレーションで、atlas-interface.lの関数から
(send *ri* :start-impedance)
としてインピーダンス制御を入れてみたところ、手が激しく振動してしまいました。
KMDパラメータを変更して試してみたのですがやはり振動が止まらず、振動の中心も目標位置とは大きく離れています。
(send *ri* :start-impedance :rarm :force-gain #f(1 1 1) :moment-gain #f(0 0 0) :m-p 100 :k-p 100 :d-p 0)
とした場合と、(send *ri* :start-impedance :rarm :force-gain #f(1 1 1) :moment-gain #f(0 0 0) :m-p 0 :k-p 100 :d-p 0)
とした場合のgazeboや手のセンサ値のスクリーンショットを添付します。
Please increase :d-p
parameter, which corresponds to damping coefficient and restricts oscillation.
For more debug, please check the same codes on hrpsys-simulator
.
hrpsysを経由せずに力センサの値って読めるんでしたっけ?
-- ryohei
2014-06-18 17:09 GMT+09:00 Satoshi Iwaishi notifications@github.com:
hrpsysを使ったgazebo上のatlasシミュレーションで、atlas-interface.lの関数から
(send ri :start-impedance)
としてインピーダンス制御を入れてみたところ、手が激しく振動してしまいました。
KMDパラメータを変更して試してみたのですがやはり振動が止まらず、振動の中心も目標位置とは大きく離れています。(send ri :start-impedance :rarm :force-gain #f(1 1 1) :moment-gain #f(0
0 0) :m-p 100 :k-p 100 :d-p 0)とした場合と、(send ri :start-impedance :rarm
:force-gain #f(1 1 1) :moment-gain #f(0 0 0) :m-p 0 :k-p 100 :d-p 0)
とした場合のgazeboや手のセンサ値のスクリーンショットを添付します。
[image: atlas_impedance]
https://cloud.githubusercontent.com/assets/6835506/3311081/b152336e-f6bf-11e3-8f28-5ca1da100f58.png
[image: atlas_impedance_2]
https://cloud.githubusercontent.com/assets/6835506/3311082/b152db84-f6bf-11e3-9b2b-3ee3402d23e3.png—
Reply to this email directly or view it on GitHub
#74.
hrpsysを経由せずに力センサの値って読めるんでしたっけ?
Yes, you can get sensor information by
rostopic echo /atlas/atlas_state
Please check following pages:
http://gazebosim.org/wiki/DRC/UserGuide
https://bitbucket.org/osrf/drcsim/src/060fccdc7a7219112b07d8d69957492359f96a9e/atlas_msgs/msg/AtlasState.msg?at=default
gazebo上のロボットは,自己干渉がないかのように振る舞い
手先が自身の胸にめり込むということが起きるのですが,
センサ情報はめり込んだ通りの値(激しく振れる値)が返ってくる
ということが分かりました.
結局,インピーダンスのパラメータを調整したら
正常にインピーダンスを使えるようになりました.
reset-manip-poseで以下のようにしてimpedanceを開始すると使えます.
(send *ri* :set-impedance-controller-param :rarm :m-p 200 :d-p 2000 :k-p 2000)
(send *ri* :start-impedance :rarm)
これまでは,
デフォルトのパラメータでインピーダンスをスタートして
手先が体にめり込んでからパラメータ調整していたのですが,
めり込んだ時点でセンサ情報が激しく振動しているので
パラメータ調整の意味がないという感じでした.
(send *ri* :set-impedance-controller-param :rarm :m-p 200 :d-p 2000 :k-p 2000)
(send *ri* :start-impedance :rarm)
で振動しなくなりました。
ありがとうございます。
そのパラメータをatlas-interface.l の中にデフォルト値でセットしておくのがいいかな.
On Tue, Jul 1, 2014 at 12:35 PM, Satoshi Iwaishi notifications@github.com
wrote:
(send ri :set-impedance-controller-param :rarm :m-p 200 :d-p 2000 :k-p 2000)
(send ri :start-impedance :rarm)で振動しなくなりました。
ありがとうございます。—
Reply to this email directly or view it on GitHub
#74 (comment)
.
思いつく方法は2つあって
(send *ri* :start-impedance)
としたときに(send *ri* :start-impedance :m-p 200 :d-p 2000 :k-p 2000)
となるように引数のデフォルト値を設定する(atlas-init-ex)
などの初期化関数でimpedance-controller-param的なものを上記の値に設定する
といったところですが、
1の方法だとパラメータをセットしてからスタートするのと同じ挙動をするのかどうか心配です。(先日数回試した感じだと、スタート時にパラメータを指定する方法だとたまにうまくいかない印象がある。)
2の場合、どのようにすればパラメータ設定だけをできるのか分かりません。((send *ri* :set-impedance-controller-param)
は、実行した時点でインピーダンス制御が始まってしまっている感じがする。)
どのようにするのがよいでしょうか?
1でいいんじゃない?
うごかなかったらhrpsys-ros-bridge共通の問題なので
2の場合、どのようにすればパラメータ設定だけをできるのか分かりません。((send ri :set-impedance-controller-param)は、実行した時点でインピーダンス制御が始まってしまっている感じがする。)
startとsetをわけるのは
fkanehiro/hrpsys-base#232
で議論されており、すこしまっていただければ修正します。