摘要:随着ARM平台处理能力的日益强大,越来越多的工业智能/机器人应用在ARM平台上面实现,在这个过程中不可避免的就涉及到将机器人应用开发框架移植到ARM平台来运行,因此本文就着重示例基于Openembedded环境,将ROS(Robot Operating System)编译集成到嵌入式Linux中运行。

随着ARM平台处理能力的日益强大,越来越多的工业智能/机器人应用在ARM平台上面实现,在这个过程中不可避免的就涉及到将机器人应用开发框架移植到ARM平台来运行,因此本文就着重示例基于Openembedded环境,将ROS(Robot OperatingSystem)编译集成到嵌入式Linux中运行。

ROS是一种为机器人应用设计的分布式处理框架,集成了大量相关库和工具,目的是为了提高机器人应用开发时代码复用率。目前ROS发布版本官方只支持Ubuntu Linux等安装,但由于在Openembedded框架下维护了meta-ros layer,使得我们可以将ROS集成到同样基于Openembedded框架的嵌入式Linux中运行。

本文所使用硬件为Toradex ColibriT20 基于nVidia Tegra2的ARM核心板配合Colibri开发板,软件即为Toradex官方发布的基于Openembedded框架的Yocto Project兼容Linux系统。

1).编译配置roscore

a).下载配置基本的Openembedded环境

详细的关于Toradex Openembeded配置说明请见这里,如下下载配置Opembedded 和Toradex Linux release V2.5相关meta layer数据

---------------------

$ mkdir oe-core

$ cd oe-core

$ repo init -uhttp://git.toradex.com/toradex-bsp-platform.git -b LinuxImageV2.5

$ repo sync

---------------------

b).下载meta-ros layer

---------------------

$ cd oe-core/stuff

$ git clone https://github.com/bmwcarit/meta-ros.git

//默认head为ROS indigo,如需hydro请继续如下操作

//cd meta-ros && git checkout v0.2&& cd ..

---------------------

c).修改配置文件

./ 生成相关配置文件

---------------------

$ cd oe-core

$ . export

---------------------

./ 修改oe-core/build/conf/bblayers.conf

---------------------

BASELAYERS ?= " \

......

+ ${TOPDIR}/../stuff/meta-ros \

"

---------------------

./ 修改oe-core/build/conf/local.conf文件

---------------------

MACHINE ?= "colibri-t20"        //设备配置为colibri-t20,这里也可以改为其他产品型号

......

+ IMAGE_INSTALL_append ="roslaunch"   //安装roscore

---------------------

d).编译image

---------------------

bitbake -k angstrom-lxde-image

---------------------

e).部署image

编译成功后,在oe-core/build/out-glibc/deploy/colibri-t20/images目录下找到生成的imageColibri_T20_LinuxImageV2.5_xxxxxxxx.tar.bz2,然后按照这里的方法更新到Colibri T20模块上面。

f).启动roscore环境

./ 配置环境变量

---------------------

export ROS_ROOT=/opt/ros/ indigo

export PATH=$PATH:/opt/ros/ indigo/bin

export LD_LIBRARY_PATH=/opt/ros/ indigo/lib

export PYTHONPATH=/opt/ros/indigo/lib/python2.7/site-packages

exportROS_MASTER_URI=http://localhost:11311

export export ROS_HOSTNAME=localhost

export CMAKE_PREFIX_PATH=/opt/ros/ indigo

touch /opt/ros/ indigo/.catkin

---------------------

./ 启动roscore

---------------------

roscore

---------------------

2).编译配置ros-world

a).重新修改oe-core/build/conf/local.conf文件

---------------------

......

IMAGE_INSTALL_append ="packagegroup-ros-world""  //安装roscore 以及完整的相关package

---------------------

b).编译部署

方法和上面roscore一致,由于meta-ros问题编译前请修改oe-core /stuff/meta-ros/recipes-ros/geometry-experimental/geometry-experimental.inc

---------------------

SRC_URI[md5sum] ="063484906d1c2f1a4ee961680e43b559"

SRC_URI[sha256sum] ="011b77bc33afea927bab2707ddda585df8de5f1fc6e387081f6bf1ea12d2323b"

---------------------

第一次编译可能会遇到一些错误,请编译退出后做如下修改

./oe-core_v25_ros/build/out-glibc/work/armv7at2hf-vfp-angstrom-linux-gnueabi/目录下面

修改所有 tf2/0.5.12-r0/geometry-0.5.12/ 和tf2-xxx/0.5.12-r0/geometr-0.5.12/ 目录名均修改为geometry_experimental-0.5.12

./ 修改oe-core_v25_ros/build/out-glibc/work/armv7at2hf-vfp-angstrom-linux-gnueabi/pluginlib/1.10.1-r0/build/CMakeFiles/plugin_tool.dir/link.txt

---------------------

……/arm-angstrom-linux-gnueabi-g++ -pthread–mfpu=vfpv3-d16 ……  //编译器添加” –pthread”参数

---------------------

c).后续生成部署image则和roscore一致。

3).总结

本文着重展示了在基于Openembedded框架的嵌入式Linux上面编译运行ROC core以及相关组件的方法,具体关于ROC的使用请参考其官方网站和网上相关资料。

嵌入式linux使用ros,ARM平台基于嵌入式Linux部署ROS相关推荐

  1. 嵌入式ARM平台基于Linux配置24bit RGB输出

    By Toradex秦海 1). 简介 嵌入式ARM平台设备采用Embedded Linux操作系统进行开发已经越来越成为主流,本文就着重演示在EmbeddedLinux下配置24bit RGB LC ...

  2. 嵌入式linux 4g模块,ARM平台嵌入式Linux下使用3G/4G 模块

    By Toradex秦海 随着工业发展,嵌入式设备接入网络的需求日益增多,在没有有线或者无线以太网的环境下,直接通过3G/4G Modem连接运营商网络来接入互联网不失为一个好方法,本文就着重介绍基于 ...

  3. 嵌入式linux数控系统,关于ARM+DSP嵌入式Linux数控系统设计.pdf

    2012年 7月 机床与液压 Ju1.2012 第40卷 第 13期 MACHINE TOOL &HYDRAULICS Vo1.40No.13 DOI:10.3969/j.issn.1001- ...

  4. 基于嵌入式linux 的车载定位系统设计,基于嵌入式Linux的GPS车载定位导航系统设计...

    摘要: 随着汽车产业的迅速发展,GPS车载导航系统得到了越来越广泛的应用,已成为汽车上的重要配置,为用户提供便利.另一方面随着计算机技术.通信技术的迅猛发展,微型化和专业化成为发展的新趋势,嵌入式系统 ...

  5. 嵌入式linux音频播放器设计,基于嵌入式Linux下Madplay音频播放器设计论文.docx

    基于嵌入式Linux下Madplay音频播放器设计论文 滁州职业技术学院计算机应用技术专业毕业论文PAGE I 滁州职业技术学院信息工程系--2015届计算机应用专业毕业论文 姓 名: 周杰 班 级: ...

  6. linux图片浏览器设计目的,基于嵌入式Linu图片浏览器的设计与实现.doc

    基于嵌入式Linu图片浏览器的设计与实现 本科学生毕业论文(设计) 题目(中 文):基于嵌入式Linux图片浏览器的设计与实现(英 文):The design and implementation o ...

  7. 基于嵌入式Linux的测温系统,基于嵌入式Linux的图像监控系统

    设计.发明的目的和基本思路.创新点.技术关键和主要技术指标 随着嵌入式技术的快速发展,产生了基于嵌入式系统的远程图像视频监控系统,为信息产业,管理行业.监控行业提供了快捷.高效.廉价的服务.丰富的网络 ...

  8. linux arm 虚拟机,ARM平台上实现Linux内核虚拟机技术研究

    摘要: 虚拟机技术可以简化计算机系统管理,提高系统的可移植性.可靠性和安全性,已经成为计算机技术研究和应用领域的一个重要方向.嵌入式系统向非专用计算平台方向的发展使它们要面对与普通计算机系统相同的需求 ...

  9. 跟涛哥一起学嵌入式 20:后ARM时代,嵌入式工程师的自我修养

    1 嵌入式学习的一些概念理解误区 很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板.买一块开发板,然后在上面"移植"u-boot.Linux内核,再使用busybox ...

最新文章

  1. Yours的Ryan X Charles谈BCH驱动社交媒体
  2. prerenderspaplugin 打包完成后如何让百度收录_如何提高网站流量、排名?
  3. asp.net 点击查询跳转到查询结果页面_如何控制报表组点查询后默认选择的 tab 页...
  4. 34.任务计划cron chkconfig systemctl管理服务 unit target
  5. pyflink shell的remote模式下的实验记录
  6. 设置数字范围的html语言,JavaScript奇技淫巧44招【实用】
  7. 【转】Net Framework,Net Core 和 Net Standard 区别
  8. ZoomIn插件制作(VS2010 + arcObject10.2 )全网应该是唯一的
  9. 使用管道和rm命令遇到的问题
  10. 开启WIN 7下的administrator用户的方法(VISTA一样)
  11. 谁有 CaliberRM.2005.Enterprise 版 或CaliberRM.2006 注册码?
  12. vue3项目全家桶知识
  13. 吉信通php 短信配置,吉信通:手机APP为什么要用短信验证?
  14. K3欠料计算存储过程
  15. 科凯计支宝免加密狗版本下载-公路计量支付软件免费下载—公路计量软件
  16. 通用mapper常用查询方法测试
  17. Win10 FTP连接不上的解决方式
  18. 设置Google浏览器兼容
  19. Unity动画生成工具
  20. 长页面滚动动画(优化)

热门文章

  1. 网络字节序和主机字节序详解
  2. ACL跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架
  3. 【Matlab】Matlab导入多个.mat文件并画图的过程详解
  4. 蓝桥 历届试题 矩阵翻硬币 JAVA
  5. 怎么把视频中的水印去除?建议收藏这几种去水印方法
  6. three.js—纹理贴图texture的使用
  7. 【附章5计算机字符编码】多种字符编码集的说明
  8. 深入理解RPC—健康检测
  9. 一元二次方程组的输入
  10. 第一节---shell与运维