引导策略搜索guided policy search 代码环境安装+ubantu16.04

GPS代码github
官方安装手册

以下主要是参考官方安装手册进行安装的。

One.安装Box2D环境:

2018/08/06

一. 用pycharm创建一个python的虚拟环境(没有使用anaconda),我的命名为mygpsenv2。

将下载的名为gps-master的代码用pycharm打开,之后在pycharm标题栏的file->settings->选中Project:gps-master下的Project Interpreter,在右侧Project Interpreter的右侧打开show All,里面右侧点+加号添加新的虚拟环境:Location位置写/home/sophie/Downloads/gps-master/mygpsenv2,注意其中mygpsenv2是刚起的虚拟环境名,其他前面的路径都是默认的。Base interpreter这里选择python2.7。(注意一定要勾选下面的Inherit global site-packages继承全局环境,这个一定要勾选上,因为后面的box2d和pyside只能装在ubantu里面,虚拟环境里面安装不了。后面的Make available to all projects 是让其他项目也可以用这个环境,这个根据你自己的情况选择勾选,不作要求)。其他地方默认。点ok->ok。之后就返回到了Project:gps-master下的Project Interpreter页面,然后在右侧的+加号那里就可以添加python的包了。我们在这添加N维数组容器numpy==1.16.4、绘图系统matplotlib==1.5.3科学计算函数库scipy==0.11.0、支持c与python混编boost==0.1、一种新的消息或数据结构体的定义模式protobuf==3.9.1tensorflow==0.12.1

二. Setup

打开pycharm的终端,默认激活了刚才新建的虚拟环境mygpsenv2,我们在mygpsenv2下安装Box2D==2.3.2。
由官方手册:

  1. To install protobuf and boost:其实这个我们在1中的pycharm里已经安装过了,可以省略(当然再执行一遍也没问题,还可以检查一下刚才在pycharm里有没有安装成功)
sudo apt-get install libprotobuf-dev protobuf-compiler libboost-all-dev
sudo pip install protobuf  // 或者pip install protobuf
  1. 下载gps代码(我之前下载的zip版的名称为gps-master)
git clone https://github.com/cbfinn/gps.git

克隆下来之后为一个名为gps的文件夹,zip版本的就是名为gps-master名字的zip文件,解压即可。

  1. Compile protobuffer:
cd gps   // 或cd gps-master    (注意这个gps或者gps-master文件夹放哪都可以,你在虚拟环境mygpsenv2下cd过去就行了)
./compile_proto.sh   //这是gps-master文件夹里面的文件(注意:这个每次运行代码前都要执行,不然会提示ImportError: No module named proto.gps_pb2)

执行完这一步之后,终端输出Done

三.安装Box2D==2.3.2

Box2D Setup

  1. Install Swig and Pygame:(swig是一个可以把c/c++代码封装为python库的工具)
sudo apt-get install build-essential python-dev swig python-pygame git
  1. Check out the Pybox2d code via GitHub(或者下载zip的,下载下来名为pybox2d-master的zip压缩包,同gps代码的下载)
git clone https://github.com/pybox2d/pybox2d
  1. Build and install the library:
python setup.py build
sudo python setup.py install

这一步安装完之后终端出现以下两行,即安装成功,自动给安装了Box2D的2.3.2版本

Processing dependencies for Box2D==2.3.2
Finished processing dependencies for Box2D==2.3.2

继续测试命令:

python python/gps/gps_main.py box2d_arm_example

终端提示:

ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5,
or PySide package to be installed, but it was not found.

所以我们再安装一下PySide==1.2.4

sudo apt-get install build-essential
sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
sudo pip install PySide -i https://pypi.tuna.tsinghua.edu.cn/simple

终端报错:error: Failed to find cmake. Please specify the path to cmake with --cmake parameter.
那我们就安装cmake

sudo apt install cmake

安装好cmake之后,再执行一遍:

sudo pip install PySide -i https://pypi.tuna.tsinghua.edu.cn/simpl

发现可以安装了,终端显示:Running setup.py install for PySide .../,安装过程有点慢,其中/这个符号一直在转,说明正在安装,需要等待…(我的装了十几分钟)
安装完成终端显示:Successfully installed PySide-1.2.4

继续测试命令:

python python/gps/gps_main.py box2d_arm_example

成功。
页面显示:
引导策略搜索guided policy search 代码环境安装+ubantu16.04_第1张图片
注意:上面的环境搭建有个巨大的坑,现在我们都喜欢用anaconda或者其他的(我这里用的是pycharm)来建一个python的虚拟环境来运行项目,主要是为了方便管理我们的环境,避免污染外部全局ubantu环境。但是在这个环境搭建过程中box2d和pyside只能装在ubantu里面,虚拟环境里面安装不了(暂时我自己没有解决的办法)。所以有几个解决方案:1.在pycharm创建虚拟环境的时候要勾选上继承外部环境(我们上述就是这么做的)。2.不建立虚拟环境,所有的包都在uabntu下全局安装(未实验,但是道理上可行)。3.pycharm精确引入外部的环境,比如我这里需要全局的box2d和pyside,我就在pycharm里面引入这两个(未实验,大家可以百度)。

以上是box2d的环境搭建过程,MuJoCo example和PR2 example的环境搭建待续…

Two.安装MuJoCo环境:

2018/08/10
MuJoCo Setup
用pycharm打开gps-master的代码,pycharm的终端自动进入虚拟环境mygpsenv2(搭建box2d的时候创建的python虚拟环境)

一. 安装OpenSceneGraph(v3.0.1+)
sudo apt-get install openscenegraph libopenscenegraph-dev

查看OpenSceneGraph版本的方法是在终端输入: osgversion
二.下载mjpro131_linux.zip,(不要下载150,gps的代码配置不支持150)把解压后的mjpro131文件夹改名成mjpro放在gps-master/src/3rdparty里面,把申请的mjkey.txt直接放在mjpro文件夹里面即可
(申请mjkey.txt时下载getid_linux运行以下命令,可知道你的computer id

chmod +x getid_linux
./getid_linux

)。
三.Build gps/src/3rdparty by running:

cd gps-master/build
cmake ../src/3rdparty
make -j

我在执行cmake ../src/3rdparty这一步的时候终端提示Imported targets not available for Boost version 106700,这是由于cmake版本旧,boost版本新,cmake带来的FindBoost.cmake。
现在先升级cmake:
在终端中输入:

cmake  --version //查看现在的cmake版本,我的显示的是3.5.1
sudo apt-get autoremove cmake  //卸载旧版本3.5.1,注意这个命令慎用,它将直接删除与cmake有关的一切,例如这个命令直接删除了ROS系统(机器人操作系统)相关的cmake,导致ROS不能使用.直接在安装目录删除,包括在/usr/local/share/ 里面的目录

下载新版本,我下载的是cmake-3.15.0-Linux-x86_64.tar.dz,下载之后解压
之后,然后创建软连接(文件路径是可以指定的, 一般选择在/opt 或 /usr 路径下, 这里选择/opt),在终端输入:

sudo mv cmake-3.15.0-Linux-x86_64 /opt/cmake-3.15.0
sudo ln -sf /opt/cmake-3.15.0/bin/*  /usr/bin/

然后,执行命令检查一下:

cmake --version  //我的提示cmake version 3.15.0

即cmke新版本安装成功。
然后,继续执行刚才未执行完的任务:

cd gps-master/build
cmake ../src/3rdparty

发现,并没有出现之前的Imported targets not available for Boost version 106700,可以成功运行。
接着执行

make -j  //或 make -j8

成功编译100%
最后把你的路径添加到~/.bashrc文件里面:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/gps/build/lib
export PYTHONPATH=$PYTHONPATH:/path/to/gps/build/lib

这里的路径时你的gps代码的build/lib的路径,每个人根据放置代码的位置不同,路径也不同,我的是

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/sophie/Downloads/gps-master/build/lib
export PYTHONPATH=$PYTHONPATH:/home/sophie/Downloads/gps-master/build/lib

添加完之后,保存退出~/.bashrc,然后执行

source ~/.bashrc   //作用是立刻加载修改后的设置,使之生效。

把路径切换到gps下执行测试代码:

python python/gps/gps_main.py mjc_example

成功。
页面显示:
引导策略搜索guided policy search 代码环境安装+ubantu16.04_第2张图片

Three.安装ROS环境:

ROS Setup
一.安装ros
注意ubantu系统和对应的ros版本.
我是用的是ubantu16.04+kinetic.
用命令rospack list |grep pr2查看有没有pr2的包,没有的话,要安装一下:

sudo apt-get install ros-kinetic-pr2-*

二.把你的路径添加到~/.bashrc文件里面:

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/path/to/gps:/path/to/gps/src/gps_agent_pkg

我的对应路径是

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/sophie/Downloads/gps-master:/home/sophie/Downloads/gps-master/src/gps_agent_pkg

然后执行

source ~/.bashrc   //作用是立刻加载修改后的设置,使之生效。

三.编译

cd src/gps_agent_pkg/
cmake .
make -j

make -j
提示ResourceError: ConvexDecomposition,输入:

sudo apt-get installros-kinetic-convex-decomposition

显示缺少ivcon包,输入:

sudo apt-get install ros-kinetic-ivcon

再执行

make -j

则成功编译100%.
现在运行code检测一下:
打开终端1,运行

roscore     //打开ros服务器

打开终端2,运行

roslaunch gps_agent_pkg pr2_gazebo.launch   //激活gazebo

打开终端3,运行code

python python/gps/gps_main.py pr2_example

注意:gps代码中src/gps_agent_pkg/launch/pr2_gazebo_no_controller.launch文件中提示Use the following for ROS hydro or later: 。所以我们把文件中的这句改为
成功。
页面显示:
引导策略搜索guided policy search 代码环境安装+ubantu16.04_第3张图片

遗留问题:
在roslaunch运行过程中,会出现[ERROR] [1575084385.722023199, 116.146000000]: Cannot configure controller while a trial is in progress
暂不清楚什么原因!

Four.安装Caffe:

ROS Setup with Caffe

一. 运行上一节 的步骤一和二.
二. 安装caffe. (caffe是深度学习框架),选择For Ubuntu (< 17.04)安装.(我的是ubantu16.04)
建议大家以后安装软件尽量参考官方教程,英文看不懂,google翻译一下.
自己总结的caffe(gpu安装)大致过程如下:nvida驱动+cuda8.0+cudnn6+opencv3.0+caffe

0,先安装相关依赖项

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler 
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

1,安装nvida驱动
获取自己电脑显卡型号->去官网查看显卡对应驱动版本->先卸载电脑原有驱动->安装刚从官网查到的驱动版本

lspci | grep -i nvidia  // 获取自己电脑显卡驱动,我的是[GeForce GTX 980M] 
sudo apt-get remove --purge nvidia*  //卸载原有驱动
sudo apt-get upgrade  // 更新源
sudo apt-get update
sudo apt-get install nvidia-440  // 安装对应版本驱动,后面的数字440对应你从官网查到的驱动版本

安装成功之后可用nvidia-smi命令查看驱动是否安装成功.

2,安装cuda8.0
去官网下载对应型号的runfile(local)文件,
运行

sudo sh cuda_8.0.61_375.26_linux.run

初始安装时,出现很多选择的选项,直接Ctrl+C
引导策略搜索guided policy search 代码环境安装+ubantu16.04_第4张图片
此图参考
之后声明环境变量,gedit ~/.bashrc在打开的文件中写入:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64$LD_LIBRARY_PATH

然后source ~/.bashrc
使用cat /usr/local/cuda/version.txt查看cuda版本,我的是8.0.61

3,安装cudnn6
注意,cudnn版本和cuda版本是配合使用的,下载的时候要注意一下,下载需要注册一个账号.
如果使用.deb文件安装的话,需要下载三个文件
具体按照这里的Installing From A Debian File下面内容安装即可.
使用cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 查看cudnn版本.

4,安装opencv3.0
进入官网 , 选择 3.1.0 版本的 source , 下载 opencv-3.0.0.zip
解压到你要安装的位置,命令行进入已解压的文件夹 opencv-3.0.0 目录下,执行:

mkdir build # 创建编译的文件目录
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8  #编译

编译成功后安装:

sudo make install #安装

使用pkg-config --modversion opencv查看opencv时候安装成功

5,安装caffe
下载caffe源码:

git clone https://github.com/BVLC/caffe.git

进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config,复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。
然后修改几个文件的内容:(可以用vscode打开caffe源码,因为我们要修改几个文件的内容,用vscode比较方便)
(1)修改Makefile.config文件

应用cudnn
将
#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1

应用opencv版本
将
#OPENCV_VERSION := 3 
修改为: 
OPENCV_VERSION := 3

应用python接口
将
#WITH_PYTHON_LAYER := 1 
修改为 
WITH_PYTHON_LAYER := 1

修改python路径
将
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 
修改为: 
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial       

(2)修改Makefile文件

将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

(3)修改改 /usr/local/cuda/include/host_config.h 文件

#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

然后就可以编译了,在caffe目录下执行make all
在make all这一步会出现各种错误,主要参看以下这几个链接,包含了大部分错误的解决方法。
参考链接1
参考链接2
编译成功后可运行测试:sudo make runtest -j8,如果显示结果最后为很多绿色的RUN OK,则表示caffe已经安装成功。
这时可以再终端里测试一下

python
import caffe

这时候提示importError,可以在~/.bashrc文件中添加

# caffe 使用python
export PYTHONPATH=/home/sophie/caffe/python:$PYTHONPATH

继续在终端中测试,发现ImportError: No module named skimage.io
可以在你的虚拟环境中安装一下skimage:

pip install scikit-image==0.12.3

即可。

三.caffe安装成功了,在caffe目录下运行make -j && make distribute
然后编译

cd src/gps_agent_pkg/
cmake . -DUSE_CAFFE=1 -DUSE_CAFFE_GPU=1 -DCAFFE_INCLUDE_PATH=/path/to/caffe/distribute/include -DCAFFE_LIBRARY_PATH=/path/to/caffe/build/lib
make -j

其中有个错误rospack: error while loading shared libraries: librospack.so: cannot open shared object file:
在.bashrc文件中加入

export LD_LIBRARY_PATH=/opt/ros/kinetic/lib

之后source ~/.bashrc
即可。
成功之后即可运行gps代码中有神经网络的试验了,如python python/gps/gps_main.py mjc_badmm_example

注意关于cuda8.0+cudnn6+opencv3.0版本的选择:为什么我选的是这几个版本呢?因为caffe里面提到CUDA 8 is required on Ubuntu 16.04.以及caffe里面提到OpenCV >= 2.4 including 3.0;cuDNN for GPU acceleration (v6).因为cuda版本和cudnn版本是对应使用的,cuda8也可以使用cudnn5.1,本来我想下载cudnn5.1,但看到caffe里面说要v6,然后我就下载的cudnn6.


好好学习 天天向上 over!

你可能感兴趣的:(GPS,guided,policy,search,gps,引导策略搜索,gps代码环境搭建)