【Vector-Map-路径规划(0)】卷首语

news2025/2/24 23:42:05

因为城市NOA 的开发过程中,十字路口这类场景非常不好处理,个人对路径规划没有什么基础,只知道深度优先,广度优先,A*,Dijkstra等算法,不知道在矢量地图中如何使用?因此花几天时间读几篇论文看看到底在NOA 中的十字路口需要什么样的地图?

什么是矢量地图?

我基于论文《VectorMapNet: End-to-end Vectorized HD Map Learning 》的输出来看,

In VectorMapNet, we represent map elements as a set of polylines that are easily linked to downstream tasks (e.g., motion forecasting), and model these polylines with a set prediction framework. The overview of our idea is presented in the Figure above.

论文中说,在矢量地图中,我们表征地图元素作为一系列的几何线,它们是容易去连接下游任务的,例如运动预测,编码这些几何线与一系列的预测任务。

These map elements include but are not limited to road boundaries, lane dividers, and pedestrian crossings, which are critical for autonomous driving.

输出包括道路边沿,车道线和人行横道。

在这里插入图片描述

看图片右边的情况,经过Polyline Generator 后,输出Polyline。这是由关键点+类别组成的。这就和车道线的关键点检测方法有点类似了。

在这里插入图片描述

在这里插入图片描述
图片中 最右边的是VectorMapNet 输出的矢量地图。我们看中间的HDMapNet,这个的表达形式有点不同。
HAMapNet 论文中是这样说的

The overview of HDMapNet. Four modules parameterize HDMapNet: a perspective view image encoder, a neural view transformer in image branch, a pillar-based point cloud encoder, and a map element decoder. The output of the map decoder has 3 branches: semantic segmentation, instance detection and direction classification, which are processed into vectorized HD map.

输出的是三个分支:语义分割,实例检测和方向分类。然后被后处理变成矢量地图。HAMapNet 是对每个分割后的像素的实例和方向进行了分类。然后再通过后处理成矢量地图。

对于“vector map 路径规划”的问题

如果提问的是代码开发问题,我们可以提供一个基于常见库(如OpenCV或类似的地图处理库)的路径规划解决方案和实例代码。

路径规划的解决方案

1、数据准备:首先,你需要一份vector map数据,通常这种数据是地理信息系统(GIS)数据的一种形式。这些数据可以包含道路网络、地形信息等。

2、路径规划算法:选择合适的路径规划算法,如Dijkstra算法、A*算法等。这些算法可以从起点到终点计算出最优路径。

3、地图处理:使用计算机视觉或GIS相关库处理vector map数据,提取道路网络等信息。

4、实现路径规划:在处理过的地图数据上应用路径规划算法,得到路径。

实例代码

import cv2  # 用于图像处理,可替换为专门的地图处理库
import graph_search  # 假设的图形搜索库,用于路径规划算法
 
# 加载vector map数据,转换为可用于计算的格式
vector_map_data = load_vector_map()  # 假设的函数,实际中需要读取和处理数据
 
# 提取道路网络等信息
roads = extract_roads_from_vector_map(vector_map_data)
 
# 构建图模型,节点为路网交叉点,边为路段
graph = build_graph_from_roads(roads)
 
# 定义起点和终点
start_point = ...  # 用户输入或其它方式获取
end_point = ...  # 同上
 
# 使用图形搜索库找到路径
path = graph_search.find_path(graph, start_point, end_point)
 
# 输出或使用路径
print(path)  # 或根据需要进一步处理和使用路径信息

这段代码是一个非常简化的示例。整体上感觉,需要一份可靠的矢量地图就可以实现规划了。

文章目录

  • 什么是矢量地图?
  • 对于“vector map 路径规划”的问题
    • 路径规划的解决方案
  • 全局的规划目录
  • 局部的规划目录
  • Open Planner 工程目录
  • fast_planner工程目录
  • lane_planner(使用vector_map)实战目录
  • 车道选择流程目录

全局的规划目录

(A1)【全局路径规划】基于定位的全局航线的录制方法
(A2)【全局路径规划】曲线拟合的方法–Dubins曲线与Reeds-Shepp曲线
(A3)【全局路径规划】图搜索的路径探索方法–DFS\BFS\DFS-ID、贪心算法、Dijkstra和A*、JPS、.hybird A*、
(A4)【全局路径规划】基于采样的方法–RRT类算法、PRM算法、Lattice planner等
(A5)【全局路径规划】基于地图的方法–vector_map、Voronoi_map
(A6)【全局路径规划】智能算法的方法–蚁群算法、动态规划DP等
(A7)【全局路径规划】覆盖式路径规划

局部的规划目录

(B1)【路径插值与抽稀篇】路径插值与抽稀方向–线性/双线性插值、步距抽稀、等长抽稀、垂直限制抽稀、道格拉斯-普克(Douglas-Peuker)DPR抽稀、去除共线点抽稀等

(B2)【路径平滑篇】路径平滑滤波与拟合–算术方法、优化理论方法、滤波器方法、曲线拟合方法(三五次样条曲线、贝塞尔曲线、B样条曲线)、基于地图方法等

(B4.1)【轨迹优化篇】基于曲线实现速度规划、基于逻辑实现速度规划
(B4.2)【轨迹优化篇】线性加权轨迹代价损失评分,轨迹多选一方法–DWA_planner、Open_Planner、lexicographic_planner
(B4.3)【轨迹优化篇】基于控制的方法实现轨迹避障
(B4.4)【轨迹优化篇】基于优化理论,梯度下降迭代优化使得轨迹形变方法–Teb_planner、MinimumSnap轨迹生成与优化、无人机的硬软约束后端轨迹优化
(B4.5)【轨迹优化篇】基于地图的方法–VFH、VFH+、VFH*算法
(B4.6)【轨迹优化篇】基于Frenet车道线坐标系,采用DP、QP速度解耦进行局部规划–EM_planner

Open Planner 工程目录

(C1)论文解读《Open Source Integrated Planner for Autonomous Navigation in Highly Dynamic Environments》
(C2)工程解读

fast_planner工程目录

(D1)前端kinodynamic A* 动力学路径搜索
(D2)后端轨迹优化。BSPline 曲线拟合+非线性优化
(D3)碰撞检测
(D4)控制指令

lane_planner(使用vector_map)实战目录

(E1)apollo的OpenDRIVE格式
(E2)Autoware使用的lanelet2格式
(E3)Autoware的lane_planner(使用vector_map)

车道选择流程目录

(F1) 调研

  • 接受多条路径
  • 计算所有路径的当前位置的最近傍点
  • 最近傍点的车道和现在行驶的路线设定
  • 检测当前路径的左右路径
  • 将当前路径最近傍点的车道变更标志作为该路径的车道变更标志保持
  • 寻找最近邻右转或左转的标志点,生成艾尔米内插的路线,将该点和预定变更车道的车道的目标点定义为车道变更用的路径
  • 不变更车道时,将当前路径、最近傍点、车道变更标志分别publish
  • 更改车道时,分别对车道变更用的路径、与之相对的最近傍点、车道变更标志进行publish

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】控制台进度条

在Python开发中,有时需要向用户展示一个任务的进度,以提供更好的交互体验。下面我将展示如何使用Python来创建一个简单的控制台进度条。 效果: 代码: import time import sys def print_progress_bar(completed, total, length…

如何使用Jellyfin+cpolar低成本部署私人影音平台并实现无公网IP远程访问

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…

Redis从入门到精通(十二)Redis实战(九)GEO查询附近商户、BitMap用户签到和统计、HLL的UV统计

↑↑↑请在文章开头处下载测试项目源代码↑↑↑ 文章目录 前言4.10 附近商户4.10.1 GEO介绍4.10.2 附近商户需求分析4.10.3 实现新增商户功能4.10.4 实现查询附近商户功能 4.11 用户签到4.11.1 用户签到需求分析4.11.2 BitMap介绍4.11.3 实现用户签到4.11.4 实现用户签到统计4.…

Vuforia AR篇(二)— 扫描指定图片播放视频

目录 一、 使用Vuforia SDK创建Vuforia账号下载Vuforia SDK包导入SDK到unity中 二、使用Vuforia扫描指定图片播放视频创建ARCamera创建 License创建ImageTarget生成识别数据库播放视频 三、 效果 一、 使用Vuforia SDK 创建Vuforia账号 Vuforia官网 登录官网创建一个账号&am…

【fiddler】弱网测试

目录 一、测试目的 二、步骤 2.1打开弱网模式 ​ 2.2设置网络参数 (1)打开Rules→Customize Rules; (2)找到下面框出的代码,在这里设置弱网参数值; (3)设置完成后&a…

【每日刷题】Day10

【每日刷题】Day10 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍅 目录 1. 环形链表的约瑟夫问题_牛客题霸_牛客网 (nowcoder.com) 2. 21. 合并两个有序链表 - 力扣(LeetCode) 3. 152…

【MATLAB源码-第9期】基于matlab的DQPSK的误码率BER和误符号率SER仿真。

1、算法描述 DQPSK信号的解调与2DPSK信号的解调类似,也有两种方法,分别是极性比较法和相位比较法 极性比较法。其原理方框图如下图所示。由于DQPSK信号可以看做是两路2DPSK信号的合成,解 调时也可以分别按两路2DPSK信号解调,因此…

Docker部署SpringBoo+Vue前后端分离项目

文章目录 1. 安装Docker1. 1 卸载旧版Docker1.2 配置yum仓库1.3 安装Docker1.4 添加自启动配置1.5 配置阿里云镜像加速1.6 测试 2. 安装Nginx2.1 拉取镜像2.2 安装Nginx2.3 测试 3. 安装MySQL3.1 拉取镜像3.2 安装MySQL3.3 连接MySQL 4. 部署SpringBoot项目4.1 Maven打包4.2 编…

java数组.day16(冒泡排序,稀疏数组)

冒泡排序 冒泡排序无疑是最为出名的排序算法之一,总共有八大排序! 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知。 我们看到嵌套循环,应该立马就可以得出这个算法的时…

VBA信息获取与处理第四节:获取唯一非重复随机值的返回数组

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

001-NodeJs全局对象

概念 node是一个运行js的平台,在node中,用global对象取代了Window这个对象。 node中的repl环境可以执行js,通过命令node进入到repl环境。repl环境类似于Chrome的开发人员工具。 全局对象global 可以参考一下它的文档global全局对象 node版本介绍&am…

C++ stl容器vector的底层模拟实现

目录 前言: 1.成员变量,容量与大小 2.构造函数 无参构造: 带参的使用值进行构造: 使用迭代器区间进行构造: 3.交换 4.拷贝构造 5.赋值重载 6.迭代器 7.扩容 reserve: resize: 8.…

深入OceanBase内部机制:系统架构与组件精讲

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 目录 1️⃣OceanBase 整体架构1.1 分区1.2 分片1.3 日志流1.4 对等节点1.5 多租户 2️⃣OceanBase 架构与组件详解2.1 存储层2.2 …

公司电脑如何对文件进行加密?

在现代企业中,文件加密是确保敏感数据安全的关键。使用华企盾DSC数据安全防泄密系统,公司电脑可以轻松地对文件进行加密,以防止未授权的访问和数据泄露。以下是对文件进行加密的步骤和方法: 智能半透明加密:这种模式允…

【java数据结构-二叉树(上)】

java数据结构-二叉树(上) 二叉树的概念二叉树的节点介绍 二叉树构造如何使用兄弟表示法构造二叉树两种特别的二叉树二叉树的基本性质: 二叉树的存储二叉树的遍历:前序遍历:中序遍历:后序遍历:层…

pygame发射子弹后绘制射线

import pygame import sys import mathpygame.init()screen pygame.display.set_mode((800, 600)) pygame.display.set_caption("Rotate and Shoot Bullets")# 定义子弹类 class Bullet:def __init__(self, x, y, angle):self.x xself.y yself.angle angleself.s…

python中的异常

1、NoSuchElementException 找不到元素 2、ElementNotInteractableException 元素无法交互 可能原因1:元素定位到以后,无法点击---元素未渲染完 解決:使用expected_conditions模块下的element_to_be_clickable来判断元素是否可被点击&#…

【MATLAB源码-第8期】基于matlab的DPSK的误码率仿真,差分编码使用汉明码(hanming)。

1、算法描述 差分相移键控常称为二相相对调相,记作2DPSK。它不是利用载波相位的绝对数值传送数字信息,而是用前后码元的相对载波相位值传送数字信息。所谓相对载波相位是指本码元初相与前一码元初相之差。差分相移键控信号的波形如概述图所示。 假设相对…

JavaEE 初阶篇-深入了解定时器、工厂模式和比较器

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 定时器概述 2.0 实现定时器 2.1 实现定时器 - 定义 MyTask 任务类 2.2 实现定时器 - MyTimer 定时器类存放任务的方法 2.3 实现定时器 - MyTimer 定时器类读取任务…

群晖虚拟机搭建Synology Drive并实现Obsidian笔记异地多端同步

文章目录 一、简介软件特色演示: 二、使用免费群晖虚拟机搭建群晖Synology Drive服务,实现局域网同步1 安装并设置Synology Drive套件2 局域网内同步文件测试 三、内网穿透群晖Synology Drive,实现异地多端同步Windows 安装 Cpolar步骤&#…