原创 ARM平台基于嵌入式Linux部署ROS

2016-5-16 11:08 318 3 3 分类: 消费电子

By Toradex 秦海

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

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

本文所使用硬件为Toradex Colibri T20 基于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 -u http://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目录下找到生成的image Colibri_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

export ROS_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的使用请参考其官方网站和网上相关资料。

文章评论0条评论)

登录后参与讨论
相关推荐阅读
hai.qin_651820742 2020-12-31 12:08
NXP iMX8X基于Docker测试CAN接口通讯
By Toradex秦海1). 简介随着嵌入式设备的发展,由于部署更灵活应用方便等特性,原本在网络应用中广泛使用的docker技术也慢慢在一些嵌入式设备中应用,因此本文就基于嵌入式ARM平台...
hai.qin_651820742 2020-12-25 17:38
CAN FD 在 iMX8 计算机模块上的应用
​By Toradex胡珊逢CAN 总线在工业、汽车行业具有非常广泛的应用,为网络中设备之间点对点通信提供一种可靠、稳定、经济的方案。伴随网络中设备节点的增加,由于 1Mbps&n...
hai.qin_651820742 2020-12-11 17:21
NXP iMX8基于嵌入式Linux部署网络浏览器
By Toradex秦海1). 简介随着嵌入式设备的发展,网络通信在应用中越来越广泛,而在客户端,就需要可以方便访问网络服务的浏览器配置,本文就基于NXP iMX8平台演示如何在嵌入式Lin...
hai.qin_651820742 2020-11-20 09:39
NXP iMX8基于Qtwayland配置双屏显示
By Toradex秦海1). 简介嵌入式平台多屏显示是比较常见的功能,在NXP iMX6上面,由于使用了基于fbdev/X11的显示接口驱动和显示服务,可以比较方便的通过framebuff...
hai.qin_651820742 2020-11-17 10:46
使用Squashfs和Overlayfs提高嵌入式Linux文件系统可靠性
By Toradex胡珊逢 在使用嵌入式 Linux 系统的时,会出现由于设备意外断电引起文件系统损坏而最终使该设备无法启动的现象。为了应对这种情况,通常会从硬件设计如采...
hai.qin_651820742 2020-10-29 14:24
RT-Linux在IMX8上的使用
By Toradex胡珊逢 Real-time Linux 是指在普通 Linux 内核打上 PREEMPT_RT补丁后使内核满足实时要求。下面我们将...
广告
我要评论
0
3
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /6 下一条