carla学习笔记:OpenDRIVE standalone mode

OpenDRIVE独立模式

此功能允许用户将任何OpenDRIVE文件作为现成的carla地图摄取。为了做到这一点,模拟器将自动生成一个道路网格供actor导航。


概述

此模式仅使用OpenDRIVE文件运行完整模拟,而不需要任何其他几何图形或资源。为此,模拟器获取一个OpenDRIVE文件,并按程序创建一个临时三维网格来运行模拟。

生成的网格以极简的方式描述道路定义。所有元素都将与OpenDRIVE文件相对应,但除此之外,只有void。为了防止车辆掉下道路,采取了两项措施。

  • 交叉路口的车道要宽一些,那里的车辆流动最为复杂。
  • 在道路边界处设置可见墙,作为最后的安全措施。

交通信号灯、停车场和停车场将在飞行中生成。行人将在地图上显示的人行道和人行横道上导航。所有这些元素,以及路上的每一个细节,都是基于OpenDRIVE文件的。因为独立模式使用.xodr它中的任何问题都会直接传播到模拟中。这可能是一个问题,尤其是在交叉路口,那里有许多车道是混合的。

注意:

再次检查OpenDRIVE文件尤其重要。运行模拟时,其中的任何问题都会扩散放大。

 


运行独立的地图

打开OpenDRIVE文件只是调用client.generate_opendrive_world() API。这将生成新地图,并阻止模拟,直到它准备就绪。该方法需要两个参数。

  • opendriveOpenDRIVE文件的内容被解析为字符串。
  • 参数是一个carla.OpendriveGenerationParameters包含生成网格的设置此参数是可选的 .

    • 顶点距离vertex_distance(默认为2.0米)-网格顶点之间的距离。距离越大,网格越不精确。但是,如果距离太小,生成的网格将太重而无法使用。
    • 最大路长max_road_length(默认为50.0米)-网格部分的最大长度。网格被分成若干部分以减少渲染开销。如果部分不可见,UE将不呈现该部分。分量越小,丢弃的可能性就越大。然而,如果部分太小,UE将有太多的对象需要管理,并且性能也会受到影响。
    • 墙高wall_height (默认为1.0米)-在道路边界上创建的附加墙的高度。这样可以防止车辆坠落到空隙中。
    • 附加宽度additional_width (默认0.6米,每边0.3米)-应用于交叉口车道的小宽度增量。这是防止车辆坠落的安全措施。
    • 平滑的连接smooth_junctions (默认为True)-如果是的,OpenDRIVE的一些信息将被重新解释以平滑连接处的最终网格。这样做是为了防止不同车道相交时可能出现的一些误差。如果设置为,网格将完全按照OpenDRIVE中的描述生成。
    • 启用“网格”可见性 enable_mesh_visibility(默认为True)-如果,网格将不会被渲染,这将为模拟器节省大量的渲染工作。

为了方便地测试此功能PythonAPI/util/中的的config.py有一个新的的参数 -x 或者 --xodr-path. 此参数要求字符串的路径为.xodr文件,例如path/example.xodr. 如果使用此脚本生成网格,则使用的参数将始终是默认参数。

此功能可以用新的TownBig由carla提供

python3 config.py -x opendrive/TownBig.xodr

注意:

client.generate_opendrive_world() uses content of the OpenDRIVE file parsed as string. On the contrary, config.py script needs the path to the .xodr file.


网格生成

网格的生成是该模式的关键。只有当生成的网格平滑且完全符合其定义时,该功能才能成功。为此,这一步骤正在不断改进。在上一次迭代中,交叉点已被抛光,以避免出现不准确的情况,尤其是在不平坦的车道连接处。

 

生成交叉口网格时,较高的车道往往会阻挡其下方的车道。
参数平滑的连接防止此类问题

除此之外,不是将整个地图创建为唯一的网格,而是创建不同的部分。通过分割网格,模拟器可以避免渲染不可见的部分,并节省成本。较小的工作也允许生成巨大的贴图,并包含网格的一小部分可能发生的问题。

对于网格生成的当前状态,应该考虑一些因素。

  • 交叉点平滑. 默认平滑可防止上述倾斜连接处的问题。但是,它会在这个过程中修改原始网格。设置平滑的连接如果愿意,禁用平滑
  • 横向坡度. 此功能目前未集成在卡拉中。
  • 人行道高度. 这是目前硬编码所有人行道相同。人行道必须高于道路标高才能检测到碰撞,但RoadRunner不会将此值导出到OpenDRIVE文件。高度是硬编码以保证碰撞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值