机器人ROS2跨设备调试:VSCode Remote-SSH + 本地Rviz2
引言:作为一名导航算法工程师,最近调试的小车比较多,有一些已经装好外壳的显然不太方便直接接上显示屏、键鼠去调试,毕竟小车要移动到不同的地方,所以了解到一种远程调试的方法,能够在笔记本上去远程小车的工控机进行调试,而且可以获取小车的ROS2数据在本地的rviz2进行可视化调试。本篇文章记录此方案,以供新入坑的工程师们用作参考。

在机器人开发中,我们经常面临这样的场景:工控机(车载电脑)调试操作不便,而我们的笔记本环境舒适、屏幕大,却由于没有直连硬件而无法直接调试机器人。传统的做法要么是把笔记本搬到机器人旁边,用SSH+X11转发跑rviz2,但画面延迟和卡顿经常会导致调试体验很差;要么用VNC远程桌面,资源开销大,操作也不流畅。
那么,有没有一种方案,既能远程让代码在工控机上编译运行,又能让可视化界面在笔记本上丝滑显示?答案是肯定的,这就是本文要介绍的“VSCode Remote-SSH + 本地Rviz2”方案。
这套方案的核心理念是 “计算在车端,显示在本地” ,利用ROS2自身的DDS通信机制,让本地的Rviz2直接订阅车端发布的话题,从而将可视化压力从工控机转移到笔记本,并且网络传输的只是纯粹的ROS数据,而非图像画面,因此对带宽要求低,体验极佳。
目录
步骤4:使用小鱼一键安装ROS2-Humble(工控机 & 笔记本)
一、方案原理速览
首先,让我们先简单理解一下原理:
-
VSCode Remote-SSH:在本地VSCode中直接编辑、编译、运行工控机上的代码,所有操作都在远程终端中执行,就像在本地一样。
-
本地Rviz2:在笔记本上独立运行一个Rviz2实例,通过ROS2的DDS网络(默认基于UDP)与工控机上的节点通信,订阅/odom、/scan、/map、/TF等话题,实时渲染可视化。
关键在于,工控机和笔记本必须处于同一局域网,并且ROS2环境配置一致,这样它们才能相互发现并交换数据。
二、准备工作
2.1 硬件与网络要求
-
一台工控机(推荐:Ubuntu 22.04,ROS2 Humble)
-
一台笔记本(同样Ubuntu 22.04,也可用Windows/WSL,但本文以Ubuntu为例)
-
同一个局域网
-
静态IP地址(建议为两台设备分别固定IP,避免DHCP变动导致连接中断)
2.2 软件版本一致性
这是整个方案成功的关键:笔记本和工控机必须安装完全相同版本的ROS2(例如都是Humble),否则数据类型定义可能不兼容,导致通信失败。
三、详细配置步骤
步骤1:网络连通性测试
首先,确保两台设备能互相ping通。
# 在笔记本终端
ping 192.168.1.100 # 替换为工控机的实际IP
如果ping不通,请检查防火墙(sudo ufw disable 临时关闭测试),并确认处于同一子网。
步骤2:工控机开启SSH服务
工控机需要开启SSH服务,以便VSCode远程连接。
sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
# 查看SSH服务状态
sudo systemctl status ssh
步骤3:笔记本安装VSCode与Remote-SSH插件
在笔记本上安装VSCode,然后在扩展商店搜索“Remote - SSH”并安装。

步骤4:使用小鱼一键安装ROS2-Humble(工控机 & 笔记本)
在两台设备上分别执行以下命令,即可一键安装ROS2(推荐使用Humble版本):
wget http://fishros.com/install -O fishros && bash fishros
脚本启动后,按照提示进行操作:
-
选择功能:输入
1,选择“一键安装:ROS(支持ROS和ROS2,树莓派Jetson)”。 -
选择软件源:推荐选择
1(使用脚本内置的国内镜像源),可大幅加速下载。 -
选择ROS版本:由于系统是Ubuntu 22.04,输入
1选择humble(ROS2 Humble)。 -
选择安装模式:建议选择
1“Desktop 版(推荐)”,该版本包含rviz2、turtlesim等图形化工具。
脚本将自动配置软件源、添加GPG密钥并安装所有依赖。整个过程约需5~10分钟(视网速而定)。安装完成后,脚本还会询问是否配置rosdep(推荐选择 Y,使用国内镜像rosdepc加速)。
小鱼一键安装工具由“鱼香ROS”开源维护,项目地址:fishros/install,感谢作者的贡献!
验证安装:安装完成后,运行小海龟例程检查是否成功:
# 终端1
ros2 run turtlesim turtlesim_node
# 终端2(新开)
ros2 run turtlesim turtle_teleop_key
如果能显示小海龟窗口且能用键盘控制其移动,说明ROS2环境已就绪。
步骤5:统一ROS2环境变量
编辑两台设备的 ~/.bashrc 文件,在末尾添加以下两行(以域ID=42,中间件为CycloneDDS为例):
export ROS_DOMAIN_ID=42
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
然后执行 source ~/.bashrc 使其生效。务必保证两台设备的这两个变量完全相同。
关于域ID:默认是0,但为了避免与其他设备冲突,建议设置为一个1~101之间的唯一整数。官方文档建议参考这里。
步骤6:VSCode远程连接工控机
-
打开VSCode,CTRL+Shift+P打开命令界面,搜索remote,选择“Remote SSH:打开SSH配置文件……”

-
按格式输入并保存:
Host ziyan_linux # 自定义一个服务器别名 HostName 10.153.149.45 # 替换为你的服务器真实IP地址或域名 User fssk # 替换为你的Linux登录用户名 Port 22 # SSH端口,默认为22,若修改过请填写实际端口
-
选择SSH配置文件的保存位置(通常默认即可)。
-
CTRL+Shift+P打开命令界面,搜索remote,选择“Remote SSH:打开SSH连接到主机……”。

-
点击连接,输入密码,稍等片刻,左下角显示“SSH: 主机名”即表示连接成功。
连接后,你可以像操作本地文件一样浏览工控机的文件夹,在终端中执行命令。
步骤7:启动工控机上的导航节点
这样远程就完成啦!接下来就是你熟悉的环节了,你可以在VSCode的远程终端中,source你的ROS2工作空间,然后启动导航相关的launch文件,例如:
source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/setup.bash
ros2 launch nav2_bringup navigation_launch.py
此时工控机开始发布各类导航话题,所有ROS2的动作、服务、话题数据都可以在笔记本进行订阅。
步骤8:在笔记本本地启动Rviz2
注意:这个终端是笔记本的本地终端,不是在VSCode里!
打开一个新的终端窗口,source本地的ROS2环境和工作空间(如果有),然后直接运行:
source /opt/ros/humble/setup.bash
rviz2
Rviz2启动后,点击左下角的“Add”按钮,添加话题(如 /map、/scan、/tf、/plan等)。如果一切正常,你就会看到机器人的模型、地图和路径规划的实时显示啦!
结语:非常开心看到你看完了整篇文章!如果你正在学习ros2,需要一些教材,比如鱼香ros老师的《ROS2机器人开发:从入门到实践 (桑欣)》,或者一些关于SLAM的《视觉SLAM18讲》《概率机器人》等书籍的电子版,可以私信我免费领取,希望对大家的学习过程有所帮助。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)