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上でのセンサフィードバックを使った制御 #284

Closed
snozawa opened this issue Aug 1, 2014 · 17 comments
Closed

Comments

@snozawa
Copy link
Contributor

snozawa commented Aug 1, 2014

hrpsys-simulator上でセンサフィードバックを使った制御を行おうとしているのですが、
センサフィードバックの項にかかるゲインを実機と同じ値にすると、振動的になります。

例えばrtc/Stabilizer/Stabilizer.cppですと、
https://github.com/fkanehiro/hrpsys-base/blob/master/sample/SampleRobot/samplerobot_stabilizer.py.in
がサンプルになっておりますが、
https://github.com/fkanehiro/hrpsys-base/blob/master/sample/SampleRobot/samplerobot_stabilizer.py.in#L33
の行の
stp1.k_tpcc_p=[0.2, 0.2]
がシミュレーション上でのZMP誤差のフィードバック係数で、実機だと
stp1.k_tpcc_p=[2.0, 2.0]
と大きめの値で発振することなく歩行等できて、実機と同じ値を
シミュレーションで使うとかなり振動的になります。

他にも、足にインピーダンス制御のようなことをためしても同様に発振するようです。

hrpsys-simulatorで何か設定が必要でしょうか。

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

@fkanehiro
Copy link
Owner

すいません、ここで実機とは何を指しているのでしょうか?

@snozawa
Copy link
Contributor Author

snozawa commented Aug 2, 2014

すいません、ここで実機とは何を指しているのでしょうか?

HRP2でためしております。
hrpsys-simulator上で、HRP2実機の体内制御系で使っているものと同様のhrpsys-base、Stabilizerのプログラムを実行したとき、
同じパラメータを用いると発振してしまいます。
もちろんロボット実機で最適なパラメータとシミュレータで最適なパラメータは同じにはならないと思いますが、
シミュレータではかなり小さいフィードバック係数(センサフィードバック項が無効に近い状態)にしないと
発振してしまうようでした。

@fkanehiro
Copy link
Owner

実機では関節がPD制御されているのに対して、シミュレーションでは(おそらく)ハイゲインモード(理想的な関節を模擬するモード)で駆動しているのが効いているのではと思います。
HRP-2の場合は足首のコンプライアンス要素もありますね。

@snozawa
Copy link
Contributor Author

snozawa commented Aug 4, 2014

はい、こちらではハイゲインモードでシミュレーションをしております。
ハイゲインモードでシミュレーションすると、加速度レベルまで関節指令が満たされるので、
そうすると力のシミュレーション結果がノイジーになりますでしょうか。

また、皆さんはこのあたりのシミュレーションは、ハイゲインモードでなくて
Torqueモード+PD制御でおこなわれてますでしょうか。

@fkanehiro
Copy link
Owner

はい、ノイジーというかピーキーな反応を示すので、ゲインはあげ辛くなる傾向になると思います。
こちらでは、実機の仕様(具体的にはロータイナーシャやギヤ比)が分かっているものについてはTorqueモード+PD制御を使っています。
ハイゲインはそれらのパラメータが必要ないのでお手軽なのですが、やはり実機との一致度で言うと劣りますので。

@snozawa
Copy link
Contributor Author

snozawa commented Aug 4, 2014

こちらでは、実機の仕様(具体的にはロータイナーシャやギヤ比)が分かっているものについてはTorqueモード+PD制御を使っています。

センサフィードバックを伴うシミュレーションも、torqueモード+PD制御ですと可能でしょうか。
ところで、ロータイナーシャ・ギア比等を考慮したPD制御は、どこかにサンプル等ございますでしょうか。
(OpenHRP3/samples/controllerのあたりでしょうか)

@fkanehiro
Copy link
Owner

OpenHRP3のPA10のサンプルが該当しますね。

@k-okada
Copy link
Contributor

k-okada commented Aug 4, 2014

これは,.xml のなかで上手く書けばOKという理解で正しいでしょうか?

On Mon, Aug 4, 2014 at 8:04 PM, fkanehiro [email protected] wrote:

OpenHRP3のPA10のサンプルが該当しますね。


Reply to this email directly or view it on GitHub
#284 (comment)
.

@fkanehiro
Copy link
Owner

え~っと、書くってなにを書くんでしょう?

@k-okada
Copy link
Contributor

k-okada commented Aug 4, 2014

あれ?

を,

みたいにすればOKと思っていたんですが,勘違いしていたみたいです.
こうできるようにするのは,hrpsys-simulatorを更新する必要がありますか?

On Mon, Aug 4, 2014 at 8:35 PM, fkanehiro [email protected] wrote:

え~っと、書くってなにを書くんでしょう?


Reply to this email directly or view it on GitHub
#284 (comment)
.

@fkanehiro
Copy link
Owner

あぁ、はい。トルク制御モードにするためにはその変更が必要です。

@snozawa
Copy link
Contributor Author

snozawa commented Aug 4, 2014

あれ? を,

ちょっと前ですが、これをTorqueにしてトルク指令っぽい挙動になるのは確認したことがあるので、
大丈夫そうに思います。

OpenHRP3のPA10のサンプルが該当しますね。

こちら、PA10Controller相当を他のModelLoaderでよんでロボットで使えるようにしたものを、
hrpsys-base/rtcに追加するのでよろしいでしょうか。

また、

実機の仕様(具体的にはロータイナーシャやギヤ比)

はどのあたりで考慮されておられるかお教え頂けますと助かります。
(プログラム中、etc/PDgain.datの数値をきめるとき、。。。etc)

@fkanehiro
Copy link
Owner

PA10ControllerとかSamplePDは1個のRTCで動くサンプルということで、いずれもファイルから関節角軌道を読むようになっているのですが、汎用性という観点からはデータポートから受けとるようにしておくのがよいですね。

ロータイナーシャ等についてはモデルファイルに値を書き込んでおけば、モデルをロードした際にその値がLinkに格納され、シミュレーション時に軸慣性が考慮されるようになっています。

@snozawa
Copy link
Contributor Author

snozawa commented Aug 5, 2014

ロータイナーシャ等についてはモデルファイルに値を書き込んでおけば、モデルをロードした際にその値がLinkに格納され、シミュレーション時に軸慣性が考慮されるようになっています。

初歩的なことでしたが,こちら存じ上げませんでした.
ありがとうございます.

PA10ControllerとかSamplePDは1個のRTCで動くサンプルということで、いずれもファイルから関節角軌道を読むようになっているのですが、汎用性という観点からはデータポートから受けとるようにしておくのがよいですね。

そうしますと,hrpsys-baseに追加ではなく,OpenHRP3のほうにPRをお送りする形でよろしいでしょうか.
(あとはModelLoaderから全自由度数などモデル情報を読み込む)

@fkanehiro
Copy link
Owner

ちょっと悩ましいところですが、OpenHRP3にSampleHGというのがあって、hrpsys-baseにHGcontrollerというのがあるのと関係としては対になるので、OpenHRP3の方は1個のRTCで動くサンプルということでそのままにしておいて、汎用的だけど中級者向けになるのは、hrpsys-baseに追加してはどうでしょうか。

@snozawa
Copy link
Contributor Author

snozawa commented Aug 5, 2014

なるほど,わかりました.
試せるサンプルを作成しましたら,hrpsys-base/rtcに追加してPRをだしてみます.

@snozawa
Copy link
Contributor Author

snozawa commented Aug 14, 2014

こちらPD制御をいれたもので、少しセンサフィードバックのゲインをあげられることを確認しましたので、closeにします。
ありがとうございました。

@snozawa snozawa closed this as completed Aug 14, 2014
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

3 participants