Skip to content →

仮想YamaXが前に進むまでの長い道のり

なんだかただ進捗があっただけともとれるタイトルですね。coord.eです。

前に進みました

はい!! ちゃんと学習して前に進んだんです!! やったー!!

ただし、以前書いた構成とは全然違うものになっています。

そこで、今回はこう前進できるようになるまでの過程をざっとご紹介します。

Gazebo&ROS&ODEとの長い戦い

以前、Gazebo&ROSを使用していると書きました。地面にめり込んで腕が吹っ飛んでいたときですね。

あのときはGazebo内部でbulletという物理エンジンを使用していましたが、あのあと(投稿から1週間後くらい)実はデフォルトのODEのほうがいいのでは!?となってODEに変えました。

そして

こうなり、うまくいかない時期もありましたが

パラメーターを(非現実的なほどに)調整した結果、
こんなふうに↑直立はできるようになったのですが、様子がおかしかったのです↓

_人人人人人人_
> 並行移動 <
 ̄Y^Y^Y^Y^Y^Y^ ̄

これにまるまる2ヶ月ぐらい悩まされました。

更に現実からかけ離れてゆく物理パラメータ。詰まってゆくスケジュール。迫りくる発表会。

もうだめかと思ったその時(約2週間前)、やっと原因がわかりました。

Gazeboのバグです。

ROSと連携したときに重力が変になったような挙動になるバグでした。

まあ原因がわかったので、ざっと直しました。

このバグについては別記事でさらに掘り下げます。(とりあえず、パッチを地味にgithubに上げてあります)

直した結果、右のように物理感のある重力が帰ってきました。

しかし重力が正常になったとはいえ、決して現実的とは言えない挙動を見せていました。

直にBulletを使う

どうも無理そうでうーんと悩んでいたとき、Gazeboから離れれてみようと思いました。(一昨日)

発表までに学習結果を用意したかった僕としてはすぐに強化学習と連携でき、かつ既存のYamaXのモデルが読み込めるものでないといけなかったので、pyBulletを選びました。(mujocoはurdfがめんどくさそうだった)

そうしたら、これですよ↓

動作がめっぽう軽く、しかも挙動が現実的!!

しかも強化学習連携がexamplesに用意されていました!! ↓

これはすごいということで、ざっと学習プログラムを書き上げ(発表前日)、一晩学習させました。

その結果が先程のこれです!

報酬はこのように上昇していました。学習がうまく行っている証拠ではないでしょうか

報酬の移動平均グラフ

この結果のおかげかもしれません、先日の京都大学サイエンスフェスティバルでも副学長賞をいただきました!!

まとめ

ということで、前に進みました。やったー

これのソースコードもgithubに上がっています

https://github.com/Y-modify/deepl2-pybullet-locomotion

この学習プログラムについても、また別記事に詳しく書こうと思います。

ぃえあ。

Published in 3Dモデル DeepL2 YamaX ソフトウェア 機械学習 歴史 進捗