歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> ARM平台基於嵌入式Linux部署ROS

ARM平台基於嵌入式Linux部署ROS

日期:2017/3/3 12:45:42   编辑:Linux技術
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 -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目錄下找到生成的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的使用請參考其官方網站和網上相關資料。
Copyright © Linux教程網 All Rights Reserved