如何远程可视化并控制 ROS 2 机器人

发布: (2025年12月16日 GMT+8 04:51)
5 min read
原文: Dev.to

Source: Dev.to

背景

几年前我学习 ROS 时,尝试使用 RViz 控制运行 Navigation Stack 的移动机器人。当时我在运行 ROS 的电脑上安装了远程桌面服务器。安装过程很简单,但启动 RViz 时因为需要 3D 加速而启动失败。

于是,在开发 LGDXRobot2 时,我探索了多种远程控制机器人的方案。使用 RViz 能让参数调优(尤其是 Nav2 参数)变得更容易。本文介绍了几种远程访问 RViz / 机器人数据以控制机器人的方法。

1. 便携显示器

RViz running on a portable monitor

在机器人电脑上直接连接便携显示器,并使用无线鼠标和键盘,是运行 RViz 并让机器人自由移动的最直接方式。

优点

  • 无需软件配置

缺点

  • 便携显示器可能价格不菲,或屏幕相对较小

2. PiKVM

The custom PiKVM hardware

Rviz running on 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

Rviz running on Selkies

Running Nav2 on Selkies

Selkies 是一个低延迟远程桌面流媒体平台。有人为其制作了 Docker 镜像(docker‑baseimage‑selkies),我在此基础上安装了 ROS 2 及其依赖,生成了 LGDXRobot2 Desktop 镜像。

使用 Selkies,我可以在 macOS 或远程机器上运行 ROS 2,并通过浏览器访问 RViz。网页界面响应非常快,这也成为我在远程机器人上开发 LGDXRobot2 的主要方式。

优点

  • 不需要额外硬件
  • 低延迟
  • 支持高分辨率(取决于宿主机器)

缺点

  • 可能会影响宿主电脑的性能
  • 需要一定的 Docker 知识来配置环境
  • Docker 镜像体积较大(LGDXRobot2 Desktop 镜像超过 10 GB)

4. 在第二台电脑上使用 RViz

RViz is getting robotics data from remote computer

默认情况下,ROS 2 通过 UDP 多播分发话题数据。因此,我可以在另一台电脑上安装 ROS 2 并启动 RViz,自动发现来自远程机器人的话题。

经过测试,我发现其延迟略高于 Selkies,但仍在可接受范围内。由于该机器上未安装 LGDXRobot2 的 ROS 2 包,机器人模型未能显示。

优点

  • 不需要额外硬件
  • 低延迟
  • 支持高分辨率(取决于宿主机器)
  • 设置简便

缺点

  • 无;重复安装相同软件并不是大问题

5. Foxglove

Screenshot of Foxglove

Foxglove 是一个用于机器人数据可视化和调试的工具,支持多平台,也可以在浏览器中运行。按照官方文档进行设置即可。

使用 Foxglove,我能够查看机器人上的所有话题,并且 URDF 模型会自动显示。不过,数据流存在明显的延迟,可能是因为数据流设置不完整导致的。

优点

  • 不需要额外硬件
  • 支持高分辨率(取决于宿主机器)
  • 设置简便
  • 配置可以在团队内部共享

缺点

  • 使用该工具需要登录

总结

远程控制机器人并不意味着要牺牲其移动自由度。即使不购买额外硬件,也有多种实现方式。

对于 LGDXRobot2,我将继续使用 Selkies,因为其 Docker 镜像提供了即开即用的 ROS 2 环境,能够在远程机器人上进行高效开发。

Back to Blog

相关文章

阅读更多 »