Lanelets_ 高效的自动驾驶地图表达方式

Lanelets: 高效的自动驾驶地图表达方式

image

附赠自动驾驶学习资料和量产经验:链接

LaneLets是自动驾驶领域高精度地图的一种高效表达方式,它以彼此相互连接的LaneLets来描述自动驾驶可行驶区域,不仅可以表达车道几何,也可以完整表述车道拓扑,同时可以集成交通规则和人的驾驶习惯。

image

如上图所示,每个Lanelet由left bound和right bound组成,left/right bound有一系列点序列组成,因此可以以任意精度逼近任意车道形状。

1. 用于Routing的Lanelets Graph

为了能够基于Lanelets进行路径规划,我们可以构建Lanelets邻接图结构。当Lanelets A的左右边界的终点与Lanelets B的左右边界的起点相同时,我们就称Lanelets A和Lanelets B是相邻接的。

如下图所示,图(右)是对图(左)构建的Graph,同时将每个Lanelets的长度作为Graph Edge的权重。基于该Graph,我们就可以采用Dijkstra算法,实现从任意起点到终点的路径规划。当然读者也可以给Graph Edge赋予道路边界类型、权重因子等属性,从而实现其它类型的Routing规划算法。

image

2. Lanelets中的交通规则

开放的公共道路上存在各种各样的交通控制要素,比如红绿灯、交通标牌等。我们将这些交通规则按照一定的方式组织起来,并关联到对应的Lanelets上。行驶在Lanelets上的车辆必须遵守该Lanelets关联的交通规则。

交通规则通常由两部分内容组成:1、规则的名称和内容;2、遵守这一规则的静态信息或者参数。举个路口红绿灯的例子,它的规则为车辆必须在交通灯为红色的时候,必须停止在路口停止线前等待;它的参数为停止线和关联交通灯的位置。

这里要特别提到是没有红绿灯的十字路口,它的通行规则必须以尽可能少的阻碍其它拥有通行权的交通参与者为准则。

image

交通规则表达

在实际数据中,交通规则通过"type=regulatory element"标识,再通过名称为maneuver的tag区分不同的交通规则。

merge and cross

当maneuver=merge时,该规则的参数是:merge发生的第一个Lanelets。该规则期望车辆在进入merge的第一个Lanelets时,尽可能的与同向车道的车辆的运动速度趋同,并且保持安全距离。

当maneuver=cross时,该规则的参数是:与当前Lanelets发生cross的Lanelets,以及为了避免碰撞发生主车的停止位置。

traffic light

当maneuver=traffic light,该规则的参数是:路口的停止线和关联红绿灯的位置。该规则期望当红绿灯为红色时,车辆停止在停止线之前。

image

3. Lanelets中高效的距离计算和测量

image

image

image

4. 开源的Lanelets地图加载库-libLanelet

libLanelet使用Boost C++代码库实现,它提供了读取、加载和查询XML文件的功能;使用RTree检索查询空间要素的功能;使用诸如Dijkstra进行Routing路线规划的功能;

随着地图范围的不断扩张,Lanelets的数量会快速膨胀,为了提升数据检索的速度,libLanelets使用RTree对Lanelets进行检索,可以做到在O(logn)时间内实现对任意Object的查询。

Github代码路径:https://github.com/phbender/liblanelet

5. Lanelets高精度地图生成

Top-View Map生成

我们利用立体图像技术,将车辆周围的3D点投影到地面上,再利用轨迹将这些3D投影点聚合起来,形成全局的鸟瞰图。然后利用这些鸟瞰图,使用OSM Editor人工标注高精度地图。

image

Lanelets存储格式及编辑工具

Lanelets Map采用OSM格式存储:即文件格式采用XML格式;包含三个基础结构,nodes、ways和relations;坐标系采用WGS-84坐标系。

image

6. Lanelets在实际驾驶中的应用

自动车辆利用Lanelets地图实现状态转换状态机(State Machine)不同状态之间的转换。如下图所示,当自动驾驶车辆行驶到绑定了交通规则的Lanelets时,并且距离交通规则参数的距离小于一定阈值时,事件S被触发,提醒车辆在停止线前停下来。当自动驾驶车辆距离交通规则参数的距离大于一定距离时,事件A被触发,车辆进入路口驾驶模式。当离开路口时,事件F被触发,整个系统被重置到空闲状态。

image

为了完成周围其它车辆的驾驶行为预测,我们首先获取社会车辆周围一定范围内的所有Lanelets,然后通过社会车辆的Pose与Lanelets中心线的距离和角度阈值过滤掉主车无法到达的Lanelets,最后在自动驾驶车辆的预测范围(比如可以预测社会车辆10s的运动范围)内,以社会车辆的运动朝向和运动速度计算所有的可能运动路径,从而调整自动驾驶汽车的运动规划,以避免可能存在的碰撞行为。

参考链接

Lanelets: Efficient Map Representation for Autonomous Driving

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/520561.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

有效的括号--如果字符串没有左括号,或者字符串是右括号为开头,则存在括号不匹配和顺序不正确的情况公字符串无效

题目-有效的括号 ​ 一、分析题目 二、编写代码 typedef char STDataType;typedef struct Stack {STDataType* a; //int top; //相当于数组下标,注意栈为空时,top的值应该为?int capacity;//栈的容量 }ST;void STInit(ST* pst); void STD…

基于SSM框架就业管理系统

摘要 本论文主要讲述了基于SSM框架及MySQL数据库实现的就业管理系统的设计和开发过程。本论文中所讲的就业管理系统是通过所学的知识创办一个非商业性的网站平台,使所有想要就业信息查看的高校毕业生们与想要宣传自己公司的商家们都可以更方便快捷的进行就业和体验…

MobaXterm不显示隐藏文件

MobaXterm在左边显示隐藏文件,以.开头的文件,想让它不显示 点击方框圈中的不显示隐藏文件 隐藏文件不显示了

InterlliJ Debug方式启动 method breakpoints may dramatically show down debugging

使用idea在DEBUG的时候出现Method breakpoints may dramatically slow down debugging, 如图: 根据语义可能是断点打在方法上面了,导致在某个断点卡住了。 重启服务器和重启idea已然无解。 打开Breakpoints面板看看,(快捷键&…

【javaWeb Maven高级】Maven高级学习

Maven高级学习 分模块设计继承与聚合继承版本锁定聚合 私服资源的上传与下载本地私服配置 分模块设计 为什么需要进行分模块设计? 将项目按照功能拆分成若干个子模块,方便项目的管理维护,扩展,也方便模块间的相互调用&#xff0c…

电商技术揭秘六:前端技术与用户体验优化

文章目录 引言一、前端技术在电商中的重要性1.1 前端技术概述1.2 用户体验与前端技术的关系 二、响应式设计与移动优化2.1 响应式设计的原则2.2 移动设备优化策略2.3 响应式设计的工具和框架 三、交互设计与用户体验提升3.1 交互设计的重要性3.2 用户体验的量化与优化3.3 通过前…

【更新】中国区域创新能力指数数据集(无缺失值)(2001-2022年)

01、数据简介 中国区域创新能力指数是一个综合反映各地区在知识创造、知识获取、企业创新、创新环境和创新绩效等方面能力的指标。该指数基于一系列复杂的评价体系,包括多个层级的指标,以全面、准确地衡量中国各区域的创新能力。 《中国区域创新能力报…

在局域网内进行ARP欺骗攻击(Kali)_kali局域网攻击,从入门到真香

fping –asg 192.168.6.0/24 下图看到,同网段有四个活动IP 3、实施断网攻击 命令:arpspoof –i 网卡 –t 靶机IP地址 网关 -i 指定网卡 -t 持续不断攻击 我的命令:arpspoof –i eth0 –t 192.168.6.137 192.168.6.1 Kali中持续不断地发送arp应…

通信光缆主要敷设方式有哪些

由于建设条件和建设要求不同,通信光缆在不同场景下会采取不同的敷设方式,常见敷设方式包括:直埋、架空、管道、水底及局内等。 1 直埋敷设 直埋,也就是直接埋设,是指把光缆直接埋设于地下土壤中的敷设方式。通常&…

Oracle 中 where 和 on 的区别

1.Oracle 中 where 和 on 的区别 on:会先根据on后面的条件进行筛选,条件为真时返回该行,由于on的优先级高于left join,所以left join关键字会把左表中没有匹配的所有行也都返回,然后生成临时表返回,执行优先级高于…

sharding‐jdbc之分库分表实战

数据库表结构 店铺数据库 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for region -- ---------------------------- DROP TABLE IF EXISTS region; CREATE TABLE region (id bigint(20) NOT NULL COMMENT id,region_…

了解IP地址的基本概念和修改步骤

在数字化时代,IP地址作为网络设备的唯一标识,其重要性不言而喻。无论是为了提升网络性能,还是出于隐私保护的需求,修改IP地址都是网络使用者可能遇到的操作。虎观代理将详细介绍如何修改IP地址,并探讨在修改过程中需要…

用C/C++加Easyx实现俄罗斯方块游戏(爆肝4万字,完全免费)

前言 相信大家一定玩过俄罗斯方块这款小游戏,简单容易上手是老少皆宜的小游戏,今天大家就跟着我来实现这个小游戏吧!让自己学的C语言有用武之地。 为了让俄罗斯方块的开发更为简单些,图像更为丰富,在这里就利用了Easyx…

C++之类和对象(上)

目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1访问限定符 4.2 类的两种定义方式 第一种: 第二种: 4.3封装 5.类的实例化 6.类对象模型 1.面向过程和面向对象初步认识 C语言是面向过程的,…

Unity Toggle组件

Toggle Group组件 Allow Switch Off属性值为false时, 1,Toggle初始时默认会有一个被勾选(ison为true),可以自己打勾指定 2,不能取消勾选 Allow Switch Off属性值为true时, 1,Toggl…

11-LINUX--信号

一.信号的基本概念 信号是系统响应某个条件而产生的事件,进程接收到信号会执行相应的操作。 与信号有关的系统调用在“signal.h”头文件中有声明 常见信号的值,及对应的功能说明: 信号的值在系统源码中的定义如下: 1. #define …

JVM 组成

文章目录 概要JVM 是 Java程序的运行环境(java二进制字节码的运行环境)JVM 的主要组成部分运行流程:程序计数器堆元空间方法区常量池运行时常量池 概要 JVM 是 Java程序的运行环境(java二进制字节码的运行环境) 好处&…

BugKu: Simple_SSSTI_2

1.打开题目 由提示可知需要传入一个名为flag的参数 2.查看网页源代码 并没有得到有用的信息 3.查看config对象 http://114.67.175.224:10934/?flag{{config}} 信息太乱了,需要找到我们需要的信息 4.SSTI模版注入 http://114.67.175.224:10934/?flag{{ conf…

解决报错 由于目标计算机积极拒绝,无法连接

完整错误&#xff1a; WARNING: Retrying (Retry(total0, connectNone, readNone, redirectNone, statusNone)) after connection broken by ProxyError(Cannot connect to proxy., NewConnectionError(<pip._vendor.urllib3.connection.HTTPConnection object at 0x000002…

MySql并发事务问题

事务 事务概念&#xff1a; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 事务的特性&#xff1a;ACID&#xff1a; 小…