-
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
ImpedanceControllerのパラメータ設定について #1169
Comments
I have a question about the ImpedanceController. PS. |
こちらの件、正確な答えを持っているわけではないですが、おそらくコードを拡張して、少なくとも対角要素のパラメータを与えられるようにしなければ実現できないように思います。それができるようになったら嬉しいと思う1人です。 |
こちら遅くなりました。
こちらの変更が必要かと思います(中の計算もそれに合わせて若干変更がいるかもしれません)。 |
但馬さん、野沢さん、お忙しいところコメントと情報をありがとうございます。 #野沢先生、ご紹介していただいたような元になっているコードが既にあるならば、 |
今まで、独立に与えなくても研究室内で特に問題なかった(あるいは優先度が低かった)と思うのですが、何故でしょう.?特に必要がなかったから?
…--
◉ Kei Okada
2017年7月4日 3:58 hiroonda <[email protected]>:
但馬さん、野沢さん、お忙しいところコメントと情報をありがとうございます。
各軸独立にパラメータ値を与えたいならば拡張が必要で、
M, D, Kについてインタフェースを変更する方向で進めるのがよいということですね。
#野沢先生、ご紹介していただいたような元になっているコードが既にあるならば、
#参考にしたほうがよいようにも思いますが、どうしたらよいでしょう。
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#1169 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAeG3MR9zl61fNIo_JN2n1A3y_hy3K3dks5sKTnugaJpZM4OEbBx>
.
|
岡田先生、コメントをありがとうございます。 |
FYI @sshige |
産総研の音田です。
ImpedanceControllerのパラメータ設定について質問があります。
インピーダンス制御のパラメータ、M, D, Kについて各軸異なる値を与えたいと考えた時に、
今の形ではM,D,K独立に値を与えられないように見えます。
(誤解しているかもしれませんが、下記のようになっているので、ある程度はできると言ってよいと思いますが、M, D, Kを行列で与えるようにはできないように見えます。)
http://wiki.ros.org/rtmros_nextage/Tutorials/Adding%20feedback%20control#Passing_Parameters_to_the_Impedance_Controller
を見ると、力のForce gain (x,y,z).に各軸異なる値を与えられるならば、
対角行列M, D, Kに対するパラメタをそれぞれm, d, kとして、(WikiではM_p, D_p, K_p等)
それぞれの軸の値を等価的には、
下記のように異なる値を設定したものと同じにできると言ってもよいと思います。
すなわち、
force gainをx, y, zで表さずに誤解のないようにwx, wy, wzと書きなおして、
ゲインを各軸異なる値に設定すれば、
M=[m/wx, m/wy, m/wz]
D=[d/wx , d/wy, d/wz]
K=[k/wx, k/wy, k/wz]
と設定するのと等価にはできるのかもしれません。
でも、これですとM, D, Kを独立には変えられないように見えます。
もし上記の認識が正しいとすると、
等の作業が必要となると思います。
その際、hrpsys-base/rtc/ImpedanceController/ImpedanceController.cppの、
// ref_force/ref_moment and force_gain/moment_gain are expressed in global coordinates.
vel_p = ( param.force_gain * (abs_forces[it->first] - param.ref_force) * m_dt * m_dt
+ param.M_p * ( vel_pos1 - vel_pos0 )
+ param.D_p * ( dif_target_pos - vel_pos0 ) * m_dt
+ param.K_p * ( dif_pos * m_dt * m_dt ) ) /
(param.M_p + (param.D_p * m_dt) + (param.K_p * m_dt * m_dt));
vel_r = ( param.moment_gain * (abs_moments[it->first] - param.ref_moment) * m_dt * m_dt
+ param.M_r * ( vel_rot1 - vel_rot0 )
+ param.D_r * ( dif_target_rot - vel_rot0 ) * m_dt
+ param.K_r * ( dif_rot * m_dt * m_dt ) ) /
(param.M_r + (param.D_r * m_dt) + (param.K_r * m_dt * m_dt));
のあたりを変更することになるかと思いますが、正しいでしょうか。
もし誤解しておりましたらすみませんが、どのように考えればよいかも含めて、
ご教示いただけると助かります。よろしくお願いいたします。
The text was updated successfully, but these errors were encountered: