"); //-->
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的使用请参考其官方网站和网上相关资料。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
电动助力转向系统示范
射频电路板设计技巧
Nigel AI赋能LabVIEW,NI用AI重塑测试新边界
CMOS传感器迎接高速成像技术全新挑战
使用DP83640实现标准网络IEEE 1588的同步演示
大嘴业话:乱谈三网融合
具有低输出电压的可调稳压电源
pppoe server
vxWorks下pppoe
PROTEL 99SE 简明使用手册
采用运算放大器TAA861的恒压源
采用集成电路的稳压稳流电路
传三星会长李在镕秘访联发科抢代工订单
拨打全国电话一毛钱,网电8分钱每分钟,诚征代理!
摩根斯坦利:AI基础设施几乎带涨了所有相关元器件
印制线路板设计经验点滴
Protel_DXP
1.6T/3.2T光模块量产核心:从主控MCU到电源TEC,世强1.6T/3.2T光模块核心器件方案全解析
带有中间值的稳压电源
Stellantis STLA One:押注磷酸铁锂电池意图干掉特斯拉?
重新定义信号与频谱分析仪:罗德与施瓦茨即将开启 FSWX 实测分享会
[原创]P2P即时通讯、网络可视电话(类似E话通)、WEB800等
工厂自动化概述
PROTEL 99 SE特性手册
具有电流限制的大电流稳压电路
特斯拉监督版FSD加入中国市场
多字节的CRC校验
大嘴业话:新iPad与LTE 谁绑架了谁
Bourns 亮相日本横滨汽车工程展,聚焦 BMS 与 OBC 创新技术,助力电动车高效与安全升级
三星罢工危机最后时刻暂停 核心矛盾依然悬而未决