Ubuntu kylin环境下OpenGym + Roboschool搭建过程

来源:互联网 发布:淘宝客可以关闭吗 编辑:程序博客网 时间:2024/05/16 08:12

Ubuntu kylin环境下OpenGym + Roboschool搭建过程

随着深度学习的不断发展,增强学习也焕发了第二春,以DQN,DDPG,A2C,A3C为代表的一系列深度增强学习算法应运而生,代表性的机构如众所周知的OpenAI,DeepMind,UC Berkeley等。随着OpenAI实验室开源增强学习算法环境roboschool以及高质量的实现代码baselines(内部包括TRPO,ACKTR,PPO等)。本着不仅仅局限在python3+keras+tensorflow+gym玩玩游戏,看看效果的层面上,笔者更想着眼于不断地跟进新算法和进展,实现机器臂,机器人的仿真等具有一定潜在价值的问题上。相信很多朋友也和我一个心态,但是对于一个小白来讲,完事开头难,因此,经过4天痛苦的部署过程,目前还没发现详细具体的全过程部署记录,笔者在此提供手把手的Roboschool的环境部署教程,希望能有更多的人受益,少走弯路,话不多说,进入正题。

目录

总体目录:

  • Ubuntu kylin环境下OpenGym Roboschool搭建过程
  • 目录
    • 环境与注意事项
    • 利用conda安装必要项
    • 安装OpenGym
    • 安装Roboschool
    • 新的问题
    • 后记
    • 20171113更新
  • 相关链接

1. 环境与注意事项

首先,我选择的软件与版本(未标注的版本信息可根据自己的要求选择,不影响结果):

  • Ubuntu kylin(16.04)
  • Python3.5(3.5.2)
  • Anaconda3
  • Nvidia driver 384.98 + Cuda8.0 + Cudnn 8.0
  • tensorflow + keras + pytorch
  • OpenGym + Roboschool

其次,我的硬件环境与版本(硬件与驱动挂钩,对于正确的部署很重要):

  • NVIDIA Corporation
  • GeForce GTX 1050 Ti/PCIe/SSE2

需要注意的是,Nvidia driver一定要根据官网选择一个稳定且适配你的电脑的最新版本(你可以在这个网站上查看: https://www.nvidia.com/object/unix.html). 因为这将影响着你的开关机和Cuda的部署以及后续OpenGL的正常工作与否!!!

此外,关于Ubuntu kylin以及Cuda8.0 + Cudnn的部署可以参考叶落寒蝉的Cuda8.0配置以及Cudnn配置教程

最后,由于Ubuntu kylin装机后自带python2.7以及3.5,但是我们由于希望用conda对python进行管理和之后的开发,这里我们不去管它(PS:千万不要删除自带的python,否则后果谁删水知道)只需要按照anaconda3官网提供的步骤进行正确安装即可。

2.利用conda安装必要项

安装过程很简单,首先看tensorflow的安装:

// 在conda中创建一个tensorflow的env,该env下python版本选择3.5zdl@zdl-GL62M-7REX:~$ conda create -n tensorflow// 激活该envzdl@zdl-GL62M-7REX:~$ source activate tensorflow python=3.5// 注意这里面tensorflow_gpu-1.2.0-cp35-cp35m-linux_x86_64.whl是根据官网的list以及自身电脑配置进行选择的(tensorflow) zdl@zdl-GL62M-7REX:~$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.0-cp35-cp35m-linux_x86_64.whl// 由于terminal提示我没有安装pip3,因此:(tensorflow) zdl@zdl-GL62M-7REX:~$ sudo apt install python3-pip(tensorflow) zdl@zdl-GL62M-7REX:~$ pip3 install --ignore-installed --upgrade $TF_BINARY_URL// 至此,tensorflow安装完毕,可以测试一下:$ python$ import tensorflow

到了这一步骤,我们的tensorflow安装完毕,但是先不要着急安装gym以及roboschool:

// 再次创建一个环境,RLLearningzdl@zdl-GL62M-7REX:~$conda create --name RLLearning python=3.5// 查看我们目前已经有的环境,你会发现root,tensorflow,RLLearningzdl@zdl-GL62M-7REX:~$conda info -e

3.安装OpenGym

整个安装过程如下:

// 首先将工程clone到本地,我的保存目录是/home/zdl/下,也就是主文件夹内zdl@zdl-GL62M-7REX:~$ git clone https://github.com/openai/gym.git// 安装依赖项// 这里注意,我的电脑必须加上sudo拥有权限才可以执行,官网教程直接是apt-get,sudo安装到的其实是系统文件夹/usr内部,而非conda维护的环境,但是只要通过配置能够找到这些依赖就可以,无需多虑。zdl@zdl-GL62M-7REX:~$ sudo apt-get install -y python-numpy python-dev cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev python-opengl libboost-all-dev libsdl2-dev swig// 激活我们之前的环境,这一步与教程不同,但是很重要,否则会面会出现千奇百怪的问题zdl@zdl-GL62M-7REX:~$ source activate RLLearning// 安装gym(RLLearning) zdl@zdl-GL62M-7REX:~$ cd gym(RLLearning) zdl@zdl-GL62M-7REX:~$ pip3 install 'gym[all]

4.安装Roboschool

整个安装过程如下:

// 如果你按照官网教程,肯定第一反应是将工程clone到本地,保存目录是/home/zdl/下,也就是主文件夹内zdl@zdl-GL62M-7REX:~$ git clone https://github.com/openai/roboschool// 继续按照官网进行,定义一个变量,也就是我们要安装的目录,注意这个目录也可以自定义zdl@zdl-GL62M-7REX:~$ ROBOSCHOOL_PATH=/path/to/roboschool// 安装依赖,同样地我的电脑,需要添加sudo与教程的apt不同zdl@zdl-GL62M-7REX:~$ sudo apt install cmake ffmpeg pkg-config qtbase5-dev libqt5opengl5-dev libassimp-dev libpython3.5-dev libboost-python-dev libtinyxml-dev// 继续zdl@zdl-GL62M-7REX:~$ git clone https://github.com/olegklimov/bullet3 -b roboschool_self_collisionzdl@zdl-GL62M-7REX:~$ mkdir bullet3/buildzdl@zdl-GL62M-7REX:~$ cd    bullet3/buildzdl@zdl-GL62M-7REX:~$ cmake -DBUILD_SHARED_LIBS=ON -DUSE_DOUBLE_PRECISION=1 -DCMAKE_INSTALL_PREFIX:PATH=$ROBOSCHOOL_PATH/roboschool/cpp-household/bullet_local_install -DBUILD_CPU_DEMOS=OFF -DBUILD_BULLET2_DEMOS=OFF -DBUILD_EXTRAS=OFF  -DBUILD_UNIT_TESTS=OFF -DBUILD_CLSOCKET=OFF -DBUILD_ENET=OFF -DBUILD_OPENGL3_DEMOS=OFF ..zdl@zdl-GL62M-7REX:~$ make -j4zdl@zdl-GL62M-7REX:~$ make installzdl@zdl-GL62M-7REX:~$ cd ../..// 进行到这一步的时候如果你进入/path/to/roboschool文件夹,你会发现里面最深处有一个bullet_local_install文件夹,内部是安装的重要配置文件

重点来了…如果你此时执行pip3 install -e $ROBOSCHOOL_PATH很大可能遇到错误:

setup.py not found

于是你把/home/zdl/roboschool/setup.py拷贝了过来,希望发生奇迹,结果:

make: *** No rule to make target 'clean'。 停止

细心的朋友会把setup.py打开看看是怎么回事,里面有一句make clean,就是这句话产生的报错,根本原因在于没有找到makefile文件,继续:

于是你把/home/zdl/roboschool/roboschool/cpp-household/Makefile拷贝了过来,再次运行安装,到了这里相信大家能够有所察觉,其实安装需要的文件正是我们最开始git clone到的/home/zdl/roboschool/roboschool/cpp-household/里面的全部内容啊!!!不知道为什么/path/to/roboschool下面竟然没有!!!

话不多说cp命令走起,或者手动复制也行,终于,运行pip3安装,没有任何错误了!

5. 新的问题

按照官网教程我们开开心心的运行

python3 $ROBOSCHOOL_PATH/agent_zoo/RoboschoolHumanoidFlagrun_v0_2017may.py

结果却出现了新的问题,而这个问题也是困扰了我很久的问题,即:打开的窗口内没有3d机器人在操场上“跑步”,而是原来该位置的桌面图案亦或窗口黑屏!!!终端显示:

QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled,
QXcbIntegration: Cannot create platform offscreen surface, neither GLX nor EGL are enabled.

通过不断的调试可以确定:
1. 不是驱动的版本问题,已经是最新版本(有的更新了驱动解决了);
2. 不是OpenGL版本问题,mesa也安装了(有的更新了opengl解决了);
3. 在代码开头添加from OpenGL import GL or GLX 等方法均无效
3.

zdl@zdl-GL62M-7REX:~$ lspci | grep -i VGAzdl@zdl-GL62M-7REX:~$ glxinfo | grep rendering// 执行命令后,也可以看到显卡中direct rendering = yes

4.运行tux racer企鹅滑雪游戏(该游戏基于opengl,可以验证是否是opengl以及显卡的问题),游戏能够正常打开并且运行,没有问题;

分析到了这里我个人觉得是配置的问题,但是我还没有能力去正面解决,遗憾…

另一种解决方案
虽然不是从根本上解决但是至少可以让我们继续科研下去,同时也希望有高手能够正面解决之(无奈…)

// 激活我们之前的环境zdl@zdl-GL62M-7REX:~$ source activate RLLearning// 重新安装roboschool(RLLearning) zdl@zdl-GL62M-7REX:~$ pip3 install -e roboschool

这里会报一个错误,原因在于之前生成的bullet_local_install文件夹没有拷贝过来,所以将/path/to/roboschool/roboschool/cpp-household/中的该文件夹拷贝到我们最开始git clone到的位置/home/zdl/roboschool/roboschool/cpp-household/中(绕了一大圈…囧…)…

// 拷贝之后继续安装,这次成功了(RLLearning) zdl@zdl-GL62M-7REX:~$ pip3 install -e roboschool// 运行(RLLearning) zdl@zdl-GL62M-7REX:~$ python3 $ROBOSCHOOL_PATH/agent_zoo/RoboschoolHumanoidFlagrun_v0_2017may.py

终于看到了画面,至此连续4天的调试有了一个结果…

这里写图片描述

后记

笔者安装pycharm后,企图调试/roboschool/agent_zoo/中的程序,结果还是同样的位置env.render(‘human’)报错,错误 :

QGLShaderProgram: could not create shader programbool QGLShaderPrivate::create(): Could not create shader of type 2.python: render-simple.cpp:250void SimpleRender::Context::initGL(): 假设 ‘r0’ 失败。

我将该问题发布在了github上#97,大家可以关注一下,同时也期待有咱们的朋友,高手帮助与指点,万分感谢,欢迎大家关注与转发以便于让更多对增强学习感兴趣的人少走弯路,尽快搭建环境上手研究!!!

20171113更新

对于错误:Context::initGL(): 假设 ‘r0’ 失败,由于解决方法简单,这里我就不另开一博客阐述了。当我在terminal运行:

(RLLearning) zdl@zdl-GL62M-7REX:~$ python3 roboschool/agent_zoo/RoboschoolHumanoid_v1_2017jul.py

此时,没有任何问题,但是,机器人在操场上跑的速度十分的快,几乎很难看清楚细节,而当运行:

(RLLearning) zdl@zdl-GL62M-7REX:~$ python3 roboschool/agent_zoo/RoboschoolAnt_v1_2017jul.py

此时会报出和上面一样的错误!!!经过在github上搜索解决方案后,看到国外的一位大神提到采用vglrun运行该python程序可成功解决问题。
当我自己安装时:

// 注意vglrun不是package名称,virtualgl才是!(RLLearning) zdl@zdl-GL62M-7REX:~$ sudo apt-get install virtualgl// 此时会报错://  没有可用的软件包 virtualgl,但是它被其它的软件包引用了。//  这可能意味着这个缺失的软件包可能已被废弃,//  或者只能在其他发布源中找到

而百度之后并没有发现解决方案,笔者在此给出官网virtualGL下载,大家可以自己选择最新版本下载,我下载的是:Download virtualgl_2.5.2_amd64.deb (1.6 MB),安装之:

(RLLearning) zdl@zdl-GL62M-7REX:~$ dpkg -L virtualgl_2.5.2_amd64.deb

安装成功以后,终于解决了全部的问题,运行:

(RLLearning) zdl@zdl-GL62M-7REX:~$ vglrun python3 roboschool/agent_zoo/RoboschoolHumanoid_v1_2017jul.py(RLLearning) zdl@zdl-GL62M-7REX:~$ vglrun python3 roboschool/agent_zoo/RoboschoolAnt_v1_2017jul.py

均为发现任何问题,而且画面流畅且没有诡异的速度!至此,roboschool部署以及运行方案全部阐述完毕!感谢大家的参考与阅读,在下由于是第一次开帖写博客,所以如有任何问题或者写作上的表达失误,还请朋友们不吝指出!再次感谢大家!

相关链接


1.http://blog.csdn.net/yeluohanchan/article/details/75992807
2.https://github.com/openai/roboschool
3.https://github.com/openai/gym
4.http://blog.csdn.net/yeluohanchan/article/details/75968931
5.https://www.nvidia.com/object/unix.html
6.https://github.com/openai/roboschool/issues/93
7.https://sourceforge.net/projects/virtualgl/files/

原创粉丝点击