设为首页 收藏本站
查看: 854|回复: 0

[经验分享] Installing ROS Indigo on the Raspberry Pi

[复制链接]

尚未签到

发表于 2017-11-22 15:43:29 | 显示全部楼层 |阅读模式
  Installing ROS Indigo on the Raspberry Pi
  Description: This instruction covers the installation of ROS Indigo on the original Raspberry Pi with Raspbian.
Keywords: Raspberry Pi, Setup, Indigo
Contents
1 Introduction
  This tutorial explains how to install ROS Indigo from source on the Raspberry Pi. The instructions follow roughly the source installation of Indigo. However, a few dependencies need to be accounted for Raspbian.
Note: If you're using the Raspberry Pi 2 you can use the standard ARM installation instructions here.
2 Prerequisites
  These instructions assume that Raspbian is being used as the OS on the Raspberry Pi. The download page for current images of Raspbian is http://www.raspberrypi.org/downloads/.
2.1 Setup ROS Repositories
  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 -
  Now, make sure your Debian package index is up-to-date:



$ sudo apt-get update
$ sudo apt-get upgrade
  2.2 Install Bootstrap Dependencies
  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.3 Initializing rosdep



$ sudo rosdep init
$ rosdep update
  3 Installation
  Now, we will download and build ROS Indigo.
3.1 Create a catkin Workspace
  In order to build the core packages, you will need a catkin workspace. Create one now:



$ mkdir ~/ros_ws
$ cd ~/ros_ws
  Next we will want to fetch the core packages so we can build them. We will use wstool for this. Select the wstool command for the particular variant you want to install:
  ROS-Comm: (Recommended) 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
  This will add all of the catkin or wet packages in the given variant and then fetch the sources into the~/ros_ws/src directory. The command will take a few minutes to download all of the core ROS packages into the src folder. The -j8 option downloads 8 packages in parallel.
  Note: The roslisp package is excluded in these generators because the dependency sbcl is not available in the Raspbian repositories. Building sbcl from source may be possible but is not tested. So far, only these two variants have been tested on the Raspberry Pi in Indigo; however, more are defined in REP 131such as robot, perception, etc. Just change the package path to the one you want, e.g., for robot do:



$ rosinstall_generator robot --rosdistro indigo --deps --wet-only --tar > indigo-robot-wet.rosinstall
$ wstool init src indigo-robot-wet.rosinstall
  Please feel free to update these instructions as you test more variants.
  If wstool init fails or is interrupted, you can resume the download by running:



wstool update -t src
  3.2 Resolve Dependencies
  Before you can build your catkin workspace, you need to make sure that you have all the required dependencies. We use the rosdep tool for this, however, a couple of dependencies are not available in the repositories. They must be manually built first.
3.2.1 Unavailable Dependencies
  Following packages are not available for Raspbian:
Raspbian Wheezy: libconsole-bridge-dev, liburdfdom-headers-dev, liburdfdom-dev, liblz4-dev,collada-dom-dev
Raspbian Jessie: collada-dom-dev
The following packages are needed for each ROS variant:
Ros_Comm: libconsole-bridge-dev, liblz4-dev
Desktop: libconsole-bridge-dev, liblz4-dev, liburdfdom-headers-dev, liburdfdom-dev, collada-dom-dev
The required packages can be built from source in a new directory:



$ mkdir ~/ros_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
  libconsole-bridge-dev:



$ cd ~/ros_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_*.deb
  Note: For Raspbian Jessie, just using the apt-get install command to install the libconsole-bridge-dev package:



$ sudo apt-get install libconsole-bridge-dev
  liblz4-dev:



$ cd ~/ros_ws/external_src
$ apt-get source -b lz4
$ sudo dpkg -i liblz4-*.deb
  Note: For Raspbian Jessie, just using the apt-get install command to install the liblz4-dev package:



$ sudo apt-get install liblz4-dev
  liburdfdom-headers-dev:



$ cd ~/ros_ws/external_src
$ git clone https://github.com/ros/urdfdom_headers.git
$ cd urdfdom_headers
$ cmake .
$ sudo checkinstall make install
  When check-install asks for any changes, the name (2) needs to change from "urdfdom-headers" to "liburdfdom-headers-dev" otherwise the rosdep install wont find it.
  liburdfdom-dev:



$ cd ~/ros_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
  When check-install asks for any changes, the name (2) needs to change from "urdfdom" to "liburdfdom-dev" otherwise the rosdep install wont find it.
  collada-dom-dev: (Note: You will also need to patch collada_urdf as described here):



$ cd ~/ros_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
  When check-install asks for any changes, the name (2) needs to change from "collada-dom" to "collada-dom-dev" otherwise the rosdep install wont find it.
  Note: If you don't want to compile Collada but would like to install the desktop variant, use the following generator:



$ rosinstall_generator desktop --rosdistro indigo --deps --wet-only --exclude roslisp collada_parser collada_urdf --tar > indigo-desktop-wet.rosinstall
  3.2.2 Resolving Dependencies with rosdep
  The remaining dependencies should be resolved by running rosdep:
Raspbian Jessie:



$ cd ~/ros_ws
$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:jessie
  This will look at all of the packages in the src directory and find all of the dependencies they have. Then it will recursively install the dependencies.
  The --from-paths option indicates we want to install the dependencies for an entire directory of packages, in this case src. The --ignore-src option indicates to rosdep that it shouldn't try to install any ROS packages in the src folder from the package manager, we don't need it to since we are building them ourselves. The --rosdistro option is required because we don't have a ROS environment setup yet, so we have to indicate to rosdep what version of ROS we are building for. Finally, the -y option indicates to rosdep that we don't want to be bothered by too many prompts from the package manager.
After a while rosdep will finish installing system dependencies and you can continue.
Note: Rosdep may report that python-rosdep, python-catkin-pkg, python-rospkg, and python-rosdistrofailed to install; however, you can ignore this error because they have already been installed with pip.
3.3 Building the catkin Workspace
  Once you have completed downloading the packages and have resolved the dependencies, you are ready to build the catkin packages.
Invoke catkin_make_isolated:



$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo
  Note: This will install ROS in the equivalent file location to Ubuntu in /opt/ros/indigo however you can modify this as you wish.
  For rviz, you will also have to apply this patch.
Should the compilation fail with an "internal compiler error", it may be because you're out of memory. A quick fix for this is to add swap space to the Pi and recompile.
Raspbian Swap: Raspbian uses a script dphys-swapfile to manage swap. The standard image includes this turned on by default. The configuration files is located at /etc/dphys-swapfile. The only parameter in the file is CONF_SWAPSIZE=100 which creates a 100MB swapfile in /var/swap. But, putting the swapfile in /var is not a good idea is that directory is on your SD card. You can change the file location with CONF_SWAPFILE=/your/file/location. My /etc/dphys-swapfile looks like this:
CONF_SWAPSIZE=1024
CONF_SWAPFILE=/mnt/sda1/swap.file
Here "sda1" is my usb hard drive which is automounted.
It is recommended that you reboot your Raspberry Pi to enable the swap change.
Now ROS should be installed! Remember to source the new installation. You are recommended to add the ROS environment variables to the ~/.bashrc file. It is convenient if the ROS environment variables are automatically added to your bash session every time a new shell is launched:



$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
  Note: If you have more than one ROS distribution installed, ~/.bashrc must only source the setup.bash for the version you are currently using.
  If you just want to change the environment of your current shell, you can type:



$ source /opt/ros/indigo/setup.bash
  If you use zsh instead of bash you need to run the following commands to set up your shell:
  $ echo "source /opt/ros/indigo/setup.zsh" >> ~/.zshrc
$ source ~/.zshrc
4. Maintaining a Source Checkout
  4.1 Updating the Workspace
  See the Ubuntu source install instructions for steps on updating the ros_ws workspace. The same steps should apply to the Raspberry Pi.
4.2 Adding Released Packages
  You may add additional packages to the installed ros workspace that have been released into the ros ecosystem. First, a new rosinstall file must be created including the new packages (Note, this can also be done at the initial install). For example, if we have installed ros_comm, but want to add ros_control and joystick_drivers, the command would be:



$ cd ~/ros_ws
$ rosinstall_generator ros_comm ros_control joystick_drivers --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-custom_ros.rosinstall
  You may keep listing as many ROS packages as you'd like separated by spaces.
  =======================
Note: dynamic_reconfigure
========================
Next, update the workspace with wstool:



$ wstool merge -t src indigo-custom_ros.rosinstall
$ wstool update -t src
  After updating the workspace, you may want to run rosdep to install any new dependencies that are required:
  Raspbian Jessie:



$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:jessie
  Finally, now that the workspace is up to date and dependencies are satisfied, rebuild the workspace:



$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo
  Creating Your Own Catkin Workspace
  If you haven't already done so, create a directory to hold your catkin workspace. By convention, we will assume you have created a subdirectory called catkin_ws in your home directory. Below that directory we create a subdirectory called src to hold the package source files. If you're starting from scratch, execute the following commands to create an empty catkin workspace in the directory ~/catkin_ws:



$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

  The first command above creates both the top level ~/catkin_ws directory and the src subdirectory. Note also that we run the catkin_init_workspace command in the src directory.
  Next, even though the current workspace is empty, we run catkin_make to create some initial directories and setup files. catkin_make is always run in the top-level catkin_ws workspace folder (not in the src folder):



$ cd ~/catkin_ws
$ catkin_make
$ catkin_make install

  After building the new catkin package, be sure to source the ~/catkin_ws/devel/setup.bash file and rebuild the ROS package path as follows:



$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

  References
[1]http://wiki.ros.org/indigo/Installation/Source

[2]http://wiki.ros.org/hydro/Installation/Debian

[3]http://wiki.ros.org/ROSberryPi/Setting%20up%20Hydro%20on%20RaspberryPi

[4]http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi

[5]http://www.ros.org/reps/rep-0131.html#id4

[6]https://answers.ros.org/question/230076/ros-on-raspberry-3/

[7]https://answers.ros.org/question/226253/trouble-installing-indigo-on-debian-jessie-collada_parser-build-failure/

[8]https://answers.ros.org/question/266665/ros-indigo-installation-problem-on-raspbian-jessie/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-409549-1-1.html 上篇帖子: 文本排序的王者:玩透sort命令 下篇帖子: 添加Nginx为系统服务(设置开机启动)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表