如何远程可视化并控制 ROS 2 机器人
Source: Dev.to
背景
几年前我学习 ROS 时,尝试使用 RViz 控制运行 Navigation Stack 的移动机器人。当时我在运行 ROS 的电脑上安装了远程桌面服务器。安装过程很简单,但启动 RViz 时因为需要 3D 加速而启动失败。
于是,在开发 LGDXRobot2 时,我探索了多种远程控制机器人的方案。使用 RViz 能让参数调优(尤其是 Nav2 参数)变得更容易。本文介绍了几种远程访问 RViz / 机器人数据以控制机器人的方法。
1. 便携显示器

在机器人电脑上直接连接便携显示器,并使用无线鼠标和键盘,是运行 RViz 并让机器人自由移动的最直接方式。
优点
- 无需软件配置
缺点
- 便携显示器可能价格不菲,或屏幕相对较小
2. PiKVM


PiKVM 是一个基于 Raspberry Pi 的 DIY IP‑KVM 方案,提供基于网页的远程控制界面。为了构建 PiKVM,我购买了 HDMI‑to‑CSI 桥接器和一块 Raspberry Pi Zero 2 W(点击此处查看教程)。该方案可以在最高 1080p 分辨率下访问远程桌面,并支持鼠标键盘操作 RViz。
PiKVM 在 LGDXRobot2 开发期间使用时间最长。不过,Raspberry Pi Zero 2 W 性能有限。当机器人远离路由器时,远程桌面会变得非常卡顿。此外,系统可能因过热而停止工作,需要使用 USB 风扇进行主动散热。
优点
- 硬件成本合理
- 分辨率可达 1080p
- 显示通常比较流畅
缺点
- PiKVM 需要额外的配置工作
3. Selkies


Selkies 是一个低延迟远程桌面流媒体平台。有人为其制作了 Docker 镜像(docker‑baseimage‑selkies),我在此基础上安装了 ROS 2 及其依赖,生成了 LGDXRobot2 Desktop 镜像。
使用 Selkies,我可以在 macOS 或远程机器上运行 ROS 2,并通过浏览器访问 RViz。网页界面响应非常快,这也成为我在远程机器人上开发 LGDXRobot2 的主要方式。
优点
- 不需要额外硬件
- 低延迟
- 支持高分辨率(取决于宿主机器)
缺点
- 可能会影响宿主电脑的性能
- 需要一定的 Docker 知识来配置环境
- Docker 镜像体积较大(LGDXRobot2 Desktop 镜像超过 10 GB)
4. 在第二台电脑上使用 RViz

默认情况下,ROS 2 通过 UDP 多播分发话题数据。因此,我可以在另一台电脑上安装 ROS 2 并启动 RViz,自动发现来自远程机器人的话题。
经过测试,我发现其延迟略高于 Selkies,但仍在可接受范围内。由于该机器上未安装 LGDXRobot2 的 ROS 2 包,机器人模型未能显示。
优点
- 不需要额外硬件
- 低延迟
- 支持高分辨率(取决于宿主机器)
- 设置简便
缺点
- 无;重复安装相同软件并不是大问题
5. Foxglove

Foxglove 是一个用于机器人数据可视化和调试的工具,支持多平台,也可以在浏览器中运行。按照官方文档进行设置即可。
使用 Foxglove,我能够查看机器人上的所有话题,并且 URDF 模型会自动显示。不过,数据流存在明显的延迟,可能是因为数据流设置不完整导致的。
优点
- 不需要额外硬件
- 支持高分辨率(取决于宿主机器)
- 设置简便
- 配置可以在团队内部共享
缺点
- 使用该工具需要登录
总结
远程控制机器人并不意味着要牺牲其移动自由度。即使不购买额外硬件,也有多种实现方式。
对于 LGDXRobot2,我将继续使用 Selkies,因为其 Docker 镜像提供了即开即用的 ROS 2 环境,能够在远程机器人上进行高效开发。