树莓派3上面安装ros总结
参考wiki和诸多博客安装ros仍然遇到了很多问题,重装了好几遍才成功,为了自己和其他人以后再安装ros时,不在重蹈覆辙。
1.准备和说明
树莓派3,安装系统Raspbian jessie版本,安装ROS Indigo。
博主是在树莓派3的Raspbian jessie系统上安装ROS Indigo,注意,下面讲的jessie的上面的安装过程。
网上很多博文没有说清楚Jessie的安装过程,具体可以查看wiki,后面也将讲到这个。
2.安装准备
  2.1.创建ros代码仓库
  Raspbian Jessie:

$ 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 -

  2.2.然后更新软件源(如果源是最新的不更新也可以,但是可能会出错,最好更新一下)

$ sudo apt-get update
$ sudo apt-get upgrade

  2.3.安装依赖包

  Raspbian Jessie:

$ 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 rosinstall

  2.4.初始化rosdep

$ sudo rosdep init
$ rosdep update

3.开始安装

  3.1.创建catkin工作空间编译ros源码

$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

  3.2.下载ROS源码

  我安装的是Desktop的版本,因此下载desktop版本的源码并产生package列表。
  desktop包含的工具:ROS, rqt, rviz, and robot-generic libraries。

$ rosinstall_generator desktop --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-desktop-wet.rosinstall
$ wstool init src indigo-desktop-wet.rosinstall

  下载会耗很长时间,可以使用8个线程提高速度

$ wstool init src indigo-desktop-wet.rosinstall -j8

  如果中途下载中断,可以使用下面的命令恢复下载,如果不确定是否完全下载也可以用下面的命令来检测

$ wstool update -t src

注意:

如果安装ROS-Comm版本,按照下面的命令操作:
(desktop包含的工具:ROS package, build, and communication libraries. No GUI tools.)

$ 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

  3.3.安装软件源没有的依赖包

  这个地方很重要,wiki上明确指出了每个系统中那些依赖包没有,和ros不同版本需要哪些依赖包。具体如下:
  Raspbian Wheezy的系统中右边的依赖包没有提供: libconsole-bridge-dev, liburdfdom-headers-dev, liburdfdom-dev, liblz4-dev, collada-dom-dev
  Raspbian Jessie的系统中右边的依赖包没有提供: collada-dom-dev
  Ros_Comm版本需要右边的依赖包: libconsole-bridge-dev, liblz4-dev
  Desktop版本需要右边的依赖包: libconsole-bridge-dev, liblz4-dev, liburdfdom-headers-dev, liburdfdom-dev, collada-dom-dev
  从上面的看出来Jessie的系统装desktop版本只需要安装collada-dom-dev
  下面是安装collada-dom-dev的步骤:
    3.3.1.安装编译工具cmake

$ mkdir ~/ros_catkin_ws/external_src
$ sudo apt-get install checkinstall cmake

    3.3.2.添加源,否则可能找不到collada-dom-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

    3.3.3.安装collada-dom-dev

    注意:我的jessie版本的系统中g++编译器是4.9版本,所以不需要升级g++编译器,但是这个包需要c++11的支持,因此,g++编译需要4.7版本以上。
    升级编译器的语句在后面有说明,自己根据自己的实际情况来。

$ 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..tgz
$ cd collada-dom-2.4.
$ cmake .
$ sudo checkinstall make install

    check-install开始会让你输入包的描述,可以直接按回车跳过。当checkinstall询问是否改变安装选项时,选择[2],将名字从 "collada-dom"改为 "collada-dom-dev" ,其余有[y]或[n]的问题都输入'n'按回车, 否则会编译出错。

  3.4.解决rosdep的依赖
  Raspbian Jessie:

$ cd ~/ros_catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:jessie

  接下来的安装会花很长时间。

  注意: Rosdep可能会提示python-rosdep, python-catkin-pkg, python-rospkg, 和 python-rosdistro 安装失败,可以忽略这些错误,因为他们已经由pip安装好了。
  3.5.编译catkin工作空间
    3.5.1.先打三个补丁

#ifdef __arm__
#include <strings.h>
bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const {
return !::strcasecmp(p1,p2);
}
#endif

    将上面的代码添加到

    ~/ros_catkin_ws/src/robot_model/collada_urdf/src/collada_urdf.cpp与
    ~/ros_catkin_ws/src/robot_model/collada_urdf/src/collada_to_urdf.cpp和
    ~/ros_catkin_ws/src/rviz/src/rviz/mesh_loader.cpp
    文件的最后一个#include(如果#include的下一行是#endif则放到#endif后)行后。
    3.5.2.修改交换空间大小
    树莓派在编译的时候会消耗很多CPU和内存资源,可能会出现死机和编译器内部错误,为了防止这种情况发生,需修改系统交换空间大小。
    注意:这个一定要修改一下,否则很可能会出错。

$ sudo vi /etc/dphys-swapfile

    找到CONF_SWAPSIZE=100,修改为 CONF_SWAPSIZE=1024

    修改完后重启树莓派才能生效

$ sudo reboot

    3.5.3.正式编译和安装

$ cd ~/ros_catkin_ws
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo

    执行上面命令默认使用4个核心来编译,会使得CPU的使用率长时间为100%,容易死机,所以我们可以加上-j2参数设定树莓派使用2个核心编译。

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

    这部编译需要很长时间,第一次编译需要3个小时以上。

4.设置ros
设置一下ROS的环境变量。

$ source /opt/ros/indigo/setup.bash

设置ROS环境变量在每次启动shell时自动添加到bash会话

$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc

到这里我们的ROS完整版就已经成功安装好了,不妨运行roscore试一下

$ roscore

成功运行roscore就证明我们安装成功了

以上是我安装成功时的步骤,然后下面我说明一下我编译时遇到错误。
首先困扰最大的就是3.3的步骤中安装依赖包,很多博客没有说清楚,我以为jessie也需要安装Desktop版本需要的依赖包: libconsole-bridge-dev, liblz4-dev, liburdfdom-headers-dev, liburdfdom-dev, collada-dom-dev的所有包。
结果在安装'urdf' 'collada_parser' 'collada_urdf'的时候总是出错
1.std中没有stod函数等错误,这是因为g++编译器版本过低,或者编译命令没有-std=c++11的选项。
解决方法:
升级g++编译

sudo apt-get install g++-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
sudo update-alternatives --config gcc

或者添加-std=c++11的选项

在对应的出错包的目录下面的CMakeLists.txt中添加下面的语句:

add_compile_options(-std=c++)

或者

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++0x")

例如是urdf包出错就在

~/ros_catkin_ws/src/robot_model/urdf/CMakeLists.txt 27行configure_file(urdfdom_compatibility.h.in "${generated_compat_header}" @ONLY)的下面增加add_compile_options(-std=c++11)
或者
~/ros_catkin_ws/src/robot_model/urdf/CMakeLists.txt 15行pkg_check_modules(libpcrecpp libpcrecpp)的下面增加set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++0x")
我的jessie版本的系统中G++编译器是4.9版本,所以在上面3.3的步骤里面没有增加升级g++编译器的版本,如果g++编译器是4.7以下,可自己升级。
2./usr/local/include/urdf_world/types.h和/home/pi/ros_catkin_ws/devel_isolated/urdf/include/urdf/urdfdom_compatibility.h中的typedef std::shared_ptr<ModelInterface> ModelInterfaceSharedPtr;这个类型重复定义的错误
urdfdom_headers中urdf_world/types.h的内容如下:

/*********************************************************************
* Software License Agreement (BSD License)
*
* Copyright (c) 2008, Willow Garage, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of the Willow Garage nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/ /* Author: Steve Peters */ #ifndef URDF_WORLD_TYPES_H
#define URDF_WORLD_TYPES_H #include <memory> namespace urdf{ class ModelInterface; // typedef shared pointers
typedef std::shared_ptr<ModelInterface> ModelInterfaceSharedPtr; } #endif

/usr/local/include/urdf_world/types.h中的typedef boost::shared_ptr<ModelInterface> ModelInterfaceSharedPtr;和上面不同。

可以看出来安装urdfdom_headers的时候/usr/local/include/urdf_world/types.h会替换成上面的定义方式,出现上面的错误时,可以检查一下,和上面的不同说明urdfdom_headers安装有错。
因为"collada_parser"的依赖包"liburdfdom-headers-dev"在最近的几个版本都用使用C++11的std替换掉了boost组件,而"collada_parer"源码里面用的依旧是boost组件。
3.如果替换后还是出错,可能就是我在上面说的,jessie中包含了urdfdom_headers包,所以不需要安装urdfdom_headers等包,那么需要将上面安装的卸载。
下面给出我的包安装顺序:

~~ traversing  packages in topological order:
~~ - catkin
~~ - genmsg
~~ - gencpp
~~ - genlisp
~~ - genpy
~~ - bond_core
~~ - cmake_modules
~~ - class_loader
~~ - common_msgs
~~ - common_tutorials
~~ - cpp_common
~~ - desktop
~~ - diagnostics
~~ - eigen_stl_containers
~~ - executive_smach
~~ - geometry
~~ - geometry_tutorials
~~ - gl_dependency
~~ - media_export
~~ - message_generation
~~ - message_runtime
~~ - mk
~~ - nodelet_core
~~ - octomap (plain cmake)
~~ - orocos_kdl (plain cmake)
~~ - python_orocos_kdl (plain cmake)
~~ - qt_dotgraph
~~ - qt_gui
~~ - qt_gui_py_common
~~ - qwt_dependency
~~ - random_numbers
~~ - robot
~~ - robot_model
~~ - ros
~~ - ros_base
~~ - ros_comm
~~ - ros_core
~~ - ros_tutorials
~~ - rosbag_migration_rule
~~ - rosbash
~~ - rosboost_cfg
~~ - rosbuild
~~ - rosclean
~~ - roscpp_core
~~ - roscpp_traits
~~ - roscreate
~~ - rosgraph
~~ - roslang
~~ - roslint
~~ - rosmake
~~ - rosmaster
~~ - rosmsg
~~ - rospack
~~ - roslib
~~ - rosparam
~~ - rospy
~~ - rosservice
~~ - rostime
~~ - roscpp_serialization
~~ - python_qt_binding
~~ - roslaunch
~~ - rosunit
~~ - angles
~~ - rosconsole
~~ - pluginlib
~~ - qt_gui_cpp
~~ - resource_retriever
~~ - rosconsole_bridge
~~ - roslz4
~~ - rosbag_storage
~~ - rostest
~~ - rqt_action
~~ - rqt_bag
~~ - rqt_bag_plugins
~~ - rqt_common_plugins
~~ - rqt_console
~~ - rqt_dep
~~ - rqt_graph
~~ - rqt_gui
~~ - rqt_logger_level
~~ - rqt_moveit
~~ - rqt_msg
~~ - rqt_nav_view
~~ - rqt_plot
~~ - rqt_pose_view
~~ - rqt_publisher
~~ - rqt_py_console
~~ - rqt_reconfigure
~~ - rqt_robot_dashboard
~~ - rqt_robot_monitor
~~ - rqt_robot_plugins
~~ - rqt_robot_steering
~~ - rqt_runtime_monitor
~~ - rqt_service_caller
~~ - rqt_shell
~~ - rqt_srv
~~ - rqt_tf_tree
~~ - rqt_top
~~ - rqt_topic
~~ - rqt_web
~~ - smach
~~ - smclib
~~ - std_msgs
~~ - actionlib_msgs
~~ - bond
~~ - diagnostic_msgs
~~ - geometry_msgs
~~ - eigen_conversions
~~ - kdl_conversions
~~ - nav_msgs
~~ - rosgraph_msgs
~~ - rqt_py_common
~~ - sensor_msgs
~~ - image_geometry
~~ - map_msgs
~~ - shape_msgs
~~ - smach_msgs
~~ - std_srvs
~~ - stereo_msgs
~~ - tf2_msgs
~~ - tf2
~~ - trajectory_msgs
~~ - control_msgs
~~ - urdf_parser_plugin
~~ - visualization_msgs
~~ - geometric_shapes
~~ - visualization_tutorials
~~ - viz
~~ - webkit_dependency
~~ - xmlrpcpp
~~ - roscpp
~~ - bondcpp
~~ - bondpy
~~ - joint_state_publisher
~~ - nodelet
~~ - nodelet_tutorial_math
~~ - pluginlib_tutorials
~~ - roscpp_tutorials
~~ - rosout
~~ - cv_bridge
~~ - diagnostic_aggregator
~~ - diagnostic_updater
~~ - diagnostic_common_diagnostics
~~ - dynamic_reconfigure
~~ - filters
~~ - message_filters
~~ - image_transport
~~ - rosnode
~~ - rospy_tutorials
~~ - rostopic
~~ - roswtf
~~ - rqt_gui_cpp
~~ - rqt_gui_py
~~ - rqt_image_view
~~ - self_test
~~ - smach_ros
~~ - tf2_py
~~ - topic_tools
~~ - rosbag
~~ - actionlib
~~ - actionlib_tutorials
~~ - diagnostic_analysis
~~ - nodelet_topic_tools
~~ - rqt_launch
~~ - tf2_ros
~~ - tf
~~ - interactive_markers
~~ - interactive_marker_tutorials
~~ - laser_geometry
~~ - tf2_kdl
~~ - tf_conversions
~~ - turtlesim
~~ - turtle_actionlib
~~ - turtle_tf
~~ - turtle_tf2
~~ - urdf
~~ - collada_urdf
~~ - collada_parser
~~ - kdl_parser
~~ - robot_state_publisher
~~ - rviz
~~ - librviz_tutorial
~~ - rqt_rviz
~~ - rviz_plugin_tutorials
~~ - rviz_python_tutorial
~~ - visualization_marker_tutorials
~~ - xacro
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

可以在

上面是安装Raspbian jessie的过程,下面说明Raspbian Wheezy版本安装ros的步骤:
1.创建ros代码仓库

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu wheezy main" > /etc/apt/sources.list.d/ros-latest.list'
$ wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -

2.然后更新软件源(如果源是最新的不更新也可以,但是可能会出错,最好更新一下)

$ sudo apt-get update
$ sudo apt-get upgrade

3.安装依赖包

$ 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

4.初始化rosdep

$ sudo rosdep init
$ rosdep update

5.创建catkin工作空间编译ros源码

$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

6.下载ROS源码

我安装的是Desktop的版本,因此下载desktop版本的源码并产生package列表。
desktop包含的工具:ROS, rqt, rviz, and robot-generic libraries。

$ rosinstall_generator desktop --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-desktop-wet.rosinstall
$ wstool init src indigo-desktop-wet.rosinstall

下载会耗很长时间,可以使用多线程提高速度

$ wstool init src indigo-desktop-wet.rosinstall -j8

如果中途下载中断,可以使用下面的命令恢复下载,如果不确定是否完全下载也可以用下面的命令来检测

$ wstool update -t src

注意:

如果安装ROS-Comm版本,按照下面的命令操作:
(desktop包含的工具:ROS package, build, and communication libraries. No GUI tools.)

$ 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

7.安装软件源没有的依赖包

根据上面的说明Raspbian Wheezy的系统需要安装这些包: libconsole-bridge-dev, liburdfdom-headers-dev, liburdfdom-dev, liblz4-dev, collada-dom-dev。这也是和Raspbian jessie版本中安装过程的主要区别,不要弄混淆了,否则可能出一些莫名其妙的错误总是失败。
  7.1.创建一个新目录来存放这5个依赖包

$ mkdir ~/ros_catkin_ws/external_src
$ sudo apt-get install checkinstall cmake
$ 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

注意:update这一步不能省,确保全部更新完成,即使网络不好也要执行,博主在这一步因为update太慢直接跳过但是后面报错了。

  7.2.安装libconsole-bridge-dev:

$ cd ~/ros_catkin_ws/external_src
$ sudo apt-get build-dep console-bridge
$ apt-get source -b console-bridge
$ sudo dpkg -i libconsole-bridge0.*.deb libconsole-bridge-dev_*.deb

  如果看到关于'-std=c++11' 的错误,按照下面的步骤将gcc版本升级到gcc 4.7+

sudo apt-get install g++-4.7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
sudo update-alternatives --config gcc

  7.3.安装liblz4-dev:

$ cd ~/ros_catkin_ws/external_src
$ apt-get source -b lz4
$ sudo dpkg -i liblz4-*.deb

  7.4.安装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

  前面分析了编译过程可能出现"collada_parser"报错的原因,这里的'9aed725'就是将"liburdfdom-headers-dev"的安装版本变成我们需要的1.0.0版本。

  check-install开始会让你输入包的描述,可以直接按回车跳过。当checkinstall询问是否改变安装选项时,选择[2],将名字从"urdfdom-headers" 改为 "liburdfdom-headers-dev",其余有[y]或[n]的问题都输入'n'按回车, 否则会编译出错
  :因为rosdep不认这几个package默认安装的名字,所以需要我们在安装的时候修改package名
  安装完成后我们可以用下面的命令来查看已安装的包

$ dpkg -l

  或者

$ apt-cache search XX | grep XX

  (XX表示包的部分名称)

  运行上面命令在列表中没有看到我们安装的"liburdfdom-headers-dev"包,或者package名没有修改成功,运行下面命令重新安装(为确保这里的每个依赖包都正确安装,建议每安装一个包之后都用这个方法检查一遍)

$ sudo checkinstall make install

  安装"liburdfdom-headers-dev"后我们还要下载添加一个文件(utils.h)到/usr/local/include/urdf_model目录下,否则编译会报错

$ cd /usr/local/include/urdf_model
$ sudo wget https://raw.githubusercontent.com/ros/urdfdom_headers/master/urdf_model/include/urdf_model/utils.h

  7.5.安装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

  check-install开始会让你输入包的描述,可以直接按回车跳过。当checkinstall询问是否改变安装选项时,选择[2],将名字从 "urdfdom"改为"liburdfdom-dev" ,其余有[y]或[n]的问题都输入'n'按回车, 否则会编译出错

  7.6.安装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..tgz
$ cd collada-dom-2.4.
$ cmake .
$ sudo checkinstall make install

  check-install开始会让你输入包的描述,可以直接按回车跳过。当checkinstall询问是否改变安装选项时,选择[2],将名字从 "collada-dom"改为 "collada-dom-dev" ,其余有[y]或[n]的问题都输入'n'按回车, 否则会编译出错

8.解决rosdep的依赖

$ cd ~/ros_catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:wheezy

接下来的安装会花很长时间。

注意: Rosdep可能会提示python-rosdep, python-catkin-pkg, python-rospkg, 和 python-rosdistro 安装失败,可以忽略这些错误,因为他们已经由pip安装好了。
9.编译catkin工作空间
  9.1.先打三个补丁

#ifdef __arm__
#include <strings.h>
bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2) const {
return !::strcasecmp(p1,p2);
}
#endif

  将上面的代码添加到

  ~/ros_catkin_ws/src/robot_model/collada_urdf/src/collada_urdf.cpp与
  ~/ros_catkin_ws/src/robot_model/collada_urdf/src/collada_to_urdf.cpp和
  ~/ros_catkin_ws/src/rviz/src/rviz/mesh_loader.cpp
  文件的最后一个#include(如果#include的下一行是#endif则放到#endif后)行后。
  9.2.修改交换空间大小
  树莓派在编译的时候会消耗很多CPU和内存资源,可能会出现死机和编译器内部错误,为了防止这种情况发生,需修改系统交换空间大小。
  注意:这个一定要修改一下,否则很可能会出错。

$ sudo vi /etc/dphys-swapfile

  找到CONF_SWAPSIZE=100,修改为 CONF_SWAPSIZE=1024

  修改完后重启树莓派才能生效

$ sudo reboot

  9.3.正式编译和安装

$ cd ~/ros_catkin_ws
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo

  执行上面命令默认使用4个核心来编译,会使得CPU的使用率长时间为100%,容易死机,所以我们可以加上-j2参数设定树莓派使用2个核心编译。

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

  这部编译需要很长时间,第一次编译需要3个小时以上。

  9.4.设置ros
  设置一下ROS的环境变量。

$ source /opt/ros/indigo/setup.bash

  设置ROS环境变量在每次启动shell时自动添加到bash会话

$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc

  到这里我们的ROS完整版就已经成功安装好了,不妨运行roscore试一下

$ roscore

  成功运行roscore就证明我们安装成功了。

其他系统下ros的安装过程可参考wiki,比较简单这里只给出地址
debian系统下安装ros:http://wiki.ros.org/kinetic/Installation/Debian
ubuntu系统下安装ros:http://wiki.ros.org/kinetic/Installation/Ubuntu
这是github上ros的源码(需要翻墙):https://github.com/ros

参考博客:
http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi
http://blog.csdn.net/crazyquhezheng/article/details/43413231
http://blog.csdn.net/Super_Miao0/article/details/53571753

树莓派3安装ros的更多相关文章

  1. 树莓派安装ros

    之前电脑安装过ros感觉还好,没成想这次在树莓派上安装费老劲了,出现了很多错误,装了卸,卸了装废了半天劲下面将一些安装的错误和问题做个总结方便以后的安装也希望给别人一个参考 ros安装(对照自己的版本 ...

  2. SLAM+语音机器人DIY系列:(二)ROS入门——3.在ubuntu16.04中安装ROS kinetic

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  3. Ubuntu安装 Docker CE,VNC访问docker图形界面并安装ROS

    从包安装 如果您无法使用Docker的存储库来安装Docker CE,则可以下载.deb适用于您的发行版的 文件并手动安装.每次要升级Docker CE时都需要下载新文件. 安装Docker CE,将 ...

  4. ubuntu14上安装ros教程

    安装ROS 官方的安装教程地址 http://wiki.ros.org/cn/jade/Installation/Ubuntu 建议安装indigo版的 下面的教程是安装jade版的 配置Ubuntu ...

  5. 树莓派centos安装的基本配置

    萌新再发一帖,这篇文章呢主要是为大家在树莓派上安装centos以后提供一个问题的解决方案. 首先我呢觉得好奇就在某宝上花了两百来块钱买了一套树莓派,很多人喜欢在树莓派上安装Debian,我呢更青睐用R ...

  6. ROS_Kinetic_01 在ubuntu 16.04安装ROS Kinetic 2017.01更新

    ROS_Kinetic系列学习(一),在ubuntu 16.04安装ROS Kinetic. Celebrating 9 Years of ROS! ubuntu16.04已经发布半年多了,ROS的K ...

  7. TX2 安装 ROS 依赖库错误解决办法

    一.更换ubuntu 16.04 更新源 1. 更新源 deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse rest ...

  8. GO语言.树莓派.环境安装和测试

    Go是Google开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言.为了方便搜索和识别,有时会将其称为Golang 记录一下如何在树莓派上安装语言环境 第一步: 下载安装包 http ...

  9. Ubuntu16.04 安装ROS及其IDE

    一. ROS的安装 1. 进入ROS官方网站 http://wiki.ros.org/ 2. Install -> ROS Kinetic Kame -> Ubuntu 3. 详情可参考所 ...

随机推荐

  1. Okhttp3源码解析(3)-Call分析(整体流程)

    ### 前言 前面我们讲了 [Okhttp的基本用法](https://www.jianshu.com/p/8e404d9c160f) [Okhttp3源码解析(1)-OkHttpClient分析]( ...

  2. Spring-boot:多模块打包

    <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot ...

  3. 版本管理·玩转git(快速入门git)

    如果你用过Word文档写过文章,那么你一定会有这样的经历. 我觉得某一段或者某一句写得不够好,但是,删掉之后我可能会后悔把它删掉了,进而又想把删掉的段落找回来,这时,你想到了一个好办法,将每次的修改都 ...

  4. vue-cli报错:Class constructor FileManager cannot be invoked without 'new'

    bug:vue-cli3开发的项目,今天项目重新下载依赖启动项目的时候出现错误:Class constructor FileManager cannot be invoked without 'new ...

  5. CSS 之Grid网格大致知识梳理1

    CSS所提供的关于网格Grid属性让我们可以更方便编写页面以及布局,而它的一些主要应用属性如下: 1.将父容器的display属性值设置为grid 即可将其转换为网格容器: 2.在网格容器中添加列的属 ...

  6. 从零开始搭建Java开发环境第三篇:最新版IDEA常用配置指南,打造你的最酷IDE

    刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,工欲善其事必先利其器. 比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改t ...

  7. shell操作钉钉机器人实现告警提醒

    我们知道,之前的运维告警多通过mail 等方式通知到相应的人员,难以实现随时随地的查看.随着手机APP的发展,很多告警开始发送到IM软件上去.目前比较常用的是发送到微信和钉钉上,今天我们将重点放在钉钉 ...

  8. NLP(十九) 双向LSTM情感分类模型

    使用IMDB情绪数据来比较CNN和RNN两种方法,预处理与上节相同 from __future__ import print_function import numpy as np import pa ...

  9. HDU - 3966 树链刨分

    题目传送门 操作就是询问某个点的值, 然后就是对一条路径上的值全部修改. 最基本的树刨题目了. 树刨的思想: 1. 对于每个点找到他的重儿子. void dfs1(int o, int u){ sz[ ...

  10. Light It Up CF1000B 思维

    Light It Up time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...