环境配置
本页介绍 WSL2 Ubuntu 22.04、ROS 2 Humble 的依赖安装、模拟器连接、YOLO 权重与功能包构建。Windows 侧运行 OpenHUTB AIR 模拟器。
环境与依赖
推荐环境为:
- Ubuntu 22.04;
- ROS 2 Humble;
- Python 3.10;
- OpenHUTB AIR 模式;
- WSL2 场景下由 Windows 主机运行 OpenHUTB,WSL2 Ubuntu 运行 ROS 2。
建议优先在 Linux/WSL2 自身文件系统中进行 ROS 2 构建,以减少 /mnt/c、/mnt/d 等跨文件系统目录带来的构建和文件访问开销。
先加载 ROS 2 环境:
source /opt/ros/humble/setup.bash
可使用带系统包访问能力的 Python 虚拟环境安装非 ROS Python 依赖:
python3 -m venv --system-site-packages .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r src/air/openhutb_yolo_mlp_control/requirements.txt
rclpy、sensor_msgs、nav_msgs、geometry_msgs、std_msgs、vision_msgs、launch 和 launch_ros 等 ROS 2 依赖由 ROS 环境提供。
OpenHUTB/AirSim RPC 连接
OpenHUTB AIR 模式使用 AirSim RPC 接口,本示例默认端口为 41451。
原生 Linux 环境
如果 OpenHUTB 与 ROS 2 运行在同一 Linux 主机,可使用:
export AIRSIM_IP=127.0.0.1
WSL2 连接 Windows 主机上的 OpenHUTB
如果 OpenHUTB 在 Windows 主机运行,而 ROS 2 在 WSL2 Ubuntu 中运行,WSL2 默认 NAT 网络模式下不应直接假定 127.0.0.1 一定能够访问 Windows 侧 RPC 服务。
可先在 WSL2 中获取默认网关地址:
export AIRSIM_IP=$(ip route | awk '/default/ {print $3; exit}')
echo "$AIRSIM_IP"
然后检查 RPC 端口是否可访问:
nc -vz "$AIRSIM_IP" 41451
如果系统尚未安装 nc,可以执行:
sudo apt update
sudo apt install -y netcat-openbsd
端口连通时会看到类似:Connection to 172.x.x.x 41451 port [tcp/*] succeeded!。
如果出现 Connection refused 或超时,应先确认 OpenHUTB 已经进入 AIR 模式,并检查 Windows 防火墙、WSL2 网络配置以及实际监听地址。
WSL2 网络模式可能因系统配置不同而有所差异。如果已经使用支持 localhost 转发的网络模式,也可以测试
127.0.0.1:41451;最终以nc的实际连通结果为准。
相机分辨率
本示例的 YOLO 窗口按 1280×720 的相机图像配置。使用默认的 256×144 图像时,固定像素大小的性能信息面板会遮挡大部分画面,文字也可能显示不全。调整 OpenCV 窗口大小或 YOLO 推理尺寸不会提高相机采集分辨率。
在运行模拟器的 Windows 主机上,编辑“文档”目录中的 AirSim/settings.json(通常为 %USERPROFILE%\Documents\AirSim\settings.json)。将以下字段合并到现有配置的顶层,保留其他配置:
{
"CameraDefaults": {
"CaptureSettings": [
{
"ImageType": 0,
"Width": 1280,
"Height": 720
}
]
}
}
ImageType: 0 对应 RGB 场景图像。若现有 Vehicles.<车辆名>.Cameras.<相机名>.CaptureSettings 已单独配置分辨率,应直接修改该相机中 ImageType: 0 项的 Width 和 Height;相机级配置会覆盖 CameraDefaults。本示例默认使用相机 0。
保存后重启 OpenHUTB,进入 AIR 模式并重新启动 ROS 感知节点。在已加载 ROS 环境的 WSL 终端确认实际图像尺寸,预期依次输出 1280 和 720:
ros2 topic echo /openhutb/camera/rgb --once --field width
ros2 topic echo /openhutb/camera/rgb --once --field height
YOLO11n 模型
YOLO11n 权重需要单独准备,并通过 launch 参数传入本地模型路径。
- YOLO11n 模型下载地址
- 提取码:
fffa
建议将权重放在 Linux/WSL2 文件系统中,例如:
mkdir -p ~/models
如果权重当前位于 Windows 的 D:\models\yolo11n.pt,在 WSL2 中对应路径通常为:/mnt/d/models/yolo11n.pt。
可以直接使用该路径,也可以复制到 WSL2 文件系统:
cp /mnt/d/models/yolo11n.pt ~/models/yolo11n.pt
启动前建议先确认文件存在:
test -f ~/models/yolo11n.pt && echo "YOLO model found"
运行本示例时建议显式传入本地绝对路径,不依赖 Ultralytics 自动联网下载。这样可以避免网络受限时出现 GitHub Release 403 Forbidden 或下载失败。
构建
在仓库或 ROS 2 工作空间根目录执行:
source /opt/ros/humble/setup.bash
source .venv/bin/activate
colcon build \
--packages-select openhutb_yolo_mlp_control \
--symlink-install
构建完成后加载工作空间:
source install/setup.bash
每次打开新的终端,建议按以下顺序恢复环境:
source /opt/ros/humble/setup.bash
source .venv/bin/activate
source install/setup.bash
修改 launch 文件、setup.py、资源文件或模型安装配置后,应重新执行 colcon build。
配置完成后,参阅YOLO 感知与八字轨迹控制或返回文档目录。
说明
本文档整理、代码重构和问题排查过程中使用了大模型辅助;提交者已检查全部内容并对最终结果负责。