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