本文只是为了对Ros安装过程做个备份。如果是树莓安装的是ubuntu,好像可以直接sudo apt-get install ,有机会试试:http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Kinetic%20on%20the%20Raspberry%20Pi。
以下是参考的文章:http://rosclub.cn/post-182.html
http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi
安装raspbian的话,自行搜索就好了,我是使用Panasonic_SDFormatter+Win32DiskImager+2017-7-05-raspbian-jessie写镜像文件到sd卡。
现在可以开始:
1、使用sudo nano /etc/apt/sources.list,修改:阿里云linux更新源:
deb http://mirrors.aliyun.com/raspbian/raspbian/ jeesie main non-free contrib rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jeesie main non-free contrib rpi
2、修改swap空间,使用命令
sudo nano /etc/dphys-swapfile
修改:CON-SWAPSIZE = 2048;
3、设置Ros源码仓库与key,并更新
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu jessie main" > /etc/apt/sources.list.d/ros-latest.list'
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade
4、安装依赖包
sudo apt-get install python-pip python-setuptools python-yaml python-distribute python-docutils python-dateutil python-six sudo pip install rosdep rosinstall_generator wstool rosinstall5、初始化 rosdep
pi@raspberrypi:~ $ sudo rosdep init
pi@raspberrypi:~ $ rosdep update
6、创建catkin的工作空间
mkdir ~/ros_catkin_ws cd ~/ros_catkin_ws7、可以选择以下两个版本来安装:
ROS基础版
-
$ rosinstall_generator ros_comm --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-ros_comm-wet.rosinstall $ wstool init src indigo-ros_comm-wet.rosinstall
ROS Desktop版
-
$ rosinstall_generator desktop --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-desktop-wet.rosinstall $ wstool init src indigo-desktop-wet.rosinstall
如果在安装过程中断则
wstool update -t src
8、另外再安装一些
Desktop所需依赖包:libconsole-bridge-dev, liblz4-dev, liburdfdom-headers-dev, liburdfdom-dev, collada-dom-dev
8.0、新建external_src和安装 checkinstall cmake
pi@raspberrypi:~ $ mkdir ~/ros_catkin_ws/external_src
pi@raspberrypi:~ $ sudo apt-get install checkinstall cmake
8.1、安装libconsole-bridge-dev
添加软件源
sudo sh -c 'echo "deb-src http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi" >> /etc/apt/sources.list' sudo apt-get update
cd ~/ros_catkin_ws/external_src sudo apt-get build-dep console-bridge apt-get source -b console-bridge sudo dpkg -i libconsole-bridge0.2*.deb libconsole-bridge-dev_*.deb8.2、安装 libliz4-dev
cd ~/ros_catkin_ws/external_src apt-get source -b lz4 sudo dpkg -i liblz4-*.deb8.3、安装 liburdfdom-headers-dev
cd ~/ros_catkin_ws/external_src git clone https://github.com/ros/urdfdom_headers.git cd urdfdom_headers git reset --hard 9aed725 cmake . sudo checkinstall make install
提供多个选项的时候,选择2修改包名称为liburdfdom-header-dev,然后在之后的两个问题都选择N,否则最后编译时会出错。
cd ~/ros_catkin_ws/external_src sudo apt-get install libboost-test-dev libtinyxml-dev git clone https://github.com/ros/urdfdom.git cd urdfdom cmake . sudo checkinstall make install
提供多个选项的时候,选择2修改包名称为liburdfdom-dev,然后在之后的两个问题都选择N,否则最后编译时会出错。
注意:因为urdfdom和urdfdom-header在github都已经更新,所以请自行到github下载urdfdom-0.3.zip和urdf_header-0.4.zip,来替换相应的包,然后继续使用cmake . 和sudo checkinstall make install来安装即可。不然报错,以下错误分析会提到。
8.5、collada-dom-dev:
cd ~/ros_catkin_ws/external_src sudo apt-get install libboost-filesystem-dev libxml2-dev wget http://downloads.sourceforge.net/project/collada-dom/Collada%20DOM/Collada%20DOM%202.4/collada-dom-2.4.0.tgz tar -xzf collada-dom-2.4.0.tgz cd collada-dom-2.4.0 cmake . sudo checkinstall make install提供多个选项的时候,选择2修改包名称为 liburdfdom-dev ,然后在之后的两个问题都选择N,否则最后编译时会出错。
9、使用rosdep来解决依赖问题
cd ~/ros_catkin_ws rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:jessie10、编译catkin workspace
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo最后如果完全成功,则
source /opt/ros/indigo/setup.bash基本过程就是这样。
接下来解决几个问题:
1、如果是rviz、collada_urdf和collada_to_urdf出现了Assimp::IOSystem的相关错误则在
/home/pi/ros_catkin_ws/src/rviz/src/rviz/mesh_loader.cpp和
/home/pi/ros_catkin_ws/devel_isolated/collada_urdf/lib/collada_urdf中的collada_to_urdf和collada_urdf中
$#if defined(ASSIMP_UNIFIED_HEADER_NAMES)
$..........
$#endif
处添加以下代码:
$#ifdef __arm__ // fix for ARM build $#include <strings.h> $bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const ${ $ return !::strcasecmp(p1, p2); $} $# endif
2、Not foud eigen3
在http://eigen.tuxfamily.org/index.php?title=Main_Page上下载个稳定的eigen,•
运行指令:sudo tar -xvjf ~/ eigen-eigen-5a0156e40feb.tar.bz2 -C /usr/local/include
sudo mv /usr/local/include/eigen-eigen-5a0156e40feb /usr/local/include/eigen3
其中: eigen-eigen-5a0156e40feb.tar.bz2和eigen-eigen-5a0156e40feb为下载和解压后的名称,即可。
3、有残缺的依赖问题
可以尝试使用 :sudo apt-get -f install
修复
4、如果提示没安装依赖项libconsole-bridge0.2v5,可以 尝试
cd ~/ros_catkin_ws/external_src
sudo apt-get install libboost-system-dev libboost-thread-dev
git clone https://github.com/ros/console_bridge.git
cd console_bridge
cmake .
sudo checkinstall make install
然后使用sudo apt-get -f install 来修复依赖关系。
5、qt_gui_cpp fails building sip bindings(57)
更新qt_gui_cpp,就是说,下载新的qt_gui_cpp,然后解压到src中,即可。
6、Eigen3 cmake module not found.
尝试使用:指定使用cmake-3.0来编译sudo ./src/catkin/bin/catkin_make_isolated—install -DCMAKE_BUILD_TYPE=Release -DCMAKE_MODULE_PATH=/usr/share/cmake-3.0/Modules --install-space /opt/ros/indigo
来安装
如果还有新的问题没解决,请到https://answers.ros.org/question/
和
https://github.com/ros/
上查找相关的Issues来解决。
以下为几张错误图片:
rviz,collada-urdf collada-to-urdf