ROS与开发板入门教程-树莓派2源码安装ROS环境(wheey+indigo)
ROS与开发板入门教程-树莓派2源码安装ROS环境(wheey+indigo)
说明
- 介绍树莓派2官方系统wheey通过源码安装ROS环境
刷系统
下载wheey镜像
- 目前wheey的2015-05-05的版本应该是最新版本。 点击下载2015-05-05-raspbian-wheezy.zip
安装镜像
- 参考这个文章来安装镜像,树莓派3-系统安装-Windows下利用Win32DiskImager进行系统安装
设置网络
- 连接网线,使用DHCP自动获取IP地址和DNS。
不知道IP,查找。
- 方法:通过登录路由器查看设备,在查看设备分配的IP
- 方法:下载Advanced IP Scanner ,扫描下就知道。
登录系统
安装准备
- 设置系统源为国内的源,更新速度更快。
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份
$ sudo nano /etc/apt/sources.list
- 删除之前的源,增加新源
deb http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib rpi
- 设置ROS源
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu wheezy main" > /etc/apt/sources.list.d/ros-latest.list'
- 添加KEY
$ wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
- 更新软件
$ sudo apt-get update
$ sudo apt-get upgrade
- 安装Bootstrap依赖
$ sudo apt-get install python-pip python-setuptools python-yaml python-argparse python-distribute python-docutils python-dateutil python-six
$ sudo pip install rosdep rosinstall_generator wstool rosinstall
- 初始化rosdep
$ sudo rosdep init
$ rosdep update
安装ROS
- 建立工作空间
$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws
- 安装核心版
$ 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
- 安装桌面版
$ rosinstall_generator desktop --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-desktop-wet.rosinstall
$ wstool init src indigo-desktop-wet.rosinstall
- 上面命令下载相应的代码,需要花很长事件下载,如果中间中断,可执行:(如果太多提示is active, 中断再执行)
wstool update -t src
额外的包通过手工解决依赖
Desktop: libconsole-bridge-dev, liblz4-dev, liburdfdom-headers-dev, liburdfdom-dev, collada-dom-dev
创建额外的编译目录
mkdir ~/ros_catkin_ws/external_src
sudo apt-get install checkinstall cmake
- 安装libconsole-bridge-dev
$ 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
在最后一步checkinstall的时候,会询问多个问题,在有一个问题提供多个选项的时候,选择2修改包名称为libconsole-bridge-dev,然后在之后的两个问题都选择N,否则最后编译时会出错
安装liburdfdom-headers-dev
$ cd ~/ros_catkin_ws/external_src
$ git clone https://github.com/ros/urdfdom_headers.git
$ cd urdfdom_headers
$ cmake .
$ sudo checkinstall make install
在最后一步checkinstall的时候,会询问多个问题,在有一个问题提供多个选项的时候,选择2修改包名称为liburdfdom-headers-dev,然后在之后的两个问题都选择N,否则最后编译时会出错。
安装liburdfdom-dev
$ 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
在最后一步checkinstall的时候,会询问多个问题,在有一个问题提供多个选项的时候,选择2修改包名称为liburdfdom-dev,然后在之后的两个问题都选择N,否则最后编译时会出错。
安装collada-dom-dev
$ cd ~/ros_catkin_ws/external_src
$ sudo apt-get install libboost-filesystem-dev libxml2-dev
$ wget https://ncu.dl.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
collada-dom-2.4.0.tgz大概几十兆,建议本地下载后传到树莓派中。
在最后一步checkinstall的时候,会询问多个问题,在有一个问题提供多个选项的时候,选择2修改包名称为collada-dom-dev,然后在之后的两个问题都选择N,否则最后编译时会出错。
安装liblz4-dev
$ cd ~/ros_catkin_ws/external_src
$ wget http://archive.raspbian.org/raspbian/pool/main/l/lz4/liblz4-1_0.0~r122-2_armhf.deb
$ wget http://archive.raspbian.org/raspbian/pool/main/l/lz4/liblz4-dev_0.0~r122-2_armhf.deb
$ sudo dpkg -i liblz4-1_0.0~r122-2_armhf.deb liblz4-dev_0.0~r122-2_armhf.deb
- 利用rosdep解决依赖
$ cd ~/ros_catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:wheezy
- 花相当长时间来安装依赖包
- 部分文件需打补丁,避免报错。
- /home/pi/ros_catkin_ws/src/rviz/src/rviz目录中找到mesh_loader.cpp文件:
- 找到
#if defined(ASSIMP_UNIFIED_HEADER_NAMES)
#include <assimp/Importer.hpp>
#include <assimp/scene.h>
#include <assimp/postprocess.h>
#include <assimp/IOStream.hpp>
#include <assimp/IOSystem.hpp>
#else
#include <assimp/assimp.hpp>
#include <assimp/aiScene.h>
#include <assimp/aiPostProcess.h>
#include <assimp/IOStream.h>
#include <assimp/IOSystem.h>
#endif
- 在其后添加:
#ifdef __arm__
#include <string.h>
bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const
{
return !::strcasecmp(p1, p2);
}
#endif
在/home/pi/ros_catkin_ws/src/robot_model/collada_urdf/src目录中找到collada_to_urdf.cpp和collada_urdf.cpp文件,也同样添加以上代码段后保存退出。
编译
$ cd ~/ros_catkin_ws
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo -j2
- 启用环境
$ source /opt/ros/indigo/setup.bash
- 添加到.bashrc
$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
- 测试roscore
$ roscore
- 测试rostopic
$ rostopic list
错误提示
- 错误:缺少opencv
- 解决:安装opencv。
$ sudo apt-get install libcv-dev
$ sudo apt-get install libopencv-dev
错误:编译过程中会编译180多个package并同时安装在/opt/ros/indigo目录,经常会报出 'urdf' 'collada_parser‘ ’collada_urdf' 这几个包出错而中断安装。
解决:办法就是将这三个包从目录 ~/ros_catkin_ws/src/robot_model 目录中移出,再重新编译整个ROS. 最后单独建立一个workspace,将三个包放到src/robot_model 目录中。 再执行下面命令:
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo
- 如果仍然报错,则需要重新一个一个安装 步骤3.2中的 liburdfdom-dev,liblz4-dev, 和 collada-dom-dev 包,每安装一个重新编译一遍,成功编译的包可以删除,直到最后都编译成功。
参考:
- http://www.roswiki.com/read.php?tid=597
- http://blog.csdn.net/crazyquhezheng/article/details/43413231
- http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi
- https://wiki.ubuntu.com/ARM/RaspberryPi
- http://mirrors.163.com/.help/debian.html
- https://www.raspbian.org/
- https://www.raspbian.org/RaspbianMirrors
- https://github.com/adafruit/Adafruit-Pi-Finder#adafruit-raspberry-pi-finder
- https://downloads.raspberrypi.org/
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号