最近学长安排了新的任务,开始学习Carla仿真软件。这个软件之前在自己电脑安装一次,各种坑,坑到我怀疑人生,大概装了两三天才装上,之后因为毕设就没动过了,时隔小一年又重新开始学。。。(后续有时间打算重新装一边最新版本的Carla,感觉之前装的有很多问题,虽然可以运行)
毕竟自己英语不好,本科也不是计算机专业的,学起来还是比较困难的,在这里记录一下学习过程,避免忘了hhh
核心概念
基础
1 world和client
客户端:请求信息或者更改仿真的模块,一个客户端在一个IP和特定的端口下运行。通过终端和服务器进行通信,可以有多个客户端同时运行。
世界:仿真的对象表示。它充当一个抽象层,其中包含生成角色,更改天气,获取当前状态等主要方法。每个仿真中只有一个世界。 更改地图后,它将被销毁并替换为新的地图。
2 actors和blueprints
actor:仿真中的角色,车辆、行人、传感器、交通标志、信号灯、旁观者。
blueprints:是生成角色所需的已经完成的角色布局。模型包含一定的动画和属性,一些属性是可以由用户定义的。
3 maps和navigation
maps:通俗意义的地图。道路车道和路口由Python API管理,可从客户端访问。 它们与waypoint一起使用,为车辆提供导航路径。
交通标志作为作为carla.Landmark对象使用,其中包含有关其OpenDRIVE定义的信息。 此外,在运行时,模拟器会使用OpenDRIVE文件上的信息自动生成停车和交通信号灯对象。 这些在道路上放置了边界框, 一旦进入边界框,车辆就会意识到它们。
4 sensors和data
传感器等待事件发生并且从仿真中收集信息。他们需要一个定义如何管理数据的函数。 取决于种类,传感器检索不同类型的传感器数据。
传感器是连接到车辆上的actor。他跟随车辆收集周围的信息,由蓝图库中可用的蓝图定义。
相机(RGB、深度和语义分割)
碰撞检测器
Gnss(全球卫星导航系统)传感器
IMU(惯性测量单元)传感器
雷达
车道进入检测器
障碍物探测器
激光雷达
RSS传感器
高级
- OpenDRIVE standalone mode:制作道路网格
- PTV-Vissim:交通仿真器协同仿真
- recorder:记录仿真过程,重现仿真
- rendering options:可选off-screen渲染和无渲染
- RSS:集成了C ++责任敏感安全性库,可以通过安全检查来修改车辆的轨迹。
- SUMO:协同仿真
- Traffic manager:创建自动驾驶的车辆模拟真实世界
World和Client
创建客户端
需要IP地址和两个TCP端口:
client = carla.Client('localhost', 2000)
然后设置连接超时时间:
client.set_timeout(10.0) # seconds
客户端连接当前世界:
world = client.get_world()
或者连接指定世界:
world = client.load_world('Town01')
Commands可以使用批命令,对同时间操作很多元素很有用,例如销毁车辆:
client.apply_batch([carla.command.DestroyActor(x) for x in vehicles_list])
客户端还有其他的特性:Traffic manager和Recorder
World
很多信息和通用设置可以通过这个类访问。
world可以寻找actor,寻找创建actor的合适位置、访问蓝图等。
天气是一组参数,可以这样设定:
weather = carla.WeatherParameters(
cloudiness=80.0,
precipitation=30.0,
sun_altitude_angle=70.0)
world.set_weather(weather)
print(world.get_weather())
还有预设的环境可以直接使用:
world.set_weather(carla.WeatherParameters.WetCloudySunset)
还可以使用两个py脚本设置天气:environment.py
和dynamic_weather.py