在一起做四足7中我们提到了基于强化学习实现的机器人步态算法,其中以OpenAI最先在真实机器人上进行了实现而目前ETH提出的强化学习框架甚至超过了传统动态稳定控制算法实现的效果。Pybullet是许多强化学习算法应用训练采用的物理引擎,github上许多强化学习的工程特别是在足式机器人方面的基本都基于该引擎进行试验,因此要学习强化学习首先需要按装pybullet物理引擎,同时也能将其当做一个仿真平台用来验证传统算法的可行性,在不需要购买lakago或MIT小狗的前提下在计算机环境中测试自己的算法,同时其也能进一步对图像导航和SLAM等系统进行集成,采用python编程具有跨平台的优势能较好地对控制代码进行移植。

OpenAi强化学习步态(pybullet有例子测试)

本来想在之前的Ubuntu14.04中直接安装集成,但是由于OpenGL版本兼容问题一直无法解决无奈只能更换到Ubuntu16.04中进行安装,好在该版本中大部分库都能直接通过apt install的方式安装,这次使用的是阿里的官方镜像下载地:

我选择了ubuntu-16.04.6-desktop-amd64.iso 同样进行系统安装配置后开始安装过程,首先安装必须的编译库和OpenGL库:

sudo apt-get install build-essential libgl1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev git cmake nano mesa-utils

使用glxinfo | grep version 查看OpenGL版本,安装Python和pip:

sudo apt-get install python3.5-dev
sudo apt-get install python3-pip

安装pybullet比14.04中源码安装方便很多:

sudo pip3 install pybullet

在Download目录下下载强化学习所需gym:

git clone https://github.com/openai/gym.git
cd gym
sudo pip3 install -e .

下载pybullet提供的测试程序:

git clone https://github.com/bulletphysics/pybullet_robots

运行测试程序前将源文件中打开gui部分代码修改为p.connect(p.GUI, options="--opengl2"),运行lakago的测试程序:

python3 lakago.py

程序正常后应当看到机器人刷新处理并且前后俯仰移动,目前虚拟机里测试感觉该仿真程序十分耗内存在无GPU支撑下运行较慢。

lakago仿真例子

之后就可以尝试bullet提供的多种机器人仿真程序,其中包括了大量基于PPO强化学习实现的四足机器人步态控制例子十分值得学习,因此首先下载官方的bullet包:

解压在其根目录下进行编译:

./build_cmake_pybullet_double.sh

之后安装强化学习所需的TensorFlow:

sudo apt-get install python3-venv
sudp pip3 install tensorflow
sudo pip3 install ruamel.yaml
sudo pip3 install flags

官方的例子均在bullet3-master/examples/pybullet/gym/pybullet_envs/目录下,其中还有MIT小狗和GhostRobotic Vision60等四足机器人的例子,直接将python源文件复制到自己的工作目录下运行即可进行修改和测试,如直接运行如下语句就可以体验在前面强化学习介绍帖子中由Google OpenAI实现的对角步态训练实验。

python3 minitaur_trotting_env_example.py
采用传统三通道解耦控制下的测试程序

注:如果仿真时无法显示机器人本体则需要关闭虚拟器显示器中3D加速选项: