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

交叉编译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://www.kler.cn/a/546374.html

相关文章:

  • Linux入侵检查流程
  • filebeat抓取nginx日志
  • Python实现文件夹监控:自动捕获并处理新增Excel文件,支持子文件夹遍历
  • 【Linux】Ubuntu Linux 系统——Node.js 开发环境
  • 利用IDEA将Java.class文件反编译为Java文件:原理、实践与深度解析
  • 如何查看 Linux 服务器的 MAC 地址:深入解析与实践指南
  • 《图解设计模式》笔记(九)避免浪费
  • 成为高级前端开发师需要掌握的技术
  • 模型过拟合怎么办
  • 力扣动态规划-30【算法学习day.124】
  • 查看notebook的jupyter token
  • 从Sora到有言:3D视频生成技术的突破与应用
  • WPF进阶 | 深入 WPF 依赖项属性:理解其强大功能与应用场景
  • 欧拉函数杂记
  • Python----PyQt开发(PyQt高级:手搓一个简单的记事本)
  • Easy系列PLC 线性变换功能块(模拟量相关功能块汇总)
  • Go语言协程Goroutine高级用法(一)
  • React源码解读
  • Linux中安装open-webui报sqlite版本低的解决办法
  • MySQL无法连接到本地localhost的解决办法2024.11.8