「Pythonで深層強化学習を試したい」
「PyBulletをWindowsで動かしたい」
「PyBulletのデモがエラーで動かない」
このような場合には、この記事が参考なるでしょう。
本記事の内容
- PyBulletとは?
- PyBulletのシステム要件
- PyBulletのシステム要件(追加)
- PyBulletのインストール
- PyBulletの動作確認
それでは、上記に沿って解説していきます。
PyBulletとは?
PyBulletは、Bullet Physics SDKのPythonバインディングです。
Bulletとは、オープンソースの物理演算エンジンになります。
そして、Bullet Physics SDKはBulletの開発ツールキットということです。
Bullet Physics SDKは、ロボット工学、強化学習、VRで利用されています。
このBullet Physics SDKをPythonで操作するためには、PyBulletが必要になります。
つまり、PyBulletを使えば、Pythonで深層強化学習やロボットシミュレーションが実現できます。
PyBulletが、深層強化学習・ロボットシミュレーションの間口を広げていると言えますね。
以上、PyBulletの説明を行いました。
次は、PyBulletのシステム要件を確認します。
PyBulletのシステム要件
現時点(2021年8月)でのPyBulletの最新バージョンは、3.1.7となります。
この最新バージョンは、2021年5月8日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
また、サポート対象となるPythonのバージョンは以下。
- Python 2.7
- Python 3.4
- Python 3.5
- Python 3.6
- Python 3.7
- Python 3.8
これは、下記のPythonの公式開発サイクルとはかけ離れています。
もうPython 2.7は切り捨ててもいいと思いますけどね。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
ここまでが、公式に記載されているシステム要件です。
あと、PyBulletはC++のランタイムを必要とします。
Windowsの場合、PyBulletのインストールでエラーが出るのはこれが原因の可能性が高いです。
Microsoft Visual C++ のダウンロード
https://support.microsoft.com/help/2977003/the-latest-supported-visual-c-downloads
確かに、ここまでのシステム要件でPyBulletはインストールできます。
しかし、このシステム要件だけでは直ぐに行き詰ってしまいます。
以下は、公式に載っているインストール・動作確認のコマンドとなります。
pip3 install pybullet --upgrade --user python3 -m pybullet_envs.examples.enjoy_TF_AntBulletEnv_v0_2017may python3 -m pybullet_envs.examples.enjoy_TF_HumanoidFlagrunHarderBulletEnv_v1_2017jul python3 -m pybullet_envs.deep_mimic.testrl --arg_file run_humanoid3d_backflip_args.txt
上記に従って動作確認を行うと、エラーが出てしまいます。
そのため、以下で上記の動作確認がすべて行えるようにシステム要件を追加で説明します。
PyBulletのシステム要件(追加)
大きく分類すると、以下の3つが必要となります。
- OpenAI Gym
- TensorFlow
- MPI
それぞれを下記で説明します。
OpenAI Gym
強化学習のために必要となります。
OpenAI Gymについては、次の記事で解説しています。
上記記事を参考にして、OpenAI Gymのインストールを行います。
インストールをしていないと、次のエラーが表示されます。
ModuleNotFoundError: No module named 'gym'
TensorFlow
「pybullet_envs.deep_mimic.testrl」が、TensorFlowを前提にしています。
このコードが、TensorFlow 1系でしか動きません。
TensorFlow 2系で試すと、次のエラーが出てきます。
ModuleNotFoundError: No module named 'tensorflow'
よって、TensorFlow 1系の最終となるTensorFlow 1.15をインストールします。
TensorFlow 1.15をインストールするためには、Python 3.7以前が必要です。
したがって、Python 3.7の環境を用意します。
そうしないと、動作確認を行うことができません。
TensorFlowのインストールは、以下の記事などを参考にしてください。
なお、検証では以下のPythonを利用しています。
>python -V Python 3.7.9
MPI
並列処理を行うために必要となります。
MPIについては、次の記事で説明しています。
上記の記事は、Windowsの場合です。
Linux(Ubuntu)の場合は、次の記事でまとめています。
MPIをインストールしておきます。
そして、mpi4pyもインストールします。
mpi4pyの詳細は、次の記事をご覧ください。
以上、PyBulletの追加のシステム要件を説明しました。
次は、PyBulletのインストールを行います。
PyBulletのインストール
まずは、現状のインストール済みパッケージを確認しておきます。
追加のシステム要件に関するライブラリはインストール済みです。
>pip list Package Version -------------------- -------- absl-py 0.13.0 astor 0.8.1 cached-property 1.5.2 cloudpickle 1.6.0 gast 0.2.2 google-pasta 0.2.0 grpcio 1.39.0 gym 0.19.0 h5py 3.3.0 importlib-metadata 4.6.4 Keras-Applications 1.0.8 Keras-Preprocessing 1.1.2 Markdown 3.3.4 mpi4py 3.1.1 numpy 1.21.2 opt-einsum 3.3.0 pip 21.2.4 protobuf 3.17.3 setuptools 57.4.0 six 1.16.0 tensorboard 1.15.0 tensorflow-estimator 1.15.1 tensorflow-gpu 1.15.0 termcolor 1.1.0 typing-extensions 3.10.0.0 Werkzeug 2.0.1 wheel 0.37.0 wrapt 1.12.1 zipp 3.5.0
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、PyBulletのインストールです。
PyBulletのインストールは、以下のコマンドとなります。
pip install pybullet
インストールは、一瞬で終わります。
追加されたのは、次のパッケージのみです。
pybullet 3.1.7
以上、PyBulletのインストールについて説明しました。
最後は、PyBulletの動作確認を行います。
PyBulletの動作確認
動作確認には、以下のコマンドを実行しましょう。
python3 -m pybullet_envs.deep_mimic.testrl --arg_file run_humanoid3d_backflip_args.txt
実際には、以下のコマンドを実行。
python -m pybullet_envs.deep_mimic.testrl --arg_file run_humanoid3d_backflip_args.txt
適切にPyBulletが動けば、次のように表示されます。
コンソールには、次のような表示が行われます。
total_reward= 555.2943635546263
バク転が上手く行けば、高報酬のようです。
失敗すれば、低報酬ということですね。
強化学習とは、こういうモノだと言えるような処理になります。
以上、PyBulletの動作確認の説明でした。