环境准备与基础运行
环境准备
先完成入门教程中的 开机、网络连接 和 Web 页面访问。确认 UGV 电量 和 UGV 预检 已完成,雷达、相机无遮挡,底盘周围有足够空间。
MobaXterm 是 Windows 下的终端管理工具,可以打开、保存多个终端会话。SSH(Secure Shell)是一种远程登录方式,用于通过网络进入另一台设备的命令行环境。
本教程使用 SSH,是因为 ROS 2 运行在 UGV 的 Docker 容器中,需要从电脑远程进入容器并同时使用多个终端。Gazebo 仿真不连接实体 UGV,使用单独的 Shell Session 进入本机 WSL2。
安装 MobaXterm
下载 便携版 MobaXterm,解压到自己选择的固定目录,运行解压目录中的 MobaXterm 可执行文件。便携版无需安装;实际目录以电脑上的保存位置为准。也可以从 MobaXterm 官网 下载。
安装完成后,实体 UGV 创建 SSH Session,Gazebo 仿真创建 Shell Session;具体配置见后文。

实体 UGV Docker ROS 2 SSH Session
以下流程用于通过 SSH 连接实体 UGV 上的 Docker ROS 2 环境。按 入门教程:打开 Web 控制页面 和 上位机教程:JupyterLab 界面速览 打开 JupyterLab,并在 Launcher 中进入 Terminal。这里用 Terminal 启动 Docker 远程 SSH 服务,不要在 Notebook 代码单元格中运行持续占用终端的 ROS 2 命令。
-
在 JupyterLab Terminal 中进入 ROS 2 工作空间目录。
cd ~/ugv_ws -
启动 ROS 2 Docker 远程服务。
sudo chmod +x ros2_humble.sh remotessh.sh./ros2_humble.sh终端输出示例:
jetson@ubuntu:~/ugv_ws$ sudo chmod +x ros2_humble.sh remotessh.sh./ros2_humble.sh[sudo] password for jetson:Entering the container...ugv_jetson_ros_humbleContainer started successfully.Executing docker exec command to open a bash shell in the container...* Starting OpenBSD Secure Shell server sshd [ OK ]Opened bash shell in the container. -
打开 MobaXterm,点击左上角
Session。
-
在弹出的会话类型窗口中选择
SSH。 -
在
Basic SSH settings中填写 Docker ROS 2 容器连接信息。Remote host填写 OLED 或 Web 页面中看到的 UGV IP。Port填写23。端口23用于进入 ROS 2 Docker 镜像,不要改成普通 SSH 端口。- 其余选项保持默认。

-
点击
OK连接。出现login as:时输入root。
-
按提示输入密码。当前镜像密码为
jetson,输入时终端不会显示明文字符。
-
第一次保存密码提示选择
No。
-
第一次选择鼠标右键动作时,选择
Paste,这样 Windows 复制命令后可在 MobaXterm 中右键粘贴。
-
登录后会进入 Docker ROS 2 容器终端。看到
root@ubuntu这类提示符时,表示已经进入容器环境。
从Windows往终端复制粘贴代码的方法
在 Windows 中先选中并按 Ctrl + C 复制代码,再切回 MobaXterm,把光标放到终端窗口内并右键粘贴。后续复制多行命令时,MobaXterm 会提示即将粘贴多行内容。确认内容无误后点击 OK。
-
ROS 2 后续经常需要多个终端同时运行。在 MobaXterm 左侧
User sessions中再次双击刚创建的 UGV IP 会话,每双击一次会新开一个 Docker ROS 2 容器 SSH 标签页。也能点击顶部标签栏旁边的+,再重新打开同一个 SSH 会话。
sudo chmod +x ros2_humble.sh remotessh.sh 一般仅需执行一次。脚本文件未替换、系统未重新刷写时,后续不需要重复执行该命令。
./ros2_humble.sh 用于启动 ROS 2 Docker 远程 SSH 服务。UGV 重启后,先在 Windows PowerShell 中检查 23 端口是否可连接:
Test-NetConnection <UGV_IP> -Port 23
如果显示 TcpTestSucceeded : True,表示 MobaXterm 可登录 ROS 2 Docker。如果显示 TcpTestSucceeded : False,返回 JupyterLab Terminal 执行:
cd ~/ugv_ws
./ros2_humble.sh
更换 Wi-Fi、热点或路由器后,先确认 UGV 的当前 IP 地址。为避免左侧会话名称与实际连接 IP 不一致,新建一个使用当前 IP 的 MobaXterm SSH Session。
新建 Session 时仍然使用相同配置:
Remote host:UGV 当前 IP;Specify username:root;Port:23。
新建 Session 后,可让 Session 名称使用当前 IP,例如 192.168.9.197,方便识别。旧 Session 不会自动更新 IP。如果旧 IP 不再使用,右键旧 Session,选择 Delete session 删除,避免后续误点。
首次调试时先保持 JupyterLab 页面不关闭,便于回到 Terminal 检查或重新启动服务;确认端口 23 仍可连接后,关闭 JupyterLab 页面不影响已启动的 Docker SSH 服务。
开发者补充:修改已有 MobaXterm Session
如果需要修改已有 Session,右键旧 Session,选择 Edit session,在 SSH → Basic SSH settings 中修改 Remote host。Remote host 才是 MobaXterm 实际连接的 UGV IP。Rename session 只修改左侧显示名称,不修改实际连接 IP。


加载 ROS 2 环境
每个新开的 Docker ROS 2 终端都先加载 ROS 2 环境。后文功能步骤中出现“加载 ROS 2 环境”时,均指执行以下命令。
cd /home/ws/ugv_ws
source /opt/ros/humble/setup.bash
source install/setup.bash
如果当前镜像工作空间路径不同,请以当前容器中的实际路径为准。source 命令没有输出。
ROS 2 最小检查
-
先在当前 Docker ROS 2 终端加载 ROS 2 环境。
cd /home/ws/ugv_wssource /opt/ros/humble/setup.bashsource install/setup.bash -
确认 ROS 2 能找到 UGV 相关包:
ros2 pkg list | grep ugv
ros2 node list
ros2 topic list
刚加载环境但未启动任何 launch 时,ros2 node list 没有输出不代表错误。ros2 topic list 只看到 /parameter_events 和 /rosout 这类基础 topic,不属于异常。后文功能会在相关节点启动后检查相关 topic。