跳到主要内容

环境准备与基础运行

环境准备​

先完成入门教程中的 开机、网络连接 和 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;具体配置见后文。

MobaXterm 便携版可执行文件

MobaXterm 主界面和 Session 入口

实体 UGV Docker ROS 2 SSH Session​

以下流程用于通过 SSH 连接实体 UGV 上的 Docker ROS 2 环境。按 入门教程:打开 Web 控制页面 和 上位机教程:JupyterLab 界面速览 打开 JupyterLab,并在 Launcher 中进入 Terminal。这里用 Terminal 启动 Docker 远程 SSH 服务,不要在 Notebook 代码单元格中运行持续占用终端的 ROS 2 命令。

  1. 在 JupyterLab Terminal 中进入 ROS 2 工作空间目录。

    cd ~/ugv_ws
  2. 启动 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_humble
    Container 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.
  3. 打开 MobaXterm,点击左上角 Session。

    MobaXterm Session 按钮位置

  4. 在弹出的会话类型窗口中选择 SSH。

    MobaXterm SSH 类型位置

  5. 在 Basic SSH settings 中填写 Docker ROS 2 容器连接信息。

    • Remote host 填写 OLED 或 Web 页面中看到的 UGV IP。
    • Port 填写 23。端口 23 用于进入 ROS 2 Docker 镜像,不要改成普通 SSH 端口。
    • 其余选项保持默认。

    新建 MobaXterm SSH 会话

  6. 点击 OK 连接。出现 login as: 时输入 root。

    输入 Docker ROS 2 容器用户名

  7. 按提示输入密码。当前镜像密码为jetson,输入时终端不会显示明文字符。

    登录 Docker ROS 2 容器

  8. 第一次保存密码提示选择 No。

    MobaXterm 保存密码提示

  9. 第一次选择鼠标右键动作时,选择 Paste,这样 Windows 复制命令后可在 MobaXterm 中右键粘贴。

    MobaXterm 右键动作设置

  10. 登录后会进入 Docker ROS 2 容器终端。看到 root@ubuntu 这类提示符时,表示已经进入容器环境。

    Docker ROS 2 容器登录完成

备注

从Windows往终端复制粘贴代码的方法

在 Windows 中先选中并按 Ctrl + C 复制代码,再切回 MobaXterm,把光标放到终端窗口内并右键粘贴。后续复制多行命令时,MobaXterm 会提示即将粘贴多行内容。确认内容无误后点击 OK。

MobaXterm 多行粘贴提示

  1. 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。

ip选项位置

修改 MobaXterm 会话中的 UGV 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 最小检查​

  1. 先在当前 Docker ROS 2 终端加载 ROS 2 环境。

    cd /home/ws/ugv_ws
    source /opt/ros/humble/setup.bash
    source install/setup.bash
  2. 确认 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。