CARLA+ROS2+rf-DETR+OC-SORT 感知仿真教程(总览)
CARLA + ROS2 + rf-DETR + OC-SORT 感知仿真教程本教程记录从零搭建 CARLA 0.9.16 仿真环境、接入 ROS2 话题、用 rf-DETR (TensorRT) 做目标检测、再用 OC-SORT 做多目标跟踪并绘制移动轨迹的完整过程。最终在 rviz2 中看到带 ID 和轨迹的检测结果。 你将搭建的系统1234567891011CARLA 仿真(带 NPC 交通) │ RGB 相机 (ROS2 native 接口) ▼/carla/hero/rgb/image 话题 │ perception_camera 检测节点 (rf-DETR TensorRT + OC-SORT) ▼/carla/hero/rgb/detection_image (画框 + ID + 轨迹, 给 rviz2)/carla/hero/detections (Detection2DArray, track_id 在 id 字段) │ ▼rviz2 可视化 目录 章节 内容 01 环境准备 系统、GPU/...
CARLA教程-01-环境准备
01 环境准备1.1 系统 Ubuntu 22.04(CARLA 0.9.16 官方测试版本;不建议 24.04) 内存:建议 32GB+(UE4+CARLA 编译和运行较吃内存) 磁盘:约 130GB(UE4 ~91GB + CARLA ~31GB + 模型/依赖) GPU:NVIDIA,显存 8GB+(本教程环境为 16GB) 1.2 GPU 驱动与 CUDA安装 NVIDIA 驱动(570+)和 CUDA 12.8(与 TensorRT 版本匹配)。验证: 1nvidia-smi # 应显示驱动版本和 CUDA Version: 12.8 1.3 TensorRT安装 TensorRT 10.9(本教程使用,用于 rf-DETR 推理)。假设安装在 /opt/TensorRT-10.9.0.34。 把 Python 绑定装到系统 python3(不是 conda),并加环境变量到 ~/.bashrc / ~/.zshrc: 12345# 安装 tensorrt python 绑定 (cp310 对应 python3.10)pip3 instal...
CARLA教程-02-构建UE4与CARLA
02 构建 UE4 与 CARLACARLA 0.9.16 基于 UE4.26(CARLA 的 fork)。先编 UE4,再编 CARLA。整个过程较长(数小时),且本教程环境踩了 4 个坑,都配有修复。 2.1 构建 Unreal Engine 4.26CARLA 用的是 UE4.26 的专用 fork(含 CARLA 补丁)。需要 GitHub 账号关联 Epic Games 组织。 123git clone --depth 1 -b carla https://github.com/CarlaUnreal/UnrealEngine.git ~/carla_project/UnrealEngine_4.26cd ~/carla_project/UnrealEngine_4.26./Setup.sh && ./GenerateProjectFiles.sh && make ⚠️ 不要用 make -j$(nproc),会失败。Clang 会自动用满核心。 验证:cd Engine/Binaries/Linux && ./UE...
CARLA教程-03-运行仿真
03 运行仿真3.1 启动 CARLA 服务端123cd ~/carla_project/carlaexport UE4_ROOT=~/carla_project/UnrealEngine_4.26make launch ARGS="--no-simready" 首次启动编译着色器较慢,地图可能先黑着,等编完就正常。编辑器打开后: 确认加载了 CARLA 地图(视口能看到城镇;空的话在 Content Browser 里 CarlaUE4/Maps/ 双击 Town10HD_Opt 等)。 点顶部 ▶ Play 进入仿真运行模式。 仿真服务端监听端口 2000(RPC)/ 2001(流)。 3.2 生成 NPC 交通(模拟真实场景)新终端,用 conda 的 carla 环境跑官方脚本生成车辆和行人: 123conda activate carlacd ~/carla_project/carla/PythonAPI/examplespython3 generate_traffic.py -n 80 -w 30 参数: -n 车辆数(默认...
CARLA教程-04-ROS2接口与话题
04 ROS2 接口与话题CARLA 本身不发 ROS 话题,需桥接。0.9.16 有两种方式: 方式 说明 是否重编 CARLA 性能 Native ROS2 接口(本教程用) 内建在服务端 是(--ros2) 最好、延迟最低(官方推荐) ROS Bridge(独立库) 单独的包,连服务端转话题 否 有额外延迟 本教程用 native 接口(性能最好,且示例已在源码里)。 4.1 前提 第 02 章已把 CARLA 编译成功(不带 –ros2)。 ROS2 humble 已装(/opt/ros/humble,含 rclcpp)。 4.2 ⚠️ 带 --ros2 重新编译native ROS2 需 WITH_ROS2,但 make launch --ros2 增量编译不会重编 LibCarla/Carla 插件,必须强制重编。而且 make rebuild 不可用(它不把 --ros2 传给 BuildLibCarla)。要分步: 修复 5:foonathan_memory 版本号Unreal/CarlaUE4/Plugins/Carla/Sour...
CARLA教程-05-目标检测(rf-DETR TensorRT)
05 目标检测 (rf-DETR TensorRT)检测节点订阅 CARLA 相机话题,用 rf-DETR 的 TensorRT 引擎做目标检测,发布画框图像和检测结果。节点放在 ROS2 工作空间 perception_camera 包里,用系统 python 跑(rclpy + tensorrt + torch + cv_bridge,不碰 conda)。 5.1 rf-DETR TensorRT 引擎确认 rf-DETR 仓库里有引擎文件: 1~/models/rf-detr/weights/onnx/rfdetr-medium.engine 引擎规格(写节点时要用): 输入:(1, 3, 576, 576) float32,RGB,ImageNet 归一化(mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225]),缩放到 576×576。 输出:dets (1,300,4) 归一化 cxcywh + labels (1,300,91) logits。 后处理:sigmoid → 阈值 0.5 → cxcy...
CARLA教程-06-目标跟踪(OC-SORT)与移动轨迹
06 目标跟踪 (OC-SORT) + 移动轨迹检测之后接 OC-SORT 做多目标跟踪,给每个目标分配稳定 ID,并绘制移动轨迹。 6.1 OC-SORT 简介OC-SORT(Observation-Centric SORT)是纯运动模型的多目标跟踪器,输入每帧检测 [x1,y1,x2,y2,score],输出带 track ID 的轨迹。适合拥挤和非线性运动场景,实时性好。 6.2 依赖OC-SORT 的 kalmanfilter.py 用了 filterpy,装到系统 python: 1/usr/bin/python3 -m pip install filterpy association.py 的 linear_assignment 有 lap/scipy 回退,系统 python 有 scipy 就行,不用装 lap。 6.3 在节点里引入 OC-SORTOC-SORT 仓库不需要 pip install,加路径即可。在 carla_detector.py 顶部: 1234import sysOC_SORT_PATH = "~/models/OC_...
CARLA教程-07-rviz2可视化与调优
07 rviz2 可视化与调优7.1 rviz2 显示检测结果启动 rviz2(宿主机或 docker 均可),添加 Image 显示: Add -> By topic -> /carla/hero/rgb/detection_image -> Image。 可选再加:/carla/hero/rgb/image(原图)、/carla/hero/lidar/point_cloud(点云)。 即可看到带框 + ID + 轨迹的画面。 7.2 修改相机分辨率相机分辨率在 PythonAPI/examples/ros2/stack.json 的 rgb 相机 attributes 里: 123"image_size_x": 1920,"image_size_y": 1080,"fov": 90.0 改完重跑 ros2_native.py 才生效(它重新生成相机)。检测节点不用重启(自适应分辨率,框按原图尺寸缩放)。 7.3 ⚠️ rviz2 卡顿优化CARLA(UE4) 和 rviz2 都吃 GPU,且大...
CARLA教程-08-常见问题与排错
08 常见问题与排错本教程踩过的坑汇总,按现象查。 构建相关 现象 原因 / 处理 Setup.sh 下 libpng 404 sourceforge URL 失效。改 download.sourceforge.net 镜像(修复 1)。 PROJ 报 no type named 'int64_t' in namespace 'std' 缺 #include <cstdint>。给 proj_json_streaming_writer.hpp 加(修复 2)。 make clean 后 PROJ 又报 int64_t clean 删了 Build/proj-src,补丁丢失。重新加 #include <cstdint>。 构建卡在 “Downloading STREETMAP” GitHub 不可达。BuildUE4Plugins.sh 设 GIT_PULL=false(修复 3)。 报 mi/mdl_sdk.h not found / packman Package not f...
CARLA教程-09-完整检测节点代码与传感器配置
carla_detector.py(检测 + 跟踪 + 轨迹 完整节点) 使用前替换顶部 ENGINE_PATH 和 OC_SORT_PATH 为你的路径。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175...