GPS代码github
官方安装手册
以下主要是参考官方安装手册进行安装的。
2018/08/06
将下载的名为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.1
、tensorflow==0.12.1
打开pycharm的终端,默认激活了刚才新建的虚拟环境mygpsenv2,我们在mygpsenv2下安装Box2D==2.3.2。
由官方手册:
protobuf
and boost
:其实这个我们在1中的pycharm里已经安装过了,可以省略(当然再执行一遍也没问题,还可以检查一下刚才在pycharm里有没有安装成功)sudo apt-get install libprotobuf-dev protobuf-compiler libboost-all-dev
sudo pip install protobuf // 或者pip install protobuf
git clone https://github.com/cbfinn/gps.git
克隆下来之后为一个名为gps的文件夹,zip版本的就是名为gps-master名字的zip文件,解压即可。
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
sudo apt-get install build-essential python-dev swig python-pygame git
git clone https://github.com/pybox2d/pybox2d
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
成功。
页面显示:
注意:上面的环境搭建有个巨大的坑,现在我们都喜欢用anaconda或者其他的(我这里用的是pycharm)来建一个python的虚拟环境来运行项目,主要是为了方便管理我们的环境,避免污染外部全局ubantu环境。但是在这个环境搭建过程中box2d和pyside只能装在ubantu里面,虚拟环境里面安装不了(暂时我自己没有解决的办法)。所以有几个解决方案:1.在pycharm创建虚拟环境的时候要勾选上继承外部环境(我们上述就是这么做的)。2.不建立虚拟环境,所有的包都在uabntu下全局安装(未实验,但是道理上可行)。3.pycharm精确引入外部的环境,比如我这里需要全局的box2d和pyside,我就在pycharm里面引入这两个(未实验,大家可以百度)。
以上是box2d的环境搭建过程,MuJoCo example和PR2 example的环境搭建待续…
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
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:
。所以我们把文件中的这句
改为
成功。
页面显示:
遗留问题:
在roslaunch运行过程中,会出现[ERROR] [1575084385.722023199, 116.146000000]: Cannot configure controller while a trial is in progress
暂不清楚什么原因!
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
此图参考
之后声明环境变量,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!