当前位置: 首页 > 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再重新编译

相关文章:

  • 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:国产袖珍式功率计 射频微波功率探头 平均功率计
  • 用html5做网站的优点/近期新闻事件
  • 榆中县城乡建设局网站/郑州关键词排名公司电话
  • 网站改备案信息/百度的网站网址
  • 企业网站内容更新怎么操作/如何制作自己的网页链接
  • 帮客户做违法网站违法么/百度搜索推广和信息流推广
  • 建设银行永泰支行网站/网站seo方案模板