4、LGSVL仿真器快速上手:场景加载、车辆配置、传感器套件选择、运行第一个仿真
好,咱们正式开始动手了。
前面几章我们把环境搭好了,ROS2也跑起来了。但说实话,光有这些还不够——你得让仿真器真正动起来,才能看到效果。这一章,我就带你走一遍LGSVL仿真器的完整启动流程。从加载场景到选车、配传感器,最后跑起来第一个仿真。
嗯,这里要注意:LGSVL的界面虽然看着简单,但有几个坑,我当年第一次用的时候也踩过。咱们一步步来。
4.1 启动LGSVL仿真器
首先,确保你已经按照第二章的步骤装好了LGSVL。如果还没装,先回去搞定。
启动方式很简单,终端里敲一行命令:
./simulator
或者如果你用的是Windows,双击那个exe就行。我个人习惯在终端里启动,因为能看到日志输出,万一报错能第一时间发现。
启动后你会看到一个主界面,左边是场景列表,右边是预览窗口。第一次打开可能会有点懵——别急,咱们一步步来。
4.2 场景加载:选一个合适的地图
LGSVL自带了好几个地图,比如San Francisco、Borregas Ave、Cube Town等等。你可以在左侧的「Environments」标签页里看到它们。
我个人建议初学者先用 Borregas Ave。为什么?因为这个地图不大不小,路况简单,适合调试。San Francisco虽然好看,但路太复杂,第一次跑容易分心。
加载场景的步骤:
- 点击左侧的「Environments」标签
- 在列表里找到「Borregas Ave」
- 点击它,然后点右下角的「Load」按钮
- 等待几秒钟,场景就会加载到预览窗口里
你会看到一条笔直的马路,两边有树和建筑。嗯,这就是我们接下来要跑的地方。
4.3 车辆配置:选一辆能跑的车
场景加载好了,接下来要选车。LGSVL支持多种车型,包括Lexus RX 450h、Jaguar I-PACE、还有一辆简单的「Simple Vehicle」。
我个人推荐用 Lexus RX 450h。这辆车模型精细,传感器安装位置也合理,很多实际项目都在用。Simple Vehicle虽然轻量,但传感器布局太简陋,不适合后面做感知开发。
选车的步骤:
- 点击左侧的「Vehicles」标签
- 在列表里找到「Lexus RX 450h」
- 点击它,然后点右下角的「Add」按钮
- 车辆会出现在场景中,默认停在路边
你还可以调整车辆的初始位置。在预览窗口里,直接用鼠标拖拽车辆就行。我习惯把它放在马路中间,省得启动后还要调头。
4.4 传感器套件选择:给车装上「眼睛」
车选好了,但光有车壳子不行——你得给它装上传感器,才能感知周围环境。LGSVL支持多种传感器套件,包括摄像头、激光雷达、GPS、IMU等等。
在车辆配置界面里,有一个「Sensor Configuration」选项。点开它,你会看到一堆预设的传感器配置。
常用的几个配置:
| 配置名称 | 包含传感器 | 适用场景 |
|---|---|---|
| Main Lidar | 1个64线激光雷达 + GPS/IMU | 感知开发、SLAM测试 |
| Camera Only | 6个摄像头 + GPS/IMU | 纯视觉方案测试 |
| Full Sensor Suite | 激光雷达 + 摄像头 + 雷达 + GPS/IMU | 完整自动驾驶系统测试 |
| Minimal | 仅GPS/IMU | 基础运动控制测试 |
我建议初学者先用 Main Lidar 配置。为什么?因为激光雷达数据直观,容易验证桥接是否成功。摄像头数据量大,处理起来复杂,容易出问题。
选好配置后,点「Apply」保存。你会看到车辆模型上出现了几个彩色的小方块——那就是传感器。嗯,看着还挺酷的。
4.5 运行第一个仿真:让车动起来
好了,场景有了,车有了,传感器也装上了。现在该让它跑起来了。
运行仿真的步骤:
- 点击主界面右下角的「Run」按钮
- 仿真器会启动,进入运行模式
- 你会看到一个3D视图,车停在路中间
- 按键盘上的 W 键,车就会往前开
等等,就这么简单?对,就这么简单。LGSVL默认支持键盘控制,WASD分别对应前后左右。你可以先手动开一圈,感受一下仿真环境。
但咱们的目标不是手动开车,而是通过ROS2来控制。所以下一步,你需要打开另一个终端,启动ROS2桥接节点:
ros2 run lgsvl_bridge lgsvl_bridge
如果一切正常,你会看到终端里不断刷出消息:
[INFO] [lgsvl_bridge]: Connected to simulator at localhost:9090
[INFO] [lgsvl_bridge]: Subscribing to /lgsvl/vehicle_control
[INFO] [lgsvl_bridge]: Publishing /lgsvl/lidar_points
看到这个输出,说明桥接成功了。现在你可以用ROS2的话题来控制车辆了。比如发布一个速度指令:
ros2 topic pub /lgsvl/vehicle_control std_msgs/msg/Float32 "{data: 5.0}"
车就会以5m/s的速度往前开。嗯,是不是很有成就感?
4.6 验证传感器数据
车跑起来了,但传感器数据有没有传过来?咱们验证一下。
打开第三个终端,查看激光雷达话题:
ros2 topic echo /lgsvl/lidar_points
你会看到一堆点云数据在刷屏。如果觉得看数字不过瘾,可以用RViz2来可视化:
rviz2
在RViz2里添加一个「PointCloud2」显示,话题选/lgsvl/lidar_points。你会看到车周围出现了一圈彩色的点——那就是激光雷达扫描到的环境。
我第一次看到这个画面的时候,说实话挺震撼的。一个虚拟世界里的激光雷达,数据通过ROS2传出来,还能在RViz里实时显示。这就是自动驾驶仿真的魅力。
4.7 常见问题与解决
最后,我总结几个我当年踩过的坑,你遇到了可以直接对照:
- 仿真器启动后黑屏:检查显卡驱动,或者尝试用
--opengl参数启动 - 桥接连不上:确认仿真器右下角的Bridge开关已打开,端口默认9090
- 车辆不动:检查是否在运行模式下(不是编辑模式),按空格键可以暂停/继续
- 传感器无数据:确认传感器配置已应用,有时候需要重启仿真器才能生效
嗯,这一章的内容就到这儿。你先把第一个仿真跑起来,感受一下。下一章,我们会深入讲解ROS2消息桥接的细节,包括如何自定义消息类型、如何处理时间戳同步——这些在实际项目中都是绕不开的硬骨头。