版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能车辆仿真与测试技术黄鑫讲师重庆邮电大学自动化学院智能空地协同控制重庆市高校重点实验室
12026/10/32026/10/32上节课回顾上节课介绍了:SUMO仿真实验SUMO的三大文件配置方法:.net.xml、.rou.xml、.sumocfg仿真数据输出第9讲CARLA智能车辆仿真与测试32026/10/301/概述02/基础操作03/算法:路径规划与轨迹跟踪目录/CONTENTS2026/10/340101/CARLA简介01/概述CARLA是由西班牙巴塞罗那自治大学计算机视觉中心指导开发的开源模拟器,用于自动驾驶系统的开发、训练和验证。CARLA模拟了一个高度逼真的环境,模拟现实世界的城镇、城市和高速公路以及占据这些驾驶空间的车辆和其他物体。CARLA开放式数字资产(城市布局,建筑物,车辆等)/灵活的传感器套件规格和环境条件(白天、夜晚、雨雪天气等)软件官网:/2026/10/350102/CARLA基本架构01/概述CARLA是一个开源的自动驾驶模拟器,其主要由可扩展的客户端-服务器(Client-Server)架构组成。服务器负责与模拟本身相关的所有事情:传感器渲染、物理计算、世界状态及其参与者的更新等等。由于它旨在获得真实的结果,因此最适合使用专用GPU运行服务器,尤其是在处理机器学习时。客户端由一组客户端模块组成,这些模块控制场景中车辆的逻辑并设置世界条件,主要通过CARLAAPI(在Python或C++中)实现。python2026/10/360102/CARLA的基本架构01/概述2026/10/370102/CARLA的基本架构(服务器端)01/概述交通管理器:CARAL服务器端最主要的部分,其作为CARLA的一个内置系统,除了用于学习的车辆外,还可以控制车辆。它充当CARLA提供的指挥器,以逼真的行为再现类似城市的环境。传感器:车辆依靠传感器来分发周围环境的信息。在CARLA中,它们是附加在车辆上的特定类型的参与者,可以检索和存储它们接收到的数据以简化流程。目前,该项目支持不同类型的传感器,从摄像头到雷达、激光雷达等等。记录器:此功能用于为虚拟世界中的每个要素逐步重演模拟。它允许访问世界任何时刻的任何地方。ROS桥:主要功能是作为仿真接口,将CARLA模拟器集成到其它学习环境中。开放资源:通过对天气条件的控制和一个包含大量元素的蓝图库,为城市环境提供了不同的地图。并且这些元素可以定制,可以按照简单的指南生成新元素。2026/10/380102/CARLA的基本架构(客户端)01/概述客户端(Client)的作用主要用于控制服务器端。用户通过写Python脚本(或者C++)来向服务器端输送指令指导世界的变化,服务器端则根据用户的指令去执行。另外,客户端也可以接受服务器端的信息,譬如某个照相机拍到的路面图片。CARLA的服务器端和客户端主要通过远端程序呼叫(remoteprocedurecall,RPC)进行连接。用户主要通过使用Python库作为客户端,同时通过调用API的方式跟CARLA仿真器进行交互来实现场景搭建和算法实现等仿真工作。2026/10/390103/CARLA安装01/概述Windows安装CARLA:/a.检查电脑配置(GPU、内存)b.Python版本(python)c.Pip版本大于20.3(pip3–V检查)123第9讲CARLA智能车辆仿真与测试102026/10/301/概述02/基础操作03/算法:路径规划与轨迹跟踪目录/CONTENTS2026/10/31102/基础操作1、启动CARLA。2、要通过PythonAPI操作CARLA,我们需要通过开放端口将Python客户端连接到服务器。打开Python,然后将以下代码添加到开头部分:importCARLA#Connecttotheclientandretrievetheworldobjectclient=CARLA.Client('localhost',2000)world=client.get_world()0201/启动CARLA并连接客户端2026/10/31202/基础操作地图包括城镇的3D模型及其道路定义。道路定义基于OpenDRIVE文件,这是一种标准化的带注释的道路定义格式。CARLAAPI充当高级查询系统来导航这些道路在CARLAAPI中,世界(world)模块提供对模拟所有元素的访问,包括地图、地图中的对象,例如建筑物、交通信号灯、车辆和行人。CARLA服务器加载默认地图(通常是Town10)。“world=client.get_world()”客户端还可以获取可用地图列表来更改当前地图。这将删除当前的“World”,并创造一个新的“World”。“print(client.get_available_maps())world=client.load_world('Town01')0202/加载地图2026/10/31302/基础操作0203/观众导航使用观众导航,可以熟悉已加载的地图,并查看所做的任何更改的结果,例如添加车辆、更改天气、打开/关闭地图的各个图层,从而用于调试目的。可以使用鼠标控制观众视图的俯仰和偏航,并使用QWE-ASD键移动观众视角。2026/10/31402/基础操作0204/加载NPC加载地图之后,服务器已经启动并运行,现在需要使用一些车辆填充仿真环境。首先,我们需要从蓝图库中选择所需的载具。vehicle_blueprints=world.get_blueprint_library().filter('*vehicle*')现在有了蓝图,我们需要在地图上找到一些合适的位置来生成我们的车辆。为此,每个CARLA地图都提供了预定义的出生点,均匀分布在整个地图的道路上。spawn_points=world.get_map().get_spawn_points()importrandomforiinrange(0,50):world.try_spawn_actor(random.choice(vehicle_blueprints),random.choice(spawn_points))2026/10/31502/基础操作0204/加载NPC现在还应该添加一个车辆,它将作为仿真的中心点。为了训练自动驾驶车辆(AV),需要仿真AV。在CARLA的说法中,经常将这种车辆称为“ego_vehicle”。ego_vehicle=world.spawn_actor(random.choice(vehicle_blueprints),random.choice(spawn_points))除车辆外,CARLA还提供行人添加到模拟中,以模拟逼真的驾驶场景。walker_controller_bp=world.get_blueprint_library().find('controller.ai.walker')world.SpawnActor(walker_controller_bp,CARLA.Transform(),parent_walker)2026/10/31602/基础操作0204/加载NPC每个AI控制器都需要进行初始化、输入目标和速度(可选)。停止每个控制器的工作方式相同。ai_controller.start()ai_controller.go_to_location(world.get_random_location_from_navigation())ai_controller.set_max_speed(1+random.random())#Between1and2m/s(defaultis1.4m/s).ai_controller.stop()2026/10/31702/基础操作0205/加载传感器CARLA内置了多种类型的传感器模型,用于为机器学习创建训练数据。传感器可以连接到车辆上,也可以连接到固定点以模拟,例如闭路电视摄像机。CARLA中有两种类型的传感器:每帧都工作的传感器(相机,点云等)和只有特定环境下才接收数据的传感器(触发检测)。都属于CARLA.Sensor类,从CARLA.BlueprintLibrary类中实例化,如表5-2和表5-3所示。2026/10/31802/基础操作0205/加载传感器2026/10/31902/基础操作0204/加载NPC尽管不同的传感器本身存在差异,但是使用和管理每个传感器的方法都是类似的。采用如下示例加载传感器:1.选择传感器蓝图camera_bp=blueprint_library.find('sensor.camera.rgb’)2.设置传感器参数及位置坐标camera_bp.set_attribute('image_size_x','640')camera_bp.set_attribute('image_size_y','480')camera_bp.set_attribute('fov','110')camera_bp.set_attribute('sensor_tick','1.0')camera_transform=CARLA.Transform(CARLA.Location(x=1.5,z=2.4))2026/10/32002/基础操作0204/加载NPC3.创建传感器并将传感器放置在车辆上camera=world.spawn_actor(camera_bp,camera_transform,attach_to=ego_vehicle)4.注册回调函数,将传感器添加到传感器列表中camera.listen(lambdaimage:sensor_callback(image))sensor_list.append(camera)5.定义sensor_callbackimportnumpyasnpimportcv22026/10/32102/基础操作0204/加载NPCdefsensor_callback(sensor_data,sensor_queue,sensor_name):
image=np.array(sensor_data.raw_data).reshape((480,640,4)) cv2.imshow("",image) cv2.waitKey(1) sensor_queue.put((sensor_data.frame,sensor_name))6.运行结果如图5-8,左图显示的是相机传感器返回的数据,右图是CARLAUE4中显示的画面。2026/10/32202/基础操作0204/加载NPC7.代码运行结束,收回创建的车辆与传感器:actor_list=world.get_actors()vehicle_list=list(actor_list.filter('vehicle.*'))client.apply_batch([CARLA.command.DestroyActor(x)forxinvehicle_list])forsensorinsensor_list:sensor.destroy()2026/10/32302/基础操作0205/实现车辆自动驾驶上文已经将交通情况和ego车辆添加到模拟中并开始记录摄像头数据,我们现在需要使用交通管理器设置车辆。交通管理器可以控制车辆在模拟器中的道路上自动行驶,遵循道路惯例并像真实的驾驶员一样行驶。我们可以使用该方法在模拟器中找到所有车辆,并能筛选车辆
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年旅游地产研究报告
- 《学习雷锋班会》课件
- 《学戏曲第1课时》课件
- 《工序质量控制》课件
- 烟叶调制员安全素养水平考核试卷含答案
- 果蔬汁浓缩工安全综合强化考核试卷含答案
- 海藻饲料肥料制作工岗前设备考核试卷含答案
- 樟脑升华工岗中工作合规化考核试卷含答案
- 燃料值班员操作规程强化考核试卷含答案
- 木地板表面装饰工基础效率知识考核试卷含答案
- 《机械基础(第7版)》电子教案
- JS/T 302-2026公共机构电动汽车充电基础设施配置及运行指南
- 小学五年级数学上册《分段计费问题》教学设计
- 脊髓型颈椎病护理查房
- 自律自强 书写精彩 主题班会课件
- 2026年江苏徐州市中考语文考试真题及答案
- UG练习图纸大全-65张-绝对受用
- 2026及未来5年中国番茄行业市场现状调查及未来趋势研判报告
- 市政道路路面铣刨施工方案
- 借款用小车顶账协议书范本
- 市政道路雨、污水管道工程施工技术培训
评论
0/150
提交评论