openEuler Embedded (Orange Pi) ROS humble ROS neotic 和 ros1_bridge 安装指南

本文档提供了在 openEuler Embedded 2403 (busybox版本) 系统的 Orange Pi AI Pro(20T) 开发板上部署 ROS neotic, ROS humble 和 ros1_bridge 的完整操作流程。

⚠️ 重要提示

  • 严禁执行 dnf update:此操作可能导致嵌入式系统核心组件损坏或无法启动。
  • 环境要求:建议使用 root 用户或具有 sudo 权限的用户操作。
  • 网络要求:请确保开发板网络通畅,以便连接 openEuler ROS SIG 测试源。

1. 安装 ROS 2 Humble

1.1 配置 ARM 架构软件源

写入 ROS Humble 源配置:

sudo bash -c 'cat << EOF > /etc/yum.repos.d/ROS.repo
[openEulerROS-humble]
name=openEulerROS-humble
baseurl=https://eulermaker.compass-ci.openeuler.openatom.cn/api/ems1/repositories/ROS-SIG-Multi-Version_ros-humble_openEuler-24.03-LTS-TEST4/openEuler%3A24.03-LTS/aarch64/
enabled=1
gpgcheck=0
EOF'

1.2 安装核心组件

安装 ROS Humble 基础包及 ros1_bridge 所需依赖:

sudo dnf clean all && sudo dnf makecache
sudo dnf install -y ros-humble-ros-base

1.3 pip 安装 ROS colcon 等依赖

如果使用非root的普通用户安装则需要先配置目录权限:

sudo chmod -R a+rX /usr/local/lib/python3.11/site-packages/

之后再执行pip以来的安装:

pip install -U colcon-common-extensions rosdepc

rosdepc 是鱼香ros开发的适用与国内网络环境的rosdep替代品.使用前先进行系统伪装和权限配置:

export ROS_OS_OVERRIDE=rhel:8
sudo chmod -R a+rx /usr/local/bin/

使用方法与 rosdep 没有区别

sudo rosdepc init
rosdepc update

# 安装ros pkg依赖方法:
rosdepc install --from-paths src --ignore-src -y

2. 安装 ROS 1 Noetic

由于源地址不同,需更新 repo 文件并重新生成缓存。

2.1 配置及安装

# 覆盖写入 Noetic 源配置
sudo bash -c 'cat << EOF > /etc/yum.repos.d/ROS.repo
[openEulerROS-Noetic]
name=openEulerROS-Noetic
baseurl=https://eulermaker.compass-ci.openeuler.openatom.cn/api/ems1/repositories/ROS-SIG-Multi-Version_ros-noetic_openEuler-24.03-LTS-TEST1/openEuler%3A24.03-LTS/aarch64/
enabled=1
gpgcheck=0
EOF'

2.2 安装 Noetic 所有组件

sudo dnf clean all && sudo dnf makecache
sudo dnf install -y ros-noetic-* --skip-broken

2.3 安装 Noetic catkin 相关组件

sudo dnf install python3-catkin_pkg

# 创建软链接
cd /usr/bin
for file in python3-catkin*; do
  # ${file#python3-} 的意思是去掉文件名开头的 "python3-"
  sudo ln -s "$file" "${file#python3-}"
done

3. 系统环境与依赖修复 (关键步骤)

嵌入式系统存在部分库文件缺失或软链接不完整的问题,必须执行以下修复才能成功编译。

3.1 修复库权限与开发包缺失

强制重装开发包以修复头文件丢失("幽灵包" 问题):

# 修复库目录权限,防止 CMake 找不到依赖
sudo chmod -R 755 /usr/local/lib64

# 强制重装关键开发库
sudo dnf reinstall -y tinyxml2-devel yaml-cpp-devel boost-devel

3.2 修复 Boost 库软链接

解决编译器找不到 -lboost_filesystem 等问题(以 Boost 1.83.0 为例):

cd /usr/lib64
sudo ln -sf libboost_filesystem.so.1.83.0 libboost_filesystem.so
sudo ln -sf libboost_system.so.1.83.0 libboost_system.so
sudo ln -sf libboost_thread.so.1.83.0 libboost_thread.so
sudo ln -sf libboost_program_options.so.1.83.0 libboost_program_options.so
sudo ln -sf libboost_regex.so.1.83.0 libboost_regex.so
sudo ln -sf libboost_chrono.so.1.83.0 libboost_chrono.so
sudo ln -sf libboost_date_time.so.1.83.0 libboost_date_time.so
sudo ln -sf libboost_atomic.so.1.83.0 libboost_atomic.so

6. 常用工具配置 (Tmux)

在嵌入式环境下使用 Tmux 需修复库和语言包问题。

# 1. 修复 libevent 库缺失 (解决 tmux: error while loading shared libraries)
sudo dnf reinstall -y libevent

# 2. 安装英语语言包 (解决 tmux: need UTF-8 locale 报错)
sudo dnf install -y glibc-langpack-en

# 3. (可选) 如果仍报错,临时设置环境变量
export LC_ALL=en_US.UTF-8