agx 安装ros opencv_【ROS】搭建ros从x86到nvidia arm的交叉编译环境

3786f617d44298dd837a6d411ea9adc3.png

交叉编译环境搭建流程

  • 交叉编译环境搭建的主要思路是利用catkin提供的rostoolchain脚本设置相应的交叉编译工具、lib库地址等,中间遇到问题再针对性解决。

基础环境:

  • 目标运行环境
    • arm64 cpu
    • Ubuntu 16.04
    • ros kinetic for arm
  • 编译环境
    • x86_64 cpu
    • Ubuntu Kylin(16.04)
    • ros kinetic for amd64

环境设置流程:

在px2环境上安装Ubuntu 16.04及arm版本ros kinetic,后面需要将这个arm版本ros 拷贝到交叉编译环境上

  • 在x86环境上安装Ubuntu 16.04及对应的amd64版本ros kinetic。(ros kinetic只适配Ubuntu 16.04以上版本)
  • 安装arm-linux交叉编译工具(需要注意本机的cpu架构及arm系统的cpu架构,两者应该都是64位架构)
  • 安装命令
sudo apt install gcc-aarch64-linux-gnu
sudo apt install g++-aarch64-linux-gnu
  • 将px2中的ros kinetic拷贝到x86机器上,将x86机器上的kinetic备份完成后,替换成arm版本的kinetic。将x86版本的kinetic备份拷贝到指定目录下(如:/opt/ros/kinetic_bak),添加LD_LIBRARY_PATH到指定目录/lib,实现运行ros命令时使用x86的lib库
export LD_LIBRARY_PATH=/opt/ros/kinetic_bak/lib
  • 将arm环境下的库文件/头文件拷贝到x86环境中,目录可以自己设定(比如:/${HOME}/cross_compile/px2_env)。拷贝的目录主要包括/lib和/usr目录下面的lib、include及local目录
  • 配置rostoolchain.cmake文件,设置cmake的编译工具及相关的库文件/头文件寻址路径
/opt/ros/kinetic/share/ros/core/rosbuild/rostoolchain.cmake
  • 修改/opt/ros/kinetic/share/catkin/cmake/tools/rt.cmake文件,将该文件中第34行进行如下修改
if(NOT (APPLE OR WIN32 OR MINGW OR ANDROID))
  • 修改为:
if(NOT (APPLE OR WIN32 OR MINGW OR ANDROID OR UNIX))
  • 修改catkin中交叉编译的链接文件路径,将其修改为指向px2拷贝过来的库文件/头文件地址,修改方法为在/opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake文件末尾增加如下代码:catkinConfig.cmake
  • 解决roscpp中的路径问题,将其中的绝对路径全部改成对应px2环境中拷贝过来的库路径。修改方法为将/opt/ros/kinetic/share/roscpp/cmake/roscppConfig.cmake文件的第112行改为:
set(libraries "roscpp;pthread;/home/tt/cross_compile/px2_env/usr/lib/aarch64-linux-gnu/libboost_signals.so;/home/tt/cross_compile/px2_env/usr/lib/aarch64-linux-gnu/libboost_filesystem.so;/home/tt/cross_compile/px2_env/usr/lib/aarch64-linux-gnu/libboost_system.so")
  • 解决链接过程中库路径错误的问题,编译过程中会默认从/usr/lib/aarch64-linux-gnu文件夹及/lib/aarch64-linux-gnu中寻找lib文件,而实际上两文件夹并不存在,因此需要在这两文件夹下建立软链接,将其链接到px2环境拷贝的对应路径
  • 链接命令:
sudo ln -s /home/tt/cross_compile/px2_env/lib/aarch64-linux-gnu /lib/aarch64-linux-gnu
sudo ln -s /home/tt/cross_compile/px2_env/usr/lib/aarch64-linux-gnu /usr/lib/aarch64-linux-gnu

编译

  • 命令
catkin_make -DCMAKE_TOOLCHAIN_FILE=/$filepath/rostoolchain.cmake

验证编译产出

  • 将devel产出拷贝到px2的workspace中,启动roscore之后,进入devel/lib/hdmap_interface,运行./hdmap_interface_node
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值