27
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unityの機械学習ライブラリで歩くモーションを作成する実験をした

Posted at

概要

前回の続き。歩くモーションも出来るんじゃないかと思って実験してみた。
(前回の記事)Unityの機械学習ライブラリで待機モーションを作成する実験をした

出来たのが以下のもの。想像の範囲外の歩き方になった。これが機械学習の面白いところかもしれない。

この記事にはこの歩き方にいたるまでの試行錯誤の過程を書いておこうと思う。

失敗例1

まずは歩いて前進するという行為を要素に分解してみた。

  • 足以外の部分が地面につかない(待機モーションと同じ)
  • 目標地点に到達するように移動する

これをAgentが得られる報酬に置き換えると

  • 足以外の部分が地面に設置したら罰則を与えてstep終了しリセット
  • 目標地点に到達したら報酬を得られてstep終了しリセット
  • 1step毎に目標地点に近いほど多く報酬をもらえる

その結果がこれ。

おそらくこの条件が良くなくて、前に倒れこむだけで報酬が貰えるという欠陥があるのだろうと推測。

  • 1step毎に目標地点に近いほど多く報酬をもらえる

失敗例2

失敗例1の欠点である倒れこむだけで報酬が貰えるのを改善する為に目的地までの間に撒き餌をまいて、撒き餌を採ると報酬が貰える条件を追加してみた。

  • 足以外の部分が地面に設置したら罰則を与えてstep終了しリセット
  • 目標地点に到達したら報酬を得られてstep終了しリセット
  • 1step毎に目標地点に近いほど多く報酬をもらえる(近づいたときだけ貰える)
  • (New)撒き餌を採ったら報酬が貰える

結果がこれ。

これまでのように足が地面についたまま倒れこむのではなく、足を浮かせて前に進もうとしているのが分かる。一歩を踏み出したので大きな前進である。

成功例

正直、これ以上どんな条件を加えれば良いのか思い浮かばなかったので、公式のページをここで初めて参考にしてみた。
Camera as a state #92
Agentの状態を測定するのに、手動で加えたState(前回の記事ではStateにRagdollの位置、速度を与えた)だけではなく、Cameraからの画像を利用する方法があるようだ。これを利用してみる。設定は、Agentのインスペクタのobservationsにカメラを設定するとの事。

alt

カメラを使うと計算時間が何倍にもなるようで自分の環境で30分ぐらいで済んでいた計算が3時間ほどかかった。
ただ、結果としては概要で示したように、満足いくものとなった。今回の実験のように、操作するパラメタ(36つ)と監視するパラメタ(72こ)が多い場合はカメラを使った方が効率的に分析できるのかも?

成功例の考察

なぜ、奇妙な動き方になったのかは正直分からない。どの関節にも均等に偏りなく回転速度を与えるようにしたし、報酬を与える条件も目的値に近づくという単純な条件だけである。Unityの物理エンジンにおいてRagdollが一番安定して移動できる方法がそれだったという事か。

27
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?