-
Notifications
You must be signed in to change notification settings - Fork 0
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
パラメータの変更箇所の決定 #1
Comments
以下で良いでしょうか?
|
effort_limit=300,velocity_limit=100.0,がunitree.pyのにおける変更の該当箇所になるのですが膝関節だけを変更しようとしてもlegsの項目の中に「hip_yaw_joint、hip_roll_joint、hip_pitch_joint」、「torso_joint」、「knee_joint」があるのでこのままでは腰や足の付け根の値も同時に変わってしまうことになるため、膝関節だけというのは難しいかもしれません。
|
技術的な問題で妥協しましたというのは,あまり筋の良くない議論になってしまいます. |
unitree.pyのG1_CFGを以下のように変更しました。変更点としては膝関節をlegsの項目から分け、上半身の方もURDF上のトルクと角速度が腕と手で異なるパラメータとなっていたのでそちらも分けました。またG1のパラメータの値を全てURDF準拠の値とし、このパラメータで一旦整地の歩行を学習したところ問題なく歩きました。変更する膝のパラメータですがトルクは小川先輩に提案いただいた「140, 120, 100, 80, 60, 40, 20, 10」で角速度の方は「2,4,6,8,10,12,14,16,18,20」のような分け方でよろしいでしょうか |
トルク 140, 120, 100, 80, 60, 40, 20, 10 8 x 10 x 10 = 800回になりますが,大丈夫ですか? |
端から10回ずつやると間に合わないので一旦はそれぞれの組み合わせで5回ずつ行いまんべんなく組み合わせを試そうと思います。
一先ず現状で最も小さい値の組み合わせであるeffort_limit=10,velocity_limit=2.0,で整地、不整地それぞれ2,3回ずつ学習させたところ整地では脚を真っ直ぐに伸ばした状態で脚を引きずるように歩きました。 |
山崎先輩に教えていただいた静力学を解いたところ以下の画像のようになった角度は参考にできそうな資料が見つかっていないため想像になってしまっているが、この結果からは中腰で歩くには膝のトルクは10程度は必要だと思います。 先日行った学習の結果ではeffort_limit=10,velocity_limit=2.0の組み合わせで足を伸ばしてかろうじて歩ける程度のものとなっており、また試しにeffort_limit=5,velocity_limit=2.0の組み合わせで行ってみたところ以下の動画のようになり、立つことはできていますが全く歩けなくなっていたため、計算の結果とも合致しているのではないかと考えています。 |
effort_limit=10,velocity_limit=4.0、effort_limit=10,velocity_limit=5.0で何度か学習を行ったが以下の動画のようになりeffort_limit=10,velocity_limit=2.0の時とほとんど違いがなかった |
そういえばこちら段差に関して考慮していませんでした. 8 x 10 x 10 x 5 = 4000回 でした.現実的な数字ではないと思いますので,できるだけ省けるところは省いたほうが良いと思います. |
パラメータの組み合わせは |
そちらの検討はできていません. ちなみに,当初から段差の話はあったと記憶していますので,新しい話題では無いという認識です. |
@aiba0921 |
@yasuohayashibara
どのように変更していくかについて階段は建築基準法で一段の高さが0.23m以内、奥行き0.15m以上と決まっているそうなので一段の高さを変えるというよりは奥行きを薄くしていくような変更の仕方になると思います。傾斜についてこちらの記事で自動車が登れるのが45度=傾斜100%なのでこちらも変更する傾斜の最大値は100%が限界かなと思います |
議論をシンプルにするためには,不整地は1つの地形に絞ったほうが良いです. 不整地の代表として適切な地形を選ぶには、以下の基準を考慮する必要があります:
階段状の段差で構成された地形。 逆ピラミッド状の階段地形。 ランダムな高さの箱状地形。 ランダムノイズで生成される不整地。 傾斜がついたピラミッド状地形。 逆傾斜のピラミッド地形。 |
こちらもChatGPT任せですが, random_rough 地形で不整地の段差をどの程度乗り越えられるかを議論するためには、以下のパラメータを変更して実験を行うのが適切です。
実験シナリオ例 シナリオ 1: 段差を小さくしてテスト シナリオ 2: 段差を大きくして挑戦度を上げる シナリオ 3: ランダム性を強調した不整地 推奨パラメータ |
不整地のフィールドを全てrandom_roughにして学習を行いました。以下は一枚目がnoise_rangeがデフォルトの値で二枚目が最大値を2.0にしたときの様子です |
どのように不整地が生成されるかを熟知していないところはありますが,一般的に2.0mの不整地は乗り越えられないような気がします. まずは,0.1m, 0.2m, 0.3m,もし値が変化しないようであれば0.4mぐらいも試したほうが良いかもしれません. 人間でも歩けそうも無い不整地の場合は調整したほうが良いと思いますので. |
0.4mで学習を行ったところ2.3歩移動してその場にしゃがみ込むというような結果になりました。 |
先日不整地環境のフィールドをrandom_roughのみにしてサイズを160mx80mにし、周囲の平地の余白があると議論が複雑化する恐れがあったため削除した。その際1エピソードの中での最大ステップ数や目標となる移動速度によってはフィールドの外に出てしまうのではないかという懸念があったため調査を行った 目標速度主に
以上のことからエージェントは基本的には前進+左右方向への方向転換の目標値が入力される エピソード主に 1エピソードのステップ長を求める計算式主に
今回の環境における1エピソードの最大ステップ長
また 最大移動距離最大移動距離についてはコード内に記述が見つけられていないが |
変更箇所マニュアル学習を進めていくうえで各ファイルのどの部分を変更するのかをまとめた unitree.pyG1_CFGを以下のように変更する
特にG1_CFGの以下の個所を変更することでG1の膝のトルク[Nm]と角速度[rad/s]を変更する
rough.py以下のように不整地の環境のサイズを70mx70mに変更する※12/13 サイズを70x70に再変更
simulation_cfg.py以下の部分がデフォルトでは2^21だがそのままだと全面をランダムな不整地に変更したことで衝突判定に要するメモリが許容量を超えて学習中にエラーが出て学習時間が大幅に伸びてしまう。そのため2^23にすることで使用するメモリを増やしエラーを回避する。
|
定格を調査するにあたりG1のどの関節のトルクと角速度のパラメータを変更し調査するのかを決める。
Isaac Lab内のunitree.pyでは一律effort_limit=300,velocity_limit=100.0,になっているがunitreeが公開しているgithubのG1のurdfでは異なる値になっている。下半身の関節の値を変更するとしてunitree.pyにおける下半身をlegとfeetの項目とするとleg内の "._hip_yaw_joint","._hip_roll_joint","._hip_pitch_joint", "torso_joint",はeffort="88" velocity="32"となっており、"._knee_joint"は effort="139" velocity="20"となっている。feetの"._ankle_pitch_joint", "._ankle_roll_joint"は effort="40" velocity="53"となっていた。どこにどのモータが使用されているのかの構成はまだ見つけられていないが、これを見る限りではleg内の腰と足の付け根のモータは同じで膝のみが異なったモータになっている。またfeetの足首のモータもどちらとも違う値になっているため異なるモータとなっている。
The text was updated successfully, but these errors were encountered: