Ccmmutty logo
Commutty IT
4 min read

【強化学習】UnityでML-Agentsを使ったCartPole学習(前半)

https://cdn.magicode.io/media/notebox/de28a6e7-1e47-4018-9079-43a5037b081a.jpeg

概要

Unityでcartpoleの環境し,ML-Agetnsを使って学習させます. ML-Agentsを使った学習を行う人の助けになればいいと思っています.
学習を行うための流れはこのようになります.
  1. ML-Agentのインストール
  2. モデル(CartPole)の作成
  3. モデルの学習
今回はインストールはできているものとして,2,3について説明します. ML-Agentsのインストールは以下を参考にインストールしてください. https://github.com/Unity-Technologies/ml-agents
この記事では「2.モデルの追加」について説明します.

cartpole作成

ここでは,こちらに表示されているようなcartpoleを作成していきます. catpole_model
まず,シーンとして「CartPole」と名付けて作成します.シーンとは、Unityのプログラム上の場面、画面を指します。 Unityゲームは、複数の画面で構成されており、タイトル画面、ゲーム画面、ゲームクリア・ゲームオーバー画面、スコア画面等、複数の画面が含まれます。 こうした画面をシーンと呼び、それぞれのシーンをタイトルシーンやゲームシーンのように呼びます。
画面下部にあるProjectウィンドウから必要なファイル・シーンを作成します. まずAssetsの中にCartPoleフォルダを作成します.フォルダは左クリックしてからCreate->folderから作成することができます.またFile/New Sceneから新しいシーンを作成しCartPoleと名付けて作成したフォルダに保存します.
project
また上記のフォルダは以下のような役割があります.
  • Material
    • カートやポールなど実際にシーンで使用するオブジェクトなどを入れる
  • Script
    • 作成したスクリプトを入れる
  • TFModels
    • 学習済みモデルを入れる
Materialにはカートやポールなど実際にシーンで使用するオブジェクトなどを入れます.
次にsceneを開いてHierarchyウィンドウから以下のようにオブジェクトを追加します.オブジェクトの追加は左クリックしてから3D objectを追加してください.
scene
追加する3D Objectはcube, sylinder,planeを一つづつ追加します.それぞれの名前はCart,Pole,Planeの名前で追加します.またCartとPoleはTrainingAreaという空のオブジェクトをCreate Emptyから作成し,そこに入れます.
それぞれの大きさ・位置はこちらの画像を参考にしてください.数値の変更はInspectorウィンドウから変更できます. plane
cart
pole

Componentの追加

先ほど作成したCartやPole,Planeに物理的な特性を持たせるためにComponentというものを追加します.

Rigidbodyの追加

画像下部のAdd Componentから「rigidbody」を検索して選択します.
add_component
CartとPoleに追加します. パラメータはそれぞれ次のようにしてください.
cart_rig
pole_rig
Massはオブジェクトの質量,Dragは空気抵抗,Angular Dragはオブジェクトが回転する時の空気抵抗となります.Constraints / Freeze Position はオブジェクトの動きを制限させます.今回Cartは横方向(Z方向)に動いて欲しいので,手前方向(X方向)にチェックを入れます.Freeze Rotation はオブジェクトの回転を制限します.今回はCartは回転しないので全てにチェックを入れてください,

Hinge Jointの追加

こちらもAdd Componentから追加します.パラメータは次のように設定してください. hingejoint

Materialの設定

次にオブジェクトのMaterialの設定をします. ここではPlaneに対して摩擦を設定します. Materialフォルダの中にPhysic Materialを追加して,Planeという名前に変更します.
frictoin Dynamic Frictionで動摩擦を設定します.State Frictionは静止摩擦を設定します.今回はともに0.6で設定します.
作成したPhysic Material をPlaneオブジェクトに追加します.Planeオブジェクトを選択し,そのMaterialの箇所にドラッグして設定しましょう.
attach_to_plane

Discussion

コメントにはログインが必要です。