You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS2 Foxy ARM平台原生交叉编译新手入门方法咨询

ROS2 Foxy Ubuntu主机ARM原生交叉编译入门(新手版)

一、前置环境准备

  • 主机系统使用Ubuntu 20.04(与ROS2 Foxy官方适配版本一致,减少兼容性问题)
  • 安装ARM交叉编译工具链(以arm64为例,arm32架构替换为arm-linux-gnueabihf前缀):
    sudo apt update && sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
    
  • 准备目标ARM设备的根文件系统(rootfs):
    • 已有现成ARM设备时,直接从设备同步(跳过虚拟目录):
      rsync -avz user@你的ARM设备IP:/ /本地路径/arm-rootfs --exclude=/proc --exclude=/sys --exclude=/dev
      
    • 无现成设备时,用debootstrap生成arm64版Ubuntu 20.04 rootfs:
      sudo debootstrap --arch=arm64 focal /本地路径/arm-rootfs http://ports.ubuntu.com/
      
  • 设置环境变量指向rootfs:
    export SYSROOT=/本地路径/arm-rootfs
    

二、配置交叉编译工作空间

  • 创建并进入工作空间:
    mkdir -p ros2_foxy_arm_ws/src && cd ros2_foxy_arm_ws
    
  • 将你的C++包放入src目录;若需编译ROS2基础依赖(如包依赖的核心库),同步Foxy源码:
    git clone https://github.com/ros2/ros2.git -b foxy src/ros2
    
  • 安装主机端编译依赖:
    rosdep install --from-paths src --ignore-src --rosdistro foxy -y
    
  • 在工作空间根目录创建交叉编译工具链配置文件cross_compile.cmake:
    set(CMAKE_SYSTEM_NAME Linux)
    set(CMAKE_SYSTEM_PROCESSOR aarch64)
    
    set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
    set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
    
    set(CMAKE_SYSROOT $ENV{SYSROOT})
    
    # 强制cmake仅在rootfs内查找依赖,不使用主机本地库
    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)
    
  • 创建colcon.meta配置文件,指定交叉编译规则:
    {
      "configurations": {
        "cross_compile": {
          "cmake_args": [
            "-DCMAKE_TOOLCHAIN_FILE=/你的工作空间路径/ros2_foxy_arm_ws/cross_compile.cmake"
          ]
        }
      }
    }
    

三、执行交叉编译

  • 加载ROS2 Foxy环境(主机已安装Foxy则直接执行,未安装则加载源码内的setup文件):
    source /opt/ros/foxy/setup.bash
    
  • 启动编译,--merge-install将所有输出合并至单目录,便于后续复制:
    colcon build --merge-install --cmake-args -DCMAKE_BUILD_TYPE=Release --configuration cross_compile
    

四、部署到ARM设备

  • 将编译完成的install目录同步至ARM设备:
    rsync -avz /你的工作空间路径/ros2_foxy_arm_ws/install user@你的ARM设备IP:/home/用户名/ros2_foxy_install
    
  • 在ARM设备上加载环境并测试节点:
    source /home/用户名/ros2_foxy_install/setup.bash
    ros2 run 你的包名 你的节点名
    

五、新手常见问题解决

  • 编译时提示依赖缺失:进入rootfs环境安装对应依赖,执行chroot /本地路径/arm-rootfs切换后,运行apt install ros-foxy-依赖包名
  • 链接阶段报错:确保主机交叉编译工具链版本与ARM设备本地gcc版本尽量接近,避免ABI不兼容
  • 运行时权限不足:同步文件时添加--chown=用户名:用户组参数,或在ARM设备上执行sudo chmod -R 755 /home/用户名/ros2_foxy_install

内容的提问来源于stack exchange,提问作者amw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 13:01:11