Magicode logo
Magicode
1

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

4 min read

概要

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

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