8.6 TROS/ROS 开发
本节主要解答与地瓜机器人操作系统(TogetheROS.Bot, tros.b)以及通用ROS/ROS2在RDK平台上开发和使用相关的常见疑问。
Q1: TROS相关的软件包运行发生错误,推荐的预先排查步骤有哪些?
A:
- 确保您的tros软件包都是最新的: 许多问题可能在新版本中已被修复。在确保地平线官方APT源(如
sunrise.horizon.cc
或最新的archive.d-robotics.cc
)配置正确后,执行以下命令更新所有tros相关的包:在提问时,也请使用sudo apt update && sudo apt upgrade
rdkos_info
、apt list --installed | grep tros
、apt show <tros_package_name>
等命令提供您的系统和软件包版本信息。 - 尝试定位问题出现的ROS节点:
- 参考对应功能包的launch启动文件,将其中的日志级别(log level)参数修改为
debug
(例如,在Node的arguments中添加['--ros-args', '--log-level', 'DEBUG']
)。 - 重新运行launch文件,根据详细的debug日志输出来定位具体是哪个节点(node)出现了问题。
- TROS功能包的launch文件通常位于
/opt/tros/<tros_distro>/share/<package_name>/launch/
目录下(例如/opt/tros/humble/share/mipi_cam/launch/
)。 - ROS2的日志文件通常存储在
~/.ros/log/
或/root/.ros/log/
目录下。在排查前,可以先执行rm -rf ~/.ros/log/*
(或对应root路径) 清空旧日志,然后重新运行功能包以收集最新的、与当前问题相关的日志。
- 参考对应功能包的launch启动文件,将其中的日志级别(log level)参数修改为
- 重新安装相关的tros功能包:
- 如果怀疑是某个tros功能包的配置文件被改乱或安装不完整,可以尝试重装该软件包。
- 以
hobot_usb_cam
为例,重装步骤大致如下:- 查找精确的包名:
apt list --installed | grep hobot-usb-cam
(根据实际情况调整搜索词) - 卸载软件包:
sudo apt remove <tros_package_name_found>
(例如sudo apt remove tros-hobot-usb-cam
) - 确保APT源配置正确并更新缓存:
sudo apt update
- 重新安装软件包:
sudo apt install <tros_package_name_found>
- 查找精确的包名:
Q2: TROS和标准的ROS2有什么区别?TROS Foxy版本如何升级到TROS Humble版本?
A:
-
TROS与ROS2的关系:
- TROS (TogetheROS.Bot) 是地平线基于开源的ROS2(Robot Operating System 2)针对其RDK硬件平台进行优化和适配后发布的机器人操作系统。
- 它通常基于某个ROS2的LTS(长期支持)版本进行构建,例如:
- 在RDK OS 2.x (基于Ubuntu 20.04) 上,TROS通常基于 ROS2 Foxy Fitzroy。
- 在RDK OS 3.x (基于Ubuntu 22.04) 上,TROS通常基于 ROS2 Humble Hawksbill。
- TROS在标准的ROS2基础上,集成了地平线硬件(如BPU、VPU、JPU、Sensor等)的驱动、硬件加速库、以及针对机器人常用功能的优化方案和示例。
- TROS与对应版本的标准ROS2在核心API和通信机制上是完全兼容的,这意味着为标准ROS2 Foxy/Humble开发的节点和服务通常可以直接或稍作修改后在对应版本的TROS上运行,反之亦然。它们可以相互通信。
-
TROS版本升级 (例如从Foxy到Humble):
- 由于TROS的版本与RDK OS的底层Ubuntu版本紧密绑定(例如Foxy对应Ubuntu 20.04,Humble对应Ubuntu 22.04),通常无法直接通过
apt upgrade
等命令将TROS从一个大的LTS版本(如Foxy)升级到另一个大的LTS版本(如Humble)。 - 正确的升级方式是: 通过烧录包含了新版本TROS(如Humble)的、对应新Ubuntu版本(如22.04)的RDK OS完整系统镜像,来完成整个系统和TROS的升级。
- 由于TROS的版本与RDK OS的底层Ubuntu版本紧密绑定(例如Foxy对应Ubuntu 20.04,Humble对应Ubuntu 22.04),通常无法直接通过
-
板卡上的ROS2运行环境:
- RDK板卡上安装的TROS本身就是一个完整的ROS2运行环境。
- 您也可以在TROS之外,在板卡上自行安装其他标准ROS2发行版(如Foxy, Humble)或ROS1(如Noetic),它们可以与TROS共存,但如前所述,一个终端会话中只能source一个ROS环境。
colcon
是ROS2常用的构建工具,如果您的系统镜像中未预装,可能需要手动安装:sudo apt update
sudo apt install python3-colcon-common-extensions python3-catkin-pkg-modules python3-rosdep
# 或者通过pip安装:
# pip3 install -U colcon-common-extensions empy
-
注意: 任何在x86平台直接编译(而非交叉编译)的ROS功能包都不能直接在ARM架构的RDK板卡上运行,反之亦然。需要确保程序是为目标平台的架构编译的。
Q3: TROS是如何安装在RDK板卡上的?是否需要手动安装?
A:
- TROS通常在您烧录官方提供的RDK OS系统镜像时,就已经内置并预装在板卡上了。您不需要在烧录完系统后再手动执行完整的TROS安装流程。
- 您可以通过APT包管理器来更新或增量安装TROS的各个功能包。在确保地平线官方APT源配置正确的前提下,执行
sudo apt update && sudo apt upgrade
会更新已安装的TROS包到最新版本。 - 旧版本中可能存在的
hhp
工具或手动建立软链接的步骤,在新版的TROS中通常已不再需要。