Carla仿真系列:2_Carla 仿真中批量添加 NPC,让场景动起来

21 阅读2分钟

上期搭建好了 Carla + ROS 环境,跑通了传感器数据流。但这期才是真正让仿真"活起来"的关键——添加 NPC 车辆和行人,让场景有真实的交通流。

先回顾一下整体流程

Carla UE4(仿真服务端)
    ↓
Carla ROS Bridge(数据桥接)
    ↓
生成 NPC 车辆和行人
    ↓
RVIZ 中可以看到动态场景

第一步到第三步:跟第一期一样

启动容器、启动 Carla UE4、启动 ROS Bridge,这三个步骤不变,按第一期的顺序来就行。

# 终端1:启动容器
cd carla_sim
bash docker/scripts/dev_start.sh
bash docker/scripts/dev_into.sh

# 终端1内:启动 Carla UE4
cd /opt/carla_ws
bash ./CarlaUe4.sh

# 终端2:启动 ROS Bridge
cd carla_sim
bash docker/scripts/dev_into.sh
source ros_bridge_env.sh
cd /opt/carla_ws/ros_bridge_ws
source devel/setup.bash
cd /opt/carla_ws
roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch

第四步:添加 NPC

新开一个终端,同样进入容器,然后执行 NPC 生成脚本:

cd /opt/carla_ws
python scripts/spawn_random_npc.py

默认会生成 10辆车 + 5个行人。

如果需要自定义数量:

# 20辆车 + 10个行人
python scripts/spawn_random_npc.py _vehicle_count:=20 _walker_count:=10

脚本执行后,Carla UE4 场景中会立刻出现 NPC 车辆和行人。车辆会自动行驶,行人目前只是静止的不会走动(后面解决这个问题),整个场景瞬间有了真实感。

这时候打开 RVIZ,可以看到激光雷达点云中出现了动态的目标点,相机图像里也能看到车辆和行人经过。

NPC 是怎么动起来的

Carla 自带的 Traffic Manager 负责控制 NPC 的行为:

功能说明
自动行驶NPC 车辆会沿着道路行驶
跟车距离自动保持与前车的安全距离
行人漫游行人在人行道上随机走动
交通规则NPC 会等红灯、让行

不需要我们自己写行为逻辑,调用 Traffic Manager 的 API 就能实现。

跟第一期的区别

维度第一期只有自车第二期加了 NPC
场景空旷,只有一辆车有交通流,像真实道路
传感器数据静态背景动目标,有感知价值
算法验证只能做单帧检测可以做跟踪、预测

有了 NPC 之后,你的目标检测、障碍物跟踪算法才有了用武之地。


演示视频

点击前往 B 站观看

往期回顾

如果本文对你有帮助,欢迎点赞、收藏。 遇到问题可以评论区留言交流,也欢迎转发给需要的朋友。