树莓派3上安装ros完整版

官方安装教程
主要安装步骤大家参考官方教程,下面的算是我对官方教程的一点补充说明,也许可以帮助大家少走点弯路。官方教程上支持的树莓派系统版本为wheezy和jessie;我用的是最新的jessie。

1.在第一步添加ros仓库路径时,教程上给出的是国外的地址,这里我觉得最好是用国内的镜像,速度会快很多。

sudo sh -c 'echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu jessie main" > /etc/apt/sources.list.d/ros-latest.list'

2.在选择安装版本,官方给出的示例是ros-comm和desktop两种,ros-comm只包含一些基础的package,不包含gui工具,安装起来会比较顺利和快速;而desktop则包含完整的工具包。选择安装ros-comm,按照教程一步步来不会有什么问题,而安装desktop则需要注意按教程上说的手动安装一些依赖的package。
其实这里具体安装哪些东西是可以自己自主选择的,如果想安装desktop,又不想那么麻烦去手动下载那几个package,就可以直接使用下面的指令,去掉collada_parser collada_urdf这几个烦人的package,如果你用的是jessie的话,去掉这几个package就不再需要手动添加什么依赖文件了,直接使用rosdep就能自动安装好所有的依赖文件,省去一些麻烦事。当然如果你确实要用到上述那几个包就另说了。

$ rosinstall_generator desktop --rosdistro indigo --deps --wet-only --exclude roslisp collada_parser collada_urdf --tar > indigo-desktop-wet.rosinstall

3.编译过程会很漫长,完整版有将近两百个package要编译,我刚开始的时候老是会卡在一个地方一直不动,也不提示有什么错误,试了好几次都不行,后来试着在编译指令里把“-j2”加进去就好了,这个应该还是和树莓派的处理能力有关,并行数太多容易死机,用“-j2”减少并行处理的数量就能解决问题,如果还有问题就改成“-j1”。

sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo -j1

4.编译完整版时提示的关于“collada_urdf”的错误,这个问题在google group上有专门的讨论和解决方案,大家有兴趣可以去看:goole group链接
具体解决方法就是在/home/pi/ros_catkin_ws/src/robot_model/collada_urdf/src/中添加一个fix.patch文件,文件内容如下:

From 7e9c381043c9c33d594b66fad853bf69df044769 Mon Sep 17 00:00:00 2001
From: Paul Mathieu 
Date: Tue, 12 Mar 2013 13:28:23 -0700
Subject: [PATCH] fixed arm build

---
 src/collada_urdf.cpp |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/collada_urdf.cpp b/src/collada_urdf.cpp
index acebfb2..1d4beb6 100644
--- a/src/collada_urdf.cpp
+++ b/src/collada_urdf.cpp
@@ -68,6 +68,13 @@
 #include 
 #include 
 #include 
+#  ifdef __arm__                 // fix for ARM build
+#include 
+bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const
+{
+    return !::strcasecmp(p1, p2);
+}
+#  endif
 #else
 #include 
 #include 
-- 
1.7.9.5

然后在该路径下执行:

patch patch

会收到补丁添加成功的提示。

5.接下来会碰到rviz的编译错误,这个跟上面那个问题类似,处理方法可参见这里rviz编译失败的解决方法
归纳起来就是在~/ros_catkin_ws/src/rviz/src/rviz/mesh_loader.cpp中添加下面几行代码:

#  ifdef __arm__                 // fix for ARM build
#include 
bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const
{
    return !::strcasecmp(p1, p2);
}
#  endif

将这几行加在头文件声明结束的后面,如下:

#include 
#include 
#include 
#include 
#endif
#  ifdef __arm__                 // fix for ARM build
#include 
bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const
{
    return !::strcasecmp(p1, p2);
}
#  endif
namespace fs = boost::filesystem;

namespace rviz

接下来再编译就没什么问题了,cheers~!

树莓派3上安装ros完整版_第1张图片

你可能感兴趣的:(树莓派3)