跳到主要内容

环境准备与基础运行

环境准备

先完成入门教程中的 开机网络连接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 usernameroot
  • Port23

新建 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,在 SSHBasic SSH settings 中修改 Remote hostRemote 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。