8.6 TROS/ROS 开发
本节主要解答与地瓜机器人操作系统(TogetheROS.Bot, tros.b)以及通用 ROS/ROS2在 RDK 平台上开发和使用相关的常见疑问。
Q1: TROS 相关的软件包运行发生错误,推荐的预先排查步骤有哪些?
A:
- 确保您的 tros 软件包都是最新的: 许多问题可能在新版本中已被修复。在确保 D-Robotics 官方 APT 源(如
sunrise.horizon.cc或最新的archive.d-robotics.cc)配置正确后,执行以下命令更新所有 tros 相关的包:在提问时,也请使用sudo apt update && sudo apt upgraderdkos_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) 是 D-Robotics 基于开源的 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基础上,集成了 D-Robotics 硬件(如 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 板卡上运行,反之亦然。需要确保程序是为目标平台的架构编译的。