gym-gazeboは、ROS(Robot Operating System)とGazeboを使用したロボット工学向けの環境です。
ROSはロボット開発のための開発ツールやライブラリが含まれたオープンソースソフトウェア、Gazeboはロボット開発のためのシミュレータになります。
gym-gazebo - https://github.com/erlerobot/gym-gazebo/
gym-gazeboは、ROS(Robot Operating System)とGazeboを使用したロボット工学向けの環境です。
ROSはロボット開発のための開発ツールやライブラリが含まれたオープンソースソフトウェア、Gazeboはロボット開発のためのシミュレータになります。
gym-gazebo - https://github.com/erlerobot/gym-gazebo/
Duckietownは、MIT(マサチューセッツ工科大学)発の、ロボット工学とAIを学ぶためのプラットフォームです。
自動車(Duckiebot)、道路、信号、標識、障害物、輸送を必要とする人(Duckies)、そしてそれらが住む都市(Duckietown)で構成されています。
Duckietown - https://www.duckietown.org/
gym-duckietownは、Duckietownのシミュレータ環境になります。
duckietown/gym-duckietown - https://github.com/duckietown/gym-duckietown
(PGE)Parallel Game Engineは、人工知能実験用のゲームエンジンです。ブロック積みゲーム、カートポール、四足歩行、テニスなどの環境が提供されています。
(PGE)Parallel Game Engine - https://github.com/222464/PGE
gym-miniworldは、強化学習とロボット研究のためのミニマルな3Dインテリア環境です。
gym-miniworld - https://github.com/maximecb/gym-miniworld
部屋、ドア、廊下などさまざまなオブジェクトを含む環境をシミュレートするために使用できます。
Obstacle Towerは、エージェントが塔をできるかぎり上の階まで登ることを目的としたゲーム環境です。
Obstacle Tower - https://github.com/Unity-Technologies/obstacle-tower-challenge
機械学習研究者向けのコンテストのために開発された環境で、Unityで制作されています。
Gym Retro環境で利用できるゲームの一覧を取得します。
下記のコードを準備します。
[コード]
1 | import retro |
実行すると下記のようにゲーム一覧が表示されます。
[実行結果]
0 1942-Nes ['1Player.Level1'] 1 1943-Nes ['Level1'] 2 3NinjasKickBack-Genesis ['1Player.Colt.Level1'] 3 8Eyes-Nes ['1Player.Arabia.Level1'] 4 AaahhRealMonsters-Genesis ['Level1'] 5 AbadoxTheDeadlyInnerWar-Nes ['Level1'] 6 AcceleBrid-Snes ['SilverMarine.DefaultSettings.Level1'] 7 ActRaiser2-Snes ['Level1'] 8 ActionPachio-Snes ['Level1'] 9 AddamsFamily-GameBoy ['Level1'] (途中略) 985 ZombiesAteMyNeighbors-Snes ['Start'] 986 ZoolNinjaOfTheNthDimension-Genesis ['Level1'] 987 ZoolNinjaOfTheNthDimension-Sms ['Level1'] 988 ZoolNinjaOfTheNthDimension-Snes ['Level1']
989種類のゲームが利用できることが確認できます。
ここで表示されるのは「ゲームインテグレーション」と呼ばれ、「開始状態」「報酬」「エピソード完了」という情報が定義されているゲームになります。
前回はシューティングゲームをランダムで実行しましたが、今回は強化学習アルゴリズムを実装してゲームを攻略してみます。
baselinesがインストールされていない場合は、下記コマンドを実行してインストールしておきます。
1 | git clone https://github.com/openai/baselines.git |
Airstrikerを学習して実行するコードは次のようになります。
[コード]
1 | import retro |
上記コードを実行すると最初に学習処理が実行されます。(私の環境ではGPUなしで60分以上かかりました。)
それが完了されると下記のようなウィンドウが表示され、学習したモデルでゲームが実行されます。

ランダム行動よりまともにゲームができているようです。
Gym Retroはファミコン、スーパーファミコン、メガドライブ、PCエンジンなどのレトロゲーム機のエミュレータが搭載されていて、昔の懐かしいゲームを実行することができます。
今回は標準付属されているシューティングゲーム「Airstriker」をランダムで実行してみます。
Gym Retroをインストールするために下記コマンドを実行します。
1 | pip install gym-retro |
Airstrikerをランダム実行するコードは次のようになります。
[コード]
1 | import retro |
上記コードを実行すると下記のようなウィンドウが現れてシューティングゲームがランダム行動で実行されます。

ランダム行動のためすぐやられてしまいます。
次回はこのシューティングゲームを強化学習で攻略してみます。
前回ファイルに保存した学習済みモデルを読み込んで利用してみます。
学習したモデルを読み込むコードは次のようになります。
学習したモデルの読み込みにはload関数を利用します。
[コード]
1 | import gym |
上記コードを実行すると「CartPole-v1」が表示され、棒のバランスがとれていることを確認できます。
モデルを利用するたびに毎回学習するのは時間がかかります。
今回は学習したモデルを保存して、次回はそのモデルを読み込んで利用してみます。
学習したモデルを保存するコードは次のようになります。
学習処理learn関数は少し時間がかかります。学習したモデルの保存はsave関数を利用します。
[コード]
1 | import gym |
上記コードを実行するとsample.zipという学習済みモデルファイルが作成されます。
次回は、この学習済みモデルの読み込みを行います。