CN116306029B - 基于Carla与ROS的自动驾驶仿真测试方法 - Google Patents
基于Carla与ROS的自动驾驶仿真测试方法 Download PDFInfo
- Publication number
- CN116306029B CN116306029B CN202310548456.0A CN202310548456A CN116306029B CN 116306029 B CN116306029 B CN 116306029B CN 202310548456 A CN202310548456 A CN 202310548456A CN 116306029 B CN116306029 B CN 116306029B
- Authority
- CN
- China
- Prior art keywords
- vehicle
- virtual
- carla
- automatic driving
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 76
- 238000010998 test method Methods 0.000 title claims abstract description 13
- 238000012360 testing method Methods 0.000 claims abstract description 50
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 36
- 230000009471 action Effects 0.000 claims abstract description 19
- 238000013507 mapping Methods 0.000 claims abstract description 17
- 230000000007 visual effect Effects 0.000 claims abstract description 8
- 238000012800 visualization Methods 0.000 claims abstract description 7
- 238000000034 method Methods 0.000 claims description 20
- 230000007246 mechanism Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 5
- 230000011218 segmentation Effects 0.000 claims description 5
- 238000012549 training Methods 0.000 claims description 5
- 238000005259 measurement Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 3
- 230000002708 enhancing effect Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 6
- 230000003993 interaction Effects 0.000 abstract description 6
- 230000006399 behavior Effects 0.000 description 26
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 5
- 241000252210 Cyprinidae Species 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 239000000523 sample Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04815—Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Human Computer Interaction (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供基于Carla与ROS的自动驾驶仿真测试方法,该方法包括:在自动驾驶模拟器Carla中创建仿真驾驶环境,配置自动驾驶代理控制虚拟车;在配置ROS***的物理车与自动驾驶模拟器Carla中虚拟车之间建立实时数据交互与动作映射,实现ROS与Carla的协同仿真;支持导入不同场景文件对自动驾驶车辆进行场景测试。通过JSON配置文件自定义添加、灵活配置虚拟传感器套件;实现虚拟车行驶姿态与传感器数据的可视化展示,提供传感器数据采集的功能;本发明解决了现有的自动驾驶仿真测试真实性和完善度不足的问题,并集成场景测试、传感器可视化与数据采集功能,提升自动驾驶算法的测试效率,有效降低自动驾驶测试的成本。
Description
技术领域
本发明公开了一种基于Carla与ROS的自动驾驶仿真测试方法,涉及自动驾驶测试领域。
背景技术
随着感知、通信、控制决策以及人工智能等相关技术发展,自动驾驶算法日趋成熟,但仍需投入大量时间和成本对自动驾驶算法进行测试,以保证其安全性和可靠性。采用真实道路测试存在成本高、耗时长且无法安全复现极端交通条件与危险场景等问题。利用自动驾驶模拟器进行仿真测试可以快速模拟各类复杂的驾驶场景,在保障安全高效的前提下实现更充分的测试验证效果,提升自动驾驶算法的测试效率,缩短功能开发和测试周期。鉴于以上优点,仿真测试已经成为当前自动驾驶测试的重要环节。
然而,当前的自动驾驶模拟器所创建的虚拟环境无法完全复现真实物理环境,存在较多缺陷。首先,仿真软件无法精确模拟传感器的性能和精度,这可能导致仿真测试结果与真实测试结果存在偏差。其次,模拟器中的车辆模型也无法精确模拟真车硬件的性能,即使引入动力学模型进行联合仿真也难以完全复现真实的车辆动力学,以上缺陷对软件在环仿真测试的真实性和准确性造成不利影响。
Carla是目前使用广泛的开源自动驾驶模拟器,其基于虚幻引擎实现仿真环境,支持用户自行导入自定义地图和车辆模型,并向开发者提供PythonAPI实现对仿真环境中对象的配置,包括天气改变、行人与车辆控制、交通信号灯跳转等。此外,Carla提供多种可装卸的传感器,包括深度相机、激光雷达等,支持用户灵活设置传感器参数,传感器可向用户提供用于训练自动驾驶算法的数据。
尽管Carla在城市交通场景方面实现了较高仿真性能,但其依然存在上文所述的虚拟传感器模拟精度不足和车辆动力学拟真度较低等缺陷,此类缺陷将会影响自动驾驶仿真测试的可靠性。为弥补以上缺陷,一种有效的方法是引入真实物理车与模拟器进行协同仿真。
通过引入数字孪生技术实现“虚实结合”,实现真实物理车辆与模拟器中虚拟车的实时数据共享与动作映射,基于现实车辆数据对Carla中虚拟车进行增强,将物理车动力学和虚拟复杂交通场景紧密联系,并在测试过程中实时交互,可有效解决现有基于Carla等自动驾驶模拟器的软件在环仿真测试方法的不足。
ROS(Robot Operating System)***是一款基于分布式架构的开源机器人操作***,可作为真实物理车辆的车载操作***,被广泛应用于自动驾驶领域,其可通过ROSBridge插件实现与自动驾驶模拟器Carla的双向通信。Carla ROS Bridge 是由 CARLA官方提供的中间件,支持ROS ***和CARLA 模拟器之间的双向通信,来自 CARLA 服务端的信息被转换成ROS***中的话题数据,以同样的方式,ROS***中的话题数据被转换为可在自动驾驶模拟器CARLA中应用的指令。
在本发明提出的一种基于Carla与ROS的虚实结合自动驾驶仿真测试方法中,通过在真实物理车上部署ROS***,实现车辆软件与硬件设备资源管理,同时借助Carla ROSBridge插件实现搭载ROS***的物理车与Carla仿真环境中虚拟车的实时交互,从而实现ROS与Carla的“虚实结合”协同仿真。
发明内容
为了解决现有技术中的问题,发明旨在提供一种基于Carla与ROS的虚实结合自动驾驶仿真测试方法及装置,用于搭建一个真实物理车与虚拟车模型实时交互,同时集成场景测试、传感器可视化与数据采集功能的自动驾驶仿真测试工具,解决现有的自动驾驶仿真测试平台真实性与完善度不足的问题,提升自动驾驶算法的测试效率,有效降低自动驾驶测试的成本。
技术方案:有鉴于此,本发明实施例提供了基于Carla与ROS的自动驾驶仿真测试方法,所述方法包括如下步骤:
步骤一、在自动驾驶模拟器Carla中创建车辆行驶仿真环境,对生成的虚拟车配置待测的自动驾驶算法,在所述仿真环境中添加虚拟传感器套件,配置所述虚拟传感器套件;
步骤二、对于步骤一所述配置待测自动驾驶算法的虚拟车,在所述虚拟车与配置ROS***的真实物理车之间建立数据共享与动作映射,建立所述ROS***与自动驾驶模拟器Carla协同仿真环境;
步骤三、实时获取自动驾驶模拟器Carla中虚拟车行驶姿态与传感器数据,在可视化界面对数据进行展示;
步骤四、在所述步骤二所建立的ROS与自动驾驶模拟器Carla协同仿真环境下,选择不同驾驶场景并执行,对配置自动驾驶算法的虚拟车进行场景测试,测试虚拟车的驾驶行为在所选驾驶场景下是否符合设定要求;
步骤五、采集虚拟传感器数据,对实时获取的自动驾驶模拟器Carla服务端中传感器数据进行保存。
进一步的,所述步骤一中包括以下内容:
步骤1.1 向自动驾驶模拟器Carla的服务端导入地图模型和车辆模型,创建车辆行驶仿真环境,所述车辆行驶仿真环境中包含交通管理器TM、虚拟车;
步骤1.2 配置交通管理器管理仿真环境中的车辆交通流,批量设置虚拟车行;
步骤1.3 导入JSON格式的传感器配置文件,设置虚拟传感器套件的种类和位置参数;
步骤1.4 设定待测试的自动驾驶算法,配置所述自动驾驶算法作为虚拟车的行为代理,进而操控虚拟车的驾驶行为。
进一步的,所述虚拟传感器套件包括激光雷达、深度相机、RGB相机、语义分割相机、IMU惯性测量单元、GNSS导肮卫星传感器。
进一步的,所述步骤二中包括以下内容:
步骤2.1 构建物理车硬件平台,物理车上搭载上位机、下位机、车身及车载传感器;所述上位机实现物理车的硬件驱动、车载传感器数据获取,执行环境感知、定位建图、决策与路径规划;所述下位机用于接收所述上位机的控制指令,操纵物理车的速度和转向;
步骤2.2基于ROS***的发布及订阅机制,将物理车控制指令以话题方式发布到虚拟车,同时物理车订阅由虚拟车发布的里程计数据话题,物理车与虚拟车共享动作控制指令,从而实现物理车与所述虚拟车之间的实时动作映射;
步骤2.3基于ROS***的发布及订阅机制,将物理车辆与虚拟车的数据都发布为ROS话题,物理车与虚拟车根据需求订阅话题数据,从而实现物理车与Carla仿真环境中虚拟车之间的实时数据共享。
进一步的,所述步骤三中包括以下内容:
步骤3.1 创建订阅节点,对步骤2.3发布的车辆状态话题进行订阅,实时获取虚拟车行驶姿态与虚拟传感器数据;
步骤3.2 在可视化工具中实时展示虚拟车行驶轨迹和虚拟传感器套件数据。
进一步的,所述步骤四中包括以下内容:
步骤4.1 导入场景描述文件,在所述协同仿真环境中执行选定的驾驶场景;
步骤4.2测试配置了自动驾驶算法的虚拟车,将其在步骤4.1所导入驾驶场景下的驾驶行为,判断其驾驶行为是否符合设定要求,并在可视化界面显示车辆的行驶轨迹。
进一步的,所述步骤五中包括以下内容:
对实时获取的Carla服务端中传感器数据进行保存,包括车辆前端RGB相机、顶部激光雷达点云数据、车辆IMU与GNSS数据,用于自动驾驶算法的训练与测试。
有益效果:
与现有技术相比,本发明的优点在于:
(1)实现真实ROS物理车与Carla仿真环境中虚拟车的实时交互,有效解决现有基于各类模拟器的软件在环仿真测试方法真实性、可靠性不足的问题;
(2)通过导入场景描述文件,可以搭建现实中难以复现的复杂危险场景,满足自动驾驶车辆对各类驾驶场景的测试需求;
(3)集成数据展示与数据采集功能,实时获取并可视化Carla服务端中虚拟车行驶姿态与传感器数据,支持传感器套件的自定义灵活配置,实现对传感器数据采集,包括激光雷达、车辆IMU等数据,用于自动驾驶算法的训练与测试。
附图说明
图1是根据本发明实施例的基于Carla与ROS的虚实结合自动驾驶仿真测试方法的流程图;
图2是本发明实施例的配置交通管理器的执行流程图;
图3是本发明实施例中物理车架构图;
图4是本发明实施例中虚拟车与物理车辆动作映射实现方法的结构图;
图5是本发明实施例中虚拟车与物理车辆数据共享实现方法的结构图。
实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。本发明所描述的实施例仅是本发明一部分实例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合图1,图1为本发明基于Carla与ROS的虚实结合自动驾驶仿真测试方法第一实施例的流程示意图。本实施例中,所述基于Carla与ROS的虚实结合自动驾驶仿真测试方法包括如下步骤:
步骤一、在自动驾驶模拟器Carla中创建车辆行驶仿真环境,对生成的虚拟车配置待测的自动驾驶算法,在所述仿真环境中添加虚拟传感器套件,配置所述虚拟传感器套件;
步骤二、对于步骤一所述配置待测自动驾驶算法的虚拟车,在所述虚拟车与配置ROS***的真实物理车之间建立数据共享与动作映射,建立所述ROS***与自动驾驶模拟器Carla协同仿真环境;
步骤三、实时获取自动驾驶模拟器Carla中虚拟车行驶姿态与传感器数据,在可视化界面对数据进行展示;
步骤四、在所述步骤二所建立的ROS与自动驾驶模拟器Carla协同仿真环境下,选择不同驾驶场景并执行,对配置自动驾驶算法的虚拟车进行场景测试,测试虚拟车的驾驶行为在所选驾驶场景下是否符合设定要求;
步骤五、采集虚拟传感器数据,对实时获取的自动驾驶模拟器Carla服务端中传感器数据进行保存。
进一步的,所述步骤一具体包括以下内容:
步骤1.1向自动驾驶模拟器Carla的服务端导入地图模型和车辆模型,创建车辆行驶仿真环境,所述车辆行驶仿真环境中包含交通管理器TM、虚拟车;
通过Unreal引擎启动Carla服务端,在Carla客户端通过PythonAPI实例化一个Client对象与Carla服务端进行交互。Carla提供了一个基于OpenDRIVE格式的道路编辑器,允许用户自定义编辑地图。客户端调用load_world方法加载仿真环境的地图模型,将Carla服务端中的仿真环境实例化为World对象,向仿真环境添加任何对象(Actor)都可通过World对象实现。
在Carla世界中任何可以通过客户端创建的物体都称为Actor,包括车辆、行人、传感器等。Carla内置了Actor模板库,即蓝图库(blueprint library),包含内置的车辆模型,选择车辆蓝图并调用spawn_actor方法即可创建虚拟车。
步骤1.2配置交通管理器管理仿真环境中的车辆交通流,批量设置虚拟车行;使用PythonAPI在自动驾驶模拟器Carla中配置交通管理器TM(Traffic mannager)管理仿真环境中车辆,批量设置虚拟车行为方式,以便更加真实地模拟现实世界中的交通情况。
TM模块提供一个模拟真实行车环境中的不确定性的可能,因为在自动驾驶汽车算法在测试的时候,通常很容易在安全行车环境下测试,而危险驾驶的场景不是很容易创造,TM给可以通过设置车辆危险行为规则参数来模拟危险驾驶场景。
在进一步的实施例中对上述伪代码进行详细说明,首先创建交通管理器并绑定指定端口,生成道路上其他车辆,随机选择车辆类型和生成点,将生成的车辆通过连接TM服务端口,注册到Traffic manager的管理列表,并选择自动驾驶代理设置为自动模式。默认情况下,由交通管理器控制的车辆的灯光从不改变状态,使用update_vehicle_lights()委托车辆管理器控制车辆的灯光。
自定义设置车辆危险行为规则参数,包括无视红绿灯概率(ignore_lights_percentage),无视交通标志概率(ignore_signs_percentage),无视交通参与者概率(ignore_vehicles_percentage),与前车的安全距离(distance_to_leading_vehicle),超出当前限速的比例(vehicle_percentage_speed_difference)。
当交通管理器控制的车辆全部销毁时,交通管理器将自动停用,无需显式操作,由Carla客户端自动调用API完成。
步骤1.3导入JSON格式的传感器配置文件,设置虚拟传感器套件的种类和位置参数,包括激光雷达、深度相机、RGB相机、语义分割相机、IMU惯性测量单元、GNSS导航卫星传感器等;
传感器配置文件采用JSON格式(JavaScript Object Notation),全称为JavaScript对象描述,是一种轻量级的文本数据交换格式,采用键值对的形式存储数据。以上所述的虚拟传感器类型都包含在Carla官方提供的蓝图库(blueprintLibrary)中。通过解析传感器配置文件,得到待添加的传感器类型及参数,从官方蓝图库中选择对应传感器进行实例化并设置其参数,将实例化后得到的传感器对象添加进仿真环境中。
传感器配置文件格式如下:
{
"sensors": [
{
"type": ,
"id":,
"spawn_point": {"x": , "y": , "z": , "roll": , "pitch": , "yaw": },
"image_size_x":,
"image_size_y": ,
"fov":,
"channel":,
"points_per_second":,
"range":,
"rotation_frequency":
},
......
]
}。
上述JSON文件中传感器对象包含以下可选参数字段,
"type",表示传感器类型,如"sensor.camera.rgb"类代表RGB相机,"sensor.lidar.ray_cast"类代表激光雷达,
"id",表示传感器标识符,
"spawn_point",表示传感器安装位置,其中{x,y,z}表示传感器相对于虚拟车的坐标偏移,以及{roll,pitch,yaw}分别代表x,y,z轴方向的偏转角度,
"image_size_x",表示传感器采集图像的像素宽度,
"image_size_y",表示传感器采集图像的像素高度,
"fov",表示传感器水平视野角度,
"channel",表示发出的激光通道数,
"points_per_second",表示雷达每秒发出的探测点数,
"range",表示最大测量距离,
"rotation_frequency",表示雷达旋转频率,
其中,传感器待配置的必需参数包括:传感器种类(type)、传感器标识符(id)、安装位置(spawn_point),对于图像采集类传感器,还需额外设置像素宽度和高度(image_size_x,image_size_y);对于激光雷达和语义分割激光雷达,还需设置激光通道数(channel)、每秒探测点数(points_per_second)、最大探测距离(range)和雷达旋转频率(rotation_frequency)。
步骤1.4设定待测试的自动驾驶算法,配置所述自动驾驶算法作为虚拟车的行为代理,进而操控虚拟车的驾驶行为。
自动驾驶模拟器Carla中提供了车辆行为控制接口,支持用户选择自动驾驶算法作为行为代理控制虚拟车,在仿真环境中测试自动驾驶算法。在本发明实施例中,选择Carla自带的Baseline自动驾驶算法作为测试对象,对于仿真环境中创建的虚拟车,调用set_autopilot方法即可开启自动驾驶模式,由Carla默认的自动驾驶策略作为车辆行为代理,操控虚拟车行驶。
进一步的,所述步骤二具体包括以下内容:
步骤2.1构建物理车硬件平台,物理车上搭载上位机、下位机、车身及车载传感器;所述上位机实现物理车的硬件驱动、车载传感器数据获取,执行环境感知、定位建图、决策与路径规划;所述下位机用于接收所述上位机的控制指令,操纵物理车的速度和转向。
本实施例中使用的硬件平台为一台定制的六轮无人物理车。其整体架构如图3所示,该物理车的主要硬件组成部分包括上位机、下位机、车身结构、配备的车载传感器。
上位机包含一个英特尔 I7-8550U 处理器,部署 ROS 1.0***,主要负责实现硬件驱动、车载传感器数据获取,执行环境感知、定位建图、决策与路径规划。建图模块采用Gmapping构图算法,在地图构建完成后启动导航模块会自动将已保存的地图导入,导航模块使用A*算法实现全局路径规划。
下位机包含一个搭载 QCA9563 芯片的微控制器,负责惯性测量单元(IMU)和里程表信息(Odometry)的收集、预处理和转发,并接受上位机发出的控制命令,以操纵物理车的速度和转向。
物理车的车身结构包括车身本身、底盘、车轮等,物理车装备有六个独立的驱动轮,分别由四个电机进行驱动,其中前轮和后轮可以转向,转向模式为差速转向。
配备的车载传感器包括激光雷达和深度相机,用于识别和捕捉周围的物理环境,当前的传感器组件包括一个 RS-LiDAR-16 可旋转 64 线激光雷达和一个英特尔RealSense 深度摄像头D455。
步骤2.2 实现物理车与Carla仿真环境中虚拟车之间的实时动作映射,其实现方法如图4所示;基于ROS***的发布及订阅机制,将物理车控制指令以话题方式发布到虚拟车,同时物理车订阅由虚拟车发布的里程计数据话题,物理车与虚拟车共享动作控制指令,从而实现物理车与所述虚拟车之间的实时动作映射。
2.2.1 物理车到虚拟车的动作映射;
carla_ackermann_control是ROS Bridge中的一个功能包,它提供了一个实现了基于Ackermann车辆模型的控制器,其将线速度和转向角速度映射到车辆的左右轮转速上,从而控制车辆的运动,可用于控制在Carla仿真环境中的虚拟车。
物理车上的ROS***通过ROS Bridge中的carla_ackermann_control功能包实现将控制物理车行动的Ackermann指令以话题方式发送到Carla服务端,控制仿真环境中的虚拟车进行相同的行动,由此实现物理车向虚拟车的动作映射。
2.2.2 虚拟车到物理车的动作映射;
在本发明实施例的步骤一中,借助Carla ROS Bridge将Carla仿真环境中的虚拟车数据转换成ROS***中的话题进行发布,其中话题"/carla/ego_vehicle/odometry"包含虚拟车的里程计信息,里程计信息包括pose类型数据和twist类型数据,分别指示了虚拟车在当前时间步长的位置坐标和速度,其中速度包括车辆运动的线速度和角速度。
由于订阅得到的虚拟车里程计信息不能直接作为操纵物理车的Ackermann控制指令,因此需要构建控制命令转换节点,根据虚拟车的odometry消息生成并发布相应的物理车Ackermann指令,控制前轮的转角和后轮的速度,以使车辆朝着指定的方向行驶。
以上为代码中,首先创建并初始化消息转换节点,从"/carla/ego_vehicle/odometry"话题订阅得到实时获取的虚拟车里程计信息,将获取到的里程计信息中的twist 类型数据发布到ROS话题"/cmd_vel",twist 类型数据包括虚拟车在当前时间步长的线速度和角速度。物理车上ROS***中的基本控制节点Base Controller会监听以"/cmd_vel"为话题的控制指令,通过驱动***将指令转换为物理车的电机控制信号,以驱动物理车的运动,其中包含基本 PID 算法来控制电机运动,并优化机器人的运动控制。
步骤2.3基于ROS***的发布及订阅机制,将物理车辆与虚拟车的数据都发布为ROS话题,物理车与虚拟车根据需求订阅话题数据,从而实现物理车与Carla仿真环境中虚拟车之间的实时数据共享,其实现方法如图5所示。
2.3.1 虚拟车向物理车的数据共享;
利用Carla ROS Bridge插件,自动将虚拟车的传感器数据发布为ROS话题,例如"/carla/ego_vehicle/vehicle_info"、"/carla/ego_vehicle/odometry"和"/carla/ego_vehicle/depth_camera/image"等,上述三个话题分别包含名为ego_vehicle的虚拟车的车辆状态数据话题、里程计数据话题和深度相机传感器数据话题。物理车上的ROS***通过订阅这些话题可以实时获取虚拟车的数据。
2.3.2 物理车向虚拟车的数据共享;
物理车的传感器数据无法直接通过ROS Bridge发布到CARLA服务端中,因此需要手动构建ROS节点"/scan_values"。此节点订阅真车的车载激光雷达数据话题"/scan",对"/scan"话题数据进行处理和筛选,然后通过Socket通信将数据传递给同一网关下的CARLA服务端,在CARLA服务端中通过Python API获取真实的车载雷达数据,真实的激光雷达数据可用来增强或代替虚拟车在仿真环境中原本的数据。
利用仿真可以运行的比现实世界快的特性,CARLA 客户端在实时获取物理车的数据后可以将这些数据作为仿真的输入并运行仿真,仿真的结果可作为对物理车接下来的行为的预测反馈到物理车并影响其接下来的行为,这在一定程度上能起到规避危险动作的作用。
进一步的,所述步骤三具体包括以下内容:
步骤3.1创建订阅节点,对步骤2.3发布的车辆状态话题进行订阅,实时获取虚拟车行驶姿态与传感器数据;
以下表格为订阅的车辆状态话题和传感器数据话题:
表1
话题名称 | 话题内容 |
/carla/ego_vehicle/vehicle_status | 虚拟车状态 |
/carla/ego_vehicle/odometry | 虚拟车里程计数据,包含定位信息与速度信息 |
/carla/ego_vehicle/imu | 虚拟车惯性测量单元 |
/carla/markers/status | 场景物体的marker |
/tf | 车体的坐标转换信息 |
/carla/ego_vehicle/lidar | 激光雷达数据 |
/carla/ego_vehicle/rgb_view | RGB相机数据 |
/carla/ego_vehicle/semantic_lidar | 语义分割激光雷达数据 |
/carla/ego_vehicle/depth_view | 深度相机数据 |
。
RVIZ支持插件扩展机制,提供各类传感器消息类型的插件库,以上车辆状态话题和传感器数据话题的订阅都基于默认提供的相应插件,不需要手动创建订阅节点。
步骤3.2在可视化工具中实时展示虚拟车行驶轨迹和虚拟传感器套件数据。在本实施例中使用RVIZ可视化工具实时展示车辆行驶轨迹和传感器数据。其具体实现方案如下:
ROS***提供了RVIZ三维可视化工具,实现所有可监测信息的图形化显示,需要可视化的数据以对应的消息类型发布,RVIZ支持插件扩展机制,提供了各类消息类型的插件库,添加插件后订阅消息即可实现显示。
对于车辆姿态信息,选择RVIZ插件库中的Marker插件展示"/carla/markers/status"话题订阅的场景物体基本形状信息,包括车辆形状,建筑物形状,以简易的立方体的形式展示。通过订阅车体的坐标转换信息"/tf"和里程计信息"/carla/ego_vehicle/odometry",RVIZ的"Path"插件能够实时展示车辆模型的运动轨迹。
在本实施例中上述介绍的插件配置都保存输出为carla.rviz配置文件,执行时只需读取配置文件即可完成自动配置。
在进一步的实施例中,步骤五所述的选择并执行不同驾驶场景的具体步骤如下:
步骤4.1导入场景描述文件,在所述协同仿真环境中执行选定的驾驶场景;在本实施例中通过导入录制完成的OpenSCENARIO场景描述文件,执行对应的驾驶场景;
在RVIZ Carla插件中选择示例场景,如“FollowLeadingVehicle”跟随前车行驶场景,然后点击"execute",自我车辆被重新定位并处理场景。对于本实施例中选择驾驶场景的具体实现方式如下:
通过pythonAPI调用Carla Simulator的Scenario Runner场景运行器插件,加载已录制好的OpenSCENARIO标准的xosc(XML OpenSCENARIO)场景描述文件。xosc文件中包含车辆、行人、路标和障碍物的初始状态,以及期望的车辆行为。
以下是xosc文件所包含的要素:
表2
XML OpenSCENARIO文件元素 | 元素含义描述 |
FileHeader | 描述场景文件的作者、版本和描述信息 |
ParameterDeclaration | 定义场景中使用的参数,包括参数名称、类型和初始值 |
Environment | 定义场景的环境设置,包括路网、天气、时间 |
Entities | 定义场景中的实体(车辆、行人、障碍物等),包括实体类型、属性、控制器等。 |
Storyboard | 定义场景中的剧本,包括场景的初始化、主要行为和结束行为等 |
Maneuver | 定义实体(车辆)的行驶行为,包括车道行驶、转弯、加速等 |
Trigger | 定义场景中的触发器(Trigger),包括停止触发器和条件触发器等 |
Route | 定义场景中的路径,包括起始点、终止点和途经点等 |
。
Carla客户端解析xosc场景描述文件中各种元素,按照Entities元素定义的车辆与行人的类型、属性、初始位置、移动速度调用spawn_actor方法生成对应Actor;解析Maneuver和Route元素,控制道路上车辆或行人按照录制好的行动轨迹移动,复现出驾驶场景。
在场景执行过程中,Carla Scenario Runner会不断地监控车辆和场景状态,并根据定义的停止条件判断是否需要停止场景测试。当场景执行完毕或满足停止条件时,CarlaScenario Runner会结束场景测试。
步骤4.2测试配置了自动驾驶算法的虚拟车,将其在步骤4.1所导入驾驶场景下的驾驶行为,判断其驾驶行为是否符合设定要求,并在可视化界面显示车辆的行驶轨迹。
执行OpenSCENARIO场景后,在RVIZ可视化工具的3D视图界面观测虚拟车行为,包括车辆是否按照预期轨迹行驶,是否发生碰撞行为,车辆速度是否符合预期,车辆是否违反交通规则和道路标志。在场景文件中指定一个或多个停止条件来结束场景测试,当满足任意一个停止条件时,场景测试将停止。触发xosc文件中定义的场景停止触发器后停止测试。下表提供了六种常用的场景测试停止触发器:
表3
OpenSCENARIO停止触发器 | 触发器描述 |
Time Out Trigger | 在仿真运行到限制时间后触发 |
Collision Trigger | 在车辆与障碍物发生碰撞时触发 |
End of Road Trigger | 在车辆到达道路尽头时触发 |
Outside Route Trigger | 在车辆离开预定义的路径时触发 |
Stand Still Trigger | 在车辆静止不动一段时间后触发 |
Custom Trigger | 开发者根据需要自定义Trigger |
。
此外,本发明实施例还提供了一种传感器数据采集的装置,在步骤五中对实时获取的Carla服务端中传感器数据进行保存。具体的实现方案如下:
Carla客户端调用各传感器actor对象提供的save_to_disk方法,对实时获取的Carla服务端中传感器数据进行保存,包括车辆前端RGB相机、深度相机、顶部激光雷达点云数据,用于自动驾驶算法的训练与测试。其中,RGB相机与深度相机采集的每一帧图像保存为png图片格式,以采集时的时间戳进行命名,激光雷达的点云数据保存为numpy数组支持的npy格式。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
Claims (6)
1.基于Carla与ROS的自动驾驶仿真测试方法,其特征在于,所述方法包括如下步骤:
步骤一、在自动驾驶模拟器Carla中创建车辆行驶仿真环境,对生成的虚拟车配置待测的自动驾驶算法,在所述仿真环境中添加虚拟传感器套件,配置所述虚拟传感器套件;
步骤二、对于步骤一所述配置待测自动驾驶算法的虚拟车,在所述虚拟车与配置ROS***的真实物理车之间建立数据共享与动作映射,建立所述ROS***与自动驾驶模拟器Carla协同仿真环境;手动构建ROS节点,将物理车的传感器数据发布到Carla服务端中;此节点订阅真实物理车数据话题,对话题数据进行处理和筛选,然后通过Socket通信将数据传递给同一网关下的Carla服务端,在Carla服务端中通过Python API获取真实的数据,真实的数据用来增强或代替虚拟车在仿真环境中原本的数据;所述步骤二中包括以下内容:
步骤2.1 构建物理车硬件平台,物理车上搭载上位机、下位机、车身及车载传感器;所述上位机实现物理车的硬件驱动、车载传感器数据获取,执行环境感知、定位建图、决策与路径规划;所述下位机用于接收所述上位机的控制指令,操纵物理车的速度和转向;
步骤2.2基于ROS***的发布及订阅机制,将物理车控制指令以话题方式发布到虚拟车,同时物理车订阅由虚拟车发布的里程计数据话题,物理车与虚拟车共享动作控制指令,从而实现物理车与所述虚拟车之间的实时动作映射;
步骤2.3基于ROS***的发布及订阅机制,将物理车辆与虚拟车的数据都发布为ROS话题,物理车与虚拟车根据需求订阅话题数据,从而实现物理车与Carla仿真环境中虚拟车之间的实时数据共享;
步骤三、实时获取自动驾驶模拟器Carla中虚拟车行驶姿态与传感器数据,在可视化界面对数据进行展示;
步骤四、在所述步骤二所建立的ROS与自动驾驶模拟器Carla协同仿真环境下,选择不同驾驶场景并执行,对配置自动驾驶算法的虚拟车进行场景测试,测试虚拟车的驾驶行为在所选驾驶场景下是否符合设定要求;
步骤五、采集虚拟传感器数据,对实时获取的自动驾驶模拟器Carla服务端中传感器数据进行保存。
2.根据权利要求1所述的基于Carla与ROS的自动驾驶仿真测试方法,其特征在于,所述步骤一中包括以下内容:
步骤1.1 向自动驾驶模拟器Carla的服务端导入地图模型和车辆模型,创建车辆行驶仿真环境,所述车辆行驶仿真环境中包含交通管理器、虚拟车;
步骤1.2 配置交通管理器管理仿真环境中的车辆交通流,批量设置虚拟车行;
步骤1.3 导入JSON格式的传感器配置文件,设置虚拟传感器套件的种类和位置参数;
步骤1.4 设定待测试的自动驾驶算法,配置所述自动驾驶算法作为虚拟车的行为代理,进而操控虚拟车的驾驶行为。
3.根据权利要求1或2所述的基于Carla与ROS的自动驾驶仿真测试方法,其特征在于,所述虚拟传感器套件包括激光雷达、深度相机、RGB相机、语义分割相机、IMU惯性测量单元、GNSS导航卫星传感器。
4.根据权利要求1所述的基于Carla与ROS的自动驾驶仿真测试方法,其特征在于,所述步骤三中包括以下内容:
步骤3.1 创建订阅节点,对步骤2.3发布的车辆状态话题进行订阅,实时获取虚拟车行驶姿态与传感器数据;
步骤3.2 在可视化工具中实时展示虚拟车行驶轨迹和虚拟传感器套件数据。
5.根据权利要求1所述的基于Carla与ROS的自动驾驶仿真测试方法,其特征在于,所述步骤四中包括以下内容:
步骤4.1 导入场景描述文件,在所述协同仿真环境中执行选定的驾驶场景;
步骤4.2测试配置了自动驾驶算法的虚拟车,将其在步骤4.1所导入驾驶场景下的驾驶行为,判断其驾驶行为是否符合设定要求,并在可视化界面显示车辆的行驶轨迹。
6.根据权利要求4所述的基于Carla与ROS的自动驾驶仿真测试方法,其特征在于,所述步骤五中包括以下内容:
对实时获取的Carla服务端中传感器数据进行保存,包括车辆前端RGB相机、顶部激光雷达点云数据、车辆IMU与GNSS数据,用于自动驾驶算法的训练与测试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310548456.0A CN116306029B (zh) | 2023-05-16 | 2023-05-16 | 基于Carla与ROS的自动驾驶仿真测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310548456.0A CN116306029B (zh) | 2023-05-16 | 2023-05-16 | 基于Carla与ROS的自动驾驶仿真测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116306029A CN116306029A (zh) | 2023-06-23 |
CN116306029B true CN116306029B (zh) | 2023-10-27 |
Family
ID=86803463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310548456.0A Active CN116306029B (zh) | 2023-05-16 | 2023-05-16 | 基于Carla与ROS的自动驾驶仿真测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116306029B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114879631A (zh) * | 2022-04-29 | 2022-08-09 | 长安大学 | 一种基于数字孪生云控平台的自动驾驶测试***和方法 |
CN114968782A (zh) * | 2022-05-25 | 2022-08-30 | 重庆长安汽车股份有限公司 | 一种基于Carla模拟器实现智能驾驶的方法 |
CN115257785A (zh) * | 2022-07-21 | 2022-11-01 | 同济大学 | 一种自动驾驶数据集制作方法及*** |
CN115384526A (zh) * | 2022-08-29 | 2022-11-25 | 上海壁仞智能科技有限公司 | 调试***和调试方法 |
-
2023
- 2023-05-16 CN CN202310548456.0A patent/CN116306029B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114879631A (zh) * | 2022-04-29 | 2022-08-09 | 长安大学 | 一种基于数字孪生云控平台的自动驾驶测试***和方法 |
CN114968782A (zh) * | 2022-05-25 | 2022-08-30 | 重庆长安汽车股份有限公司 | 一种基于Carla模拟器实现智能驾驶的方法 |
CN115257785A (zh) * | 2022-07-21 | 2022-11-01 | 同济大学 | 一种自动驾驶数据集制作方法及*** |
CN115384526A (zh) * | 2022-08-29 | 2022-11-25 | 上海壁仞智能科技有限公司 | 调试***和调试方法 |
Non-Patent Citations (2)
Title |
---|
王庆涛等.数字孪生技术在自动驾驶测试领域的应用研究概述.《汽车科技》.2021,(第2期),第11-15页. * |
马志成等.自动驾驶整车在环仿真平台研究及模拟实现.《智能网联汽车》.2020,(第3期),第34-38页. * |
Also Published As
Publication number | Publication date |
---|---|
CN116306029A (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rong et al. | Lgsvl simulator: A high fidelity simulator for autonomous driving | |
CN111897305B (zh) | 一种基于自动驾驶的数据处理方法、装置、设备及介质 | |
US10482003B1 (en) | Method and system for modifying a control unit of an autonomous car | |
US20220242450A1 (en) | Metaverse data fusion system | |
CN108230817B (zh) | 车辆驾驶模拟方法和装置、电子设备、***、程序和介质 | |
Chen et al. | A novel integrated simulation and testing platform for self-driving cars with hardware in the loop | |
Szalay | Next generation X-in-the-loop validation methodology for automated vehicle systems | |
CN114879631A (zh) | 一种基于数字孪生云控平台的自动驾驶测试***和方法 | |
CN111353221A (zh) | 自动驾驶仿真方法和装置、电子设备及存储介质 | |
CN111752258A (zh) | 自主车辆的操作测试 | |
Shi et al. | An integrated traffic and vehicle co-simulation testing framework for connected and autonomous vehicles | |
Berger et al. | Model-based, composable simulation for the development of autonomous miniature vehicles | |
CN115344503A (zh) | 面向自动驾驶规划控制测试的交通流仿真***与仿真方法 | |
Hong et al. | System configuration of Human-in-the-loop Simulation for Level 3 Autonomous Vehicle using IPG CarMaker | |
Cantas et al. | Customized co-simulation environment for autonomous driving algorithm development and evaluation | |
Guvenc et al. | Simulation Environment for Safety Assessment of CEAV Deployment in Linden | |
Artunedo et al. | Advanced co-simulation framework for cooperative maneuvers among vehicles | |
Stević et al. | Development of ADAS perception applications in ROS and" Software-In-the-Loop" validation with CARLA simulator | |
Zhou et al. | A survey on autonomous driving system simulators | |
CN116306029B (zh) | 基于Carla与ROS的自动驾驶仿真测试方法 | |
Sell et al. | Safety toolkit for automated vehicle shuttle-Practical implementation of digital twin | |
Luo et al. | Intelligent vehicle simulation and debugging environment based on physics engine | |
CN113946956A (zh) | 一种代客泊车仿真方法及装置 | |
Vacek et al. | An integrated simulation framework for cognitive automobiles | |
Kanakagiri | Development of a virtual simulation environment for autonomous driving using digital twins |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |