< >
Home » ROS与开发板入门教程 » ROS与开发板入门教程-树莓派2源码安装ROS环境(wheey+indigo)

ROS与开发板入门教程-树莓派2源码安装ROS环境(wheey+indigo)

ROS与开发板入门教程-树莓派2源码安装ROS环境(wheey+indigo)

说明

  • 介绍树莓派2官方系统wheey通过源码安装ROS环境

刷系统

安装准备

  • 设置系统源为国内的源,更新速度更快。
$ 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/

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros与开发板入门教程