ros在arm linux上移植,ROS在Zedboard上的移植

ROS全称robot operaring system,一般ROS是应用在Ubuntu系统中,本次移植是将ROS移植到Zedboard上的Linaro系统中去。

移植环境

开发板 : Zedboard

ARM处理器 : Cortex-A9

ARM操作系统: Linaro 12.11

ROS版本: indigo

移植前提

1. 开发板可以连接网络

2. 使用SSH等对开发板进行远程控制

编译方法

源码下载到开发板自编译,软件编译均在“#”管理员命令下进行。

编译流程

一、安装前提

1、安装引导程序依赖

引导程序主要包括rosdep、rosinstall、rospkg,wstool,build-essenTIal(此包可以直接apt-get获得),下载包的方法在linaro有两种,一种是apt-get(推荐),另一种就是pip。

1.采用apt-get安装

板子Linaro系统中apt-get源中很多软件都没有,如果想采用apt-get安装这3个包,首先要更新源,源地址:,因为国内某些政策的原因,建议使用国内源,否则会在源更新时出现错误,我采用的是:

~# sh -c '. /etc/lsb-release && echo "deb $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

然后源进行更新:

~# apt-get update

更新完之后直接用apt-get命令安装:

~# apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essenTIal

2.采用pip安装(与apt-get效果相同)

i. 安装pip

首先安装easy_install:

~# wget

~# python ez_setup.py

利用easy_install安装pip:

~# easy_install pip

ii. 利用pip安装如下包

~# pip install -U rosdep

~# pip install -U rosinstall

~# pip install -U rospkg

备注:如果使用pip无法安装,可能是pip版本较低,可通过如下方法升级pip版本:

~# pip install --upgrade setuptools

安装Python-wstool:

~# pip install -U wstool

2、初始化rosdep

~# rosdep init

~# rosdep update

二、安装

从这一步开始安装ROS系统,安装主要包括建立一个工作区,下载源码,解决包的依赖,系统的安装。

1.建立工作区

工作区的建立主要是为了存放并编译源码

~# mkdir ~/ros_catkin_ws

~# cd ~/ros_catkin_ws

2.下载源码

源码有3种,一种是全包(具有ROS的全部功能,包括3D可视化工具等),一种是普通包(具有ROS的大多数功能,没有3D可视化和仿真环境等),还有一种类似于骨头包(只包括核心功能,没有GUI),我们使用的就是第三种:骨头包。另外两种ROS包下载方法: 。

~# rosinstall_generator ros_comm --rosdistro indigo --deps --wet-only --tar > indigo-ros_comm-wet.rosinstall

~# wstool init -j8 src indigo-ros_comm-wet.rosinstall

当做完上述步骤后,会在ros_catkin_ws文件目录下出现一个src目录,里面是ros的全部源码。

3.解决包的依赖

这一步是整个系统编译最复杂的地方,主要是因为采用Linaro系统,ROS内部是不把Linaro作为一个系统。解决办法是在os_detect.py中增加对linaro的支持。

首先打开os_detect.py,位置可能略有不同:

vi /usr/local/lib/python2.7/dist-packages/rospkg/os_detect.py

增加如下几句,目的是告诉系统linaro也是一个系统:

OS_UBUNTU='ubuntu'

OS_LINARO='linaro'

OsDetect.register_default(OS_UBUNTU, LsbDetect("Linaro"))

安装依赖包并检查什么包没有被安装:

rosdep install --from-paths src --ignore-src --rosdistro indigo -yr

rosdep check --from-paths src --ignore-src --rosdistro indigo

在以上过程中可能会出现下面的问题:

ERROR: thefollowing packages/stacks could not have their rosdep keys resolved to systemdependencies: rosconsole: No definiTIon of [rosTIme] for OS version [precise]

roslisp: Missingresource rostime

ROS path[0]=/root/ros_catkin_ws/src

roscpp: Nodefinition of [rostime] for OS version [precise]

解决方案:

问题原因是缺少rostime包,此包上层包是roscpp_core,切换到/src/roscpp_core查看是否存在rostime包,如果没有,请下载(此包只适合indigo)并覆盖roscpp_core。步骤如下:

cd ~/src/roscpp_core

cd ..

git clone https://github.com/ros/roscpp_core

4.其他依赖

1.boost库

因为ROS是使用C++编写的,所以还需要下载boost库,否则会在安装的时候提示错误找不到boost库,下载方式有两种,一种是下载专门针对arm构架的deb包,地址为:https://launchpad.net/ubuntu/+source/boost1.46/1.46.1-7ubuntu3/+build/3060825,里面的库基本上都是相互依赖的,需要全部下载并安装。如果觉得这种方式麻烦,可以直接在源中下载整个boost库包:

~# apt-get install boost1.46

2. libtbb-dev

也是跟C++有关的包,如果不安装,可能会出现E: Package 'libtbb-dev' has no installation candidate,安装方式可以采用源安装:

~# apt-get install libtbb-dev

如果源中没有的话,下载源代码安装。

3.lz4

Lz4是一个快速无损压缩算法,如果没有安装会出现如下错误:Error : lz4 includes not found。只能采用源码安装,下载地址:https://github.com/Cyan4973/lz4/releases/tag/r127。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值