Raspberry Pi(树莓派)是一款基于 Linux 系统的单板电脑,它的体积小,价格低廉,广泛地应用在智能家居、机器人制作等领域。本人目前在学习 ROS(机器人操作系统),以 Pioneer 机器人为移动平台,配合 ROS 做相关的开发。刚听说这款开源硬件时就在想,能否在这个小板子上跑 ROS 呢?上网一查,果然,Raspberry Pi 上也能够运行 ROS。把过程给大家分享一下,本文主要是翻译工作,其中也带有我对一些步骤的解释。
我的树莓派安装的操作系统是官方原版的Raspbian,安装的 ROS 版本是 indigo。
首先在源里添加 ROS Repositories,并更新源以及系统:
$ 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 -
$ sudo apt-get update
$ sudo apt-get upgrade
安装必要的依赖:
$ sudo apt-get install python-setuptools python-pip python-yaml python-argparse python-distribute python-docutils python-dateutil python-setuptools python-six
$ sudo pip install rosdep rosinstall_generator wstool rosinstall
配置rosdep
:
$ sudo rosdep init
$ rosdep update
首先,新建一个catkin workspace
用来编译安装:
$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws
将源代码 fetch 到该目录。我安装的是 ROS-Comm,只包含一些基础的软件,没有图形化工具:
$ 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
命令生成.rosinstall
文件,该文件包含了 ROS Stack/Package 的 repository 信息。wstool 根据生成的.rosinstall
文件,通过版本管理软件(例如 git, subversion 等)将 Stack/Package 的源代码从远程仓库 fetch 到本地目录,该过程完成之后,我们可以在~/ros_catkin_ws/src
中看到一些 Stack/Package 的源代码。
接下来,解决编译所需要的依赖,rosdep
可以完成大部分工作,但是有些软件 Raspbian 仓库中还没有,需要手动安装。编译 ROS-Comm 之前需要安装libconsole-bridge-dev
和liblz4-dev
。 新建一个文件夹:
$ 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
安装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.2_*.deb libconsole-bridge-dev_*.deb
安装liblz4-dev
,这一步花费的时间很长,大概要两个小时:
$ cd ~/ros_catkin_ws/external_src
$ apt-get source -b lz4
$ sudo dpkg -i liblz4-*.deb
上面的操作首先使用apt-get
将源代码下载下来并编译成.deb
文件,然后通过.deb
文件安装到系统中。
使用rosdep
解决其他的依赖问题:
$ cd ~/ros_catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:wheezy
rosdep
会检查src
文件夹,安装其他的依赖包。
上面的步骤都完成之后我们就可以开始编译了:
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo
编译完成之后,indigo 就安装好了,安装的位置是/opt/ros/indigo
,source 一下:
$ source /opt/ros/indigo/setup.bash
尝试着运行一下roscore
命令,运行正常的话,ROS indigo 就安装成功了!