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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django之五种中间件定义类型—process_request、process_view、process_response.......

目录 1. 前言 2. 基础中间件 3. 如何自定义中间件 4. 五种自定义中间件类型 4.1 process_request 4.2 process_view 4.3 process_response 4.4 process_exception 4.5 process_template_response 5. 最后 1. 前言 哈喽,大家好,我是小K,今天咋们…

数据可视化-地图可视化-Python

师从黑马程序员 基础地图使用 基础地图演示 视觉映射器 具体颜色对应的代码可以在http://www.ab173.com/中查询RGB颜色查询对照表 from pyecharts.charts import Map from pyecharts.options import VisualMapOpts#准备地图对象 mapMap() #准备数据 data[("北京",…

Flutter开发进阶之错误信息

Flutter开发进阶之错误信息 在Flutter开发中错误信息通常是由Exception和Error表示,Error表示严重且不可恢复的错误,一般会导致程序直接终止,而Exception可以被显式抛出,一般为代码逻辑错误,根据Flutter的解释说Excep…

Golang开发2D小游戏全套教程(已完结)

Golang开发2D小游戏全套教程(已完结) 本套教程将基于ebiten库开发一套2D小游戏。 全套代码:https://github.com/ziyifast/ziyifast-code_instruction/tree/main/game_demo ebiten官网地址:https://github.com/hajimehoshi/ebiten …

单调栈(LeetCode-下一个更大元素)

每日一题 今天刷到了一道用到单调栈来解决的题目,想到自己没有总结过单调栈的知识点,因此想总结一下。 介绍 什么是单调栈? 单调栈的定义其实很简单,所谓单调栈就是指一个单调递增或是单调递减的栈。 那单调栈有什么用呢&#x…

在单交换机局域网中,不同网段的主机通信探秘

在理解局域网中不同网段主机之间的通信之前,我们首先要明白网络的基本组成和工作原理。局域网(LAN)是一个封闭的网络环境,通常由交换机(Switch)作为核心设备连接网络中的各个主机。当我们谈论不同网段的主机…

基于Socket简单的TCP网络程序

⭐小白苦学IT的博客主页 ⭐初学者必看:Linux操作系统入门 ⭐代码仓库:Linux代码仓库 ❤关注我一起讨论和学习Linux系统 TCP单例模式的多线程版本的英汉互译服务器 我们先来认识一下与udp服务器实现的不同的接口: TCP服务器端 socket()&…

阿里云8核32G云服务器租用优惠价格表,包括腾讯云和京东云

8核32G云服务器租用优惠价格表,云服务器吧yunfuwuqiba.com整理阿里云8核32G服务器、腾讯云8核32G和京东云8C32G云主机配置报价,腾讯云和京东云是轻量应用服务器,阿里云是云服务器ECS: 阿里云8核32G服务器 阿里云8核32G服务器价格…

通用爬虫的概念简述

一、🌈什么是通用爬虫 通用爬虫(General Purpose Web Crawler或Scalable Web Crawler)是一种网络爬虫,其设计目标是对整个互联网或尽可能广泛的网络空间进行数据抓取。通用爬虫主要用于搜索引擎构建其庞大的网页索引数据库&#…

《债务与国家的崛起》西方民主制度的金融起源 - 三余书屋 3ysw.net

债务与国家的崛起:西方民主制度的金融起源 你好,今天我们来聊聊由英国知名经济与金融历史学家詹姆斯麦克唐纳所著的《债务与国家的崛起》这本书。19世纪世界历史上发生了一次巨变,即“大分流”。当时西方通过工业革命实现了科技和经济的飞速…

【开源语音项目OpenVoice](一)——实操演示

目录 一、前菜 1、Python选择 2、pip源切换 3、ffmpeg配置问题 4、VSCode添加Jupyter扩展 二、配置虚拟环境 1、下载源码 方法一 直接下载源码压缩包 方法二 使用git 1)git加入鼠标右键 2)git clone源码 2、VSCode出场 1)创建pyth…

Bayes-RF,基于贝叶斯Bayes优化算法优化随机森林RF分类预测(二分类及多分类皆可)-附代码

Bayesian Optimization(贝叶斯优化)是一种用于超参数调优的技术,对于类似随机森林(Random Forest,简称RF)的机器学习算法非常重要。随机森林是一种集成学习方法,它在训练过程中构建多个决策树&a…