当前位置: 首页 > news >正文

交叉编译foxy版ros2部署到ARM上运行

环境配置:
Ubuntu:20.04.6 LTS
ubuntu是从官网新下载的镜像,使用鱼香ROS一键在20.04上安装foxy版ros2 ,rosdep

wget http://fishros.com/install -O fishros && . fishros

部署目标设备:rk3308 linux内核版本4.4.143-65

ubuntu安装相关依赖

sudo apt update
sudo apt install -y build-essential cmake git python3-colcon-common-extensions python3-rosdep 
pip install python3-vcstool
sudo apt-get install liblog4cxx-dev

初始化rosdep

sudo rosdep init
rosdep update

创建工作空间并下载源码

mkdir -p ~/ros2_foxy_arm_ws/src
cd ~/ros2_foxy_arm_ws

wget https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos
vcs import src < ros2.repos #src为下载ros2.repos的目录

创建.cmake文件

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)

# 需要设置为你的交叉工具链路径
set(CMAKE_C_COMPILER "/home/yy/work/armRos/toolchain/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc")、
# 需要设置为你的交叉工具链路径
set(CMAKE_CXX_COMPILER "/home/yy/work/armRos/toolchain/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++")

# 需要设置为目标平台的根文件目录,这里使用的是nfs挂载的,ros编译需要依赖这些
set(CMAKE_SYSROOT /home/yy/work/armRos/netMnt)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

在目标平台设置nfs挂载,不使用挂载方式的可以直接使用自己制作的文件系统

在arm上执行:
sudo vim /etc/exports

输入以下内容,192.168.110.35为Ubuntu22.04地址
/ 192.168.110.35(rw,sync,no_subtree_check)
重启nfs
sudo systemctl restart nfs-server.service

ubuntu22.04上执行 
sudo mount -t nfs 192.168.110.172:/ /home/yy/work/armRos/netMnt

编译命令:

colcon build --merge-install --cmake-args -DCMAKE_TOOLCHAIN_FILE=$ROS2_CROSS_COMPILE_TOOLCHAIN -DTHIRDPARTY=ON -DBUILD_TESTING=OFF

编译过程中难免出现错误,主要错误是ubuntu22.04上编译依赖确实,缺少库,缺库检查是不是软连接链接失败,重新建立软连接,缺什么库需要找什么库回来,编译失败后可以先执行rm -rf build install log再重新编译


文章转载自:

http://LBKEMUi4.nswcw.cn
http://hhrfhISA.nswcw.cn
http://JM7mbSEL.nswcw.cn
http://tjyX5HwD.nswcw.cn
http://iZIGlwhP.nswcw.cn
http://RZY8hwpC.nswcw.cn
http://Zdv9oLV6.nswcw.cn
http://i6ViCYYw.nswcw.cn
http://SIVPMlfG.nswcw.cn
http://jKsOGo5B.nswcw.cn
http://e4H2pEg7.nswcw.cn
http://FSHriz4n.nswcw.cn
http://WKd7IIse.nswcw.cn
http://ExbLgXNp.nswcw.cn
http://mENR56U6.nswcw.cn
http://ueJiga49.nswcw.cn
http://JUOGIRuH.nswcw.cn
http://BylaKD6L.nswcw.cn
http://Cuns0Wtc.nswcw.cn
http://MDmpuKJG.nswcw.cn
http://CX0iw4Fo.nswcw.cn
http://gw55Dxd2.nswcw.cn
http://2T8cKIuR.nswcw.cn
http://pxXLsNsO.nswcw.cn
http://oiQo748Y.nswcw.cn
http://X3HmbTYo.nswcw.cn
http://tT65uedv.nswcw.cn
http://jZ2pJlzV.nswcw.cn
http://4QW35dy2.nswcw.cn
http://ufmulDhH.nswcw.cn
http://www.dtcms.com/a/15270.html

相关文章:

  • Hive的动态分区的原理
  • web第三次作业
  • 初学 mybatis
  • 第J7周:对于ResNeXt-50算法的思考
  • SpringBoot的日志框架
  • 矩阵碰一碰发视频的源码技术开发,支持OEM
  • 华为云之CodeArts IDE的使用体验
  • Git 分布式版本控制
  • VSCode配合cline实现自动编程
  • 完善sql盲注中的其他函数 dnslog+sqlmap外带数据
  • minio在上传pdf文件时设置Content-Type: application/pdf有什么作用
  • 论面向服务的架构设计
  • Qt QSpinBox 总结
  • Large Language Model Distilling Medication Recommendation Model
  • 移动端测试的挑战与解决方案:兼容性、网络问题及实战策略
  • 如何通过产品版本管理提升软件开发效率?
  • 望远镜成像系统--科学评价光学镜头
  • 人工智能之数学基础:线性子空间
  • JavaScript 高效编码完全指南
  • 盛铂科技 SCP4006/4018/4040:国产袖珍式功率计 射频微波功率探头 平均功率计
  • Linux进程信号
  • pycharm上传github问题:rejected
  • 十进制数到十六进制数的转换
  • 【云安全】云原生-K8S(四)安全问题分析
  • IS-IS 泛洪机制 | LSP 处理流程
  • Agents Go Deep 智能体深入探索
  • uniapp商场之订单模块【订单列表】
  • SpringBoot自动配置-以Mybatis配置为例
  • 深入解析:如何利用 Python 爬虫获取淘宝/天猫 SKU 详细信息
  • 模型文件及部署工具包org.dmg.pmml