2. LGSVL仿真环境搭建:从零开始跑通你的第一个仿真
好,咱们直接进入正题。这一章我带你亲手把LGSVL环境搭起来。说实话,我第一次搭这个环境的时候也踩了不少坑,尤其是Python API那块,折腾了大半天。今天我把这些经验都揉碎了讲给你听。
2.1 LGSVL Simulator安装与配置
先说说安装。LGSVL Simulator其实是个Unity3D应用,所以它对显卡有一定要求。我个人习惯用NVIDIA显卡,GTX 1060以上基本就能流畅跑起来。
下载安装包
去LGSVL的GitHub Releases页面下载对应系统的安装包。Windows选.exe,Ubuntu选.AppImage。我建议你用Ubuntu 18.04或20.04,兼容性最好。
安装步骤(以Ubuntu为例):
- 下载 .AppImage 文件
- 赋予执行权限:
chmod +x lgssvl*.AppImage - 直接运行:
./lgssvl*.AppImage
嗯,这里要注意:第一次启动可能会报缺少库文件的错误。别慌,运行下面这条命令就能解决:
sudo apt-get install libvulkan1 libvulkan-dev
配置WebUI
LGSVL启动后,默认会在浏览器打开一个管理界面,地址是 localhost:8080。你可以在里面管理地图、车辆、传感器配置等。我个人习惯把常用的地图和车辆先下载好,省得每次跑仿真都要等下载。
小技巧: 如果你在公司内网或者网络环境不好,可以提前下载好地图资源包,放到 ~/.lgssvl/maps 目录下。这样启动时就不会卡在下载环节了。
2.2 Python API环境准备
这部分是重点。LGSVL提供了Python API,让我们可以编程控制仿真。说白了,就是你可以用Python脚本启动仿真、控制车辆、获取传感器数据。
安装Python API包
直接用pip安装:
pip install lgssvl
等等,别急着敲回车。我建议你先创建一个虚拟环境,避免和系统Python包冲突:
python3 -m venv lgssvl_env
source lgssvl_env/bin/activate
pip install lgssvl
我曾经遇到过一个问题:安装完API后,导入包时报错说找不到模块。后来发现是Python版本问题。LGSVL的API只支持Python 3.6到3.8,3.9以上会报错。你想想看,光排查这个就花了我两个小时。
避坑指南: 我曾经在Python 3.10上折腾了一整天,最后发现官方文档里明确写着只支持3.6-3.8。所以,老老实实用3.8吧,最稳。
验证API是否安装成功
运行下面这段代码,如果能正常输出,说明环境就绪了:
import lgssvl
print(lgssvl.__version__)
2.3 传感器配置文件结构解析
这是整个课程的核心基础。LGSVL用JSON文件来描述车辆的传感器配置。你想想看,一辆自动驾驶汽车上装了哪些传感器?摄像头、激光雷达、毫米波雷达、GPS、IMU...这些都在一个JSON文件里定义。
配置文件的基本结构
一个典型的传感器配置文件长这样:
{
"sensors": [
{
"type": "Camera",
"name": "Main Camera",
"params": {
"width": 1920,
"height": 1080,
"fov": 70,
"near_plane": 0.1,
"far_plane": 1000.0
},
"transform": {
"x": 1.5,
"y": 0.0,
"z": 1.2,
"pitch": 0,
"yaw": 0,
"roll": 0
}
},
{
"type": "Lidar",
"name": "Velodyne VLP-16",
"params": {
"lasers": 16,
"min_distance": 0.5,
"max_distance": 100.0,
"rotation_frequency": 10.0,
"measurements_per_rotation": 18000
},
"transform": {
"x": 0.0,
"y": 0.0,
"z": 1.8,
"pitch": 0,
"yaw": 0,
"roll": 0
}
}
]
}
关键字段说明
| 字段 | 说明 | 我的经验 |
|---|---|---|
| type | 传感器类型:Camera, Lidar, Radar, GPS, IMU等 | 类型名必须严格匹配,大小写敏感 |
| name | 传感器名称,用于在代码中引用 | 建议用有意义的名称,方便调试 |
| params | 传感器参数,不同类型参数不同 | 参数值要参考真实传感器规格 |
| transform | 传感器在车辆坐标系下的安装位置 | 单位是米,角度是度 |
重要提醒: transform中的坐标是相对于车辆中心点的。x轴朝前,y轴朝左,z轴朝上。这个坐标系定义和很多其他仿真平台不一样,我第一次用的时候就把左右搞反了,结果激光雷达点云全偏了。
如何加载配置文件
在Python API中,你可以这样加载传感器配置:
from lgssvl.utils import SensorConfig
# 从JSON文件加载
sensor_config = SensorConfig.from_file("my_sensor_config.json")
# 或者直接传入字典
sensor_config = SensorConfig(sensor_dict)
我个人习惯把传感器配置文件和车辆模型分开管理。这样换传感器就像换镜头一样方便,你想想看,测试不同传感器组合时,只需要改一个JSON文件就行了。
调试技巧: 如果你不确定传感器配置是否正确,可以在LGSVL的WebUI里手动加载配置,然后点击"Preview"按钮。它会显示传感器在车辆上的位置和朝向,一目了然。
好了,这一章的内容就到这里。环境搭好了,配置文件也看懂了,下一章我们就可以开始写第一个仿真脚本了。记住,环境搭建是基础中的基础,别嫌麻烦,一步一个脚印来。