当前位置: 首页 > news >正文

自动驾驶代客泊车AVP巡航规划详细设计

目 录

巡航规划详细设计... 1

修改记录... 2

目 录... 3

1 背景... 5

2 系统环境... 6

2.1 巡航规划与其它模块联系... 6

2.2 巡航规划接口说明... 6

3 规划模块设计... 9

3.1 巡航规划架构图... 9

3.2 预处理... 10

3.3 Planner. 10

3.3.1 Geometry planner. 10

3.3.1.1 环境信息更新... 10

3.3.1.2 路径规划... 14

3.3.1.3 速度规划... 20

3.3.2 其他规划器... 23

3.4 后处理... 23

4 要点及风险评估... 23

5 设计评审意见... 24

6 参考资料... 24

  1. 背景

       随着产品的升级迭代,对算法的泛化能力和指标都提出了新的需求。一方面后续需要低成本迁移不同停车场,可能面临更多的人流车流、更多的场景(如双车道、不同弯道、道路情况、不同车库层数等),因此对当前模块的工程通用性和算法的泛化能力都有更高的需求;另一方面,基于降成本以及后续性能及产品效果提升的需求,对当前算法的资源占用、效果指标等也也会有更的要求。

       当前算法模块主要有以下问题。首先是算法架构的可扩展性存在较大的局限。当前算法主要基于matlab/simulink平台开发,没有通用的工程框架,添加新算法或者更新算法非常困难,而且适配其他模块及工具繁琐且工作量巨大、无法做深层次性能优化。其次是当前框架未能较好利用现有开源生态及借鉴别人的工作。Matlab是商业软件,其生态尤其自动驾驶方面的生态较apollo等开源生态有明显的差距,而且部分重要的组件(如图形计算等)无法进行代码生成,导致当前开发经常需要重复造轮子,工作处于一种闭门造车的状态,效率低下。最后是当前算法通用性不够强。当前算法对场景和逻辑等抽象不够,很多场景基于经验公式开发,对于特定的场景使用特定的策略,后续泛化困难。

       当前设计的主要目标是借鉴apollo开源框架进行重构。一方面变更开发语言,使模块能够进行性能的深度调优,并有效地借鉴开源的成果提高效率;另一方面构建统一的工程框架,提升模块的工程通用性,以支撑后续的开发和算法升级;最后,通过将接口与算法与主流平台对齐,后续算法可以逐步更换以提高泛化能力和效果指标。

  1. 系统环境
    1. 巡航规划与其它模块联系

巡航规划主要根据决策状态机、处理过的引导线、边界信息等及底盘的反馈信号,综合对不同场景(如直行、转弯、道闸口等)的处理、对直行及绕障等模式的处理、对路径和速度的生成和优化,最终输出一条轨迹参考线发给控制,进而决定整车运动路径及速度。

    1. 巡航规划接口说明

根据规划的功能,其主要的输入信息应包含如下:

    • 地图及定位信息(目前版本算法主要放在边界信息接口内)
    • 感知障碍物信息(目前版本算法主要放在边界信息接口内)
    • 全局导航信息(目前版本算法主要放到引导线信息接口内)
    • 车身反馈信息(包含速度、加速度、档位等)
    • 预测信息(后续能力提升及泛化需要)
    • 交通规则信息(后续场景升级可能需要)

同时,规划的输出信息主要如下:

    • 规划轨迹(包含路径、速度两大类及衍生信息如曲率、加速度等信息)
    • 本模块的状态信息(主要是异常信息等,后续做产品化安全需要)

下面针对当前算法的接口进行具体说明:

       A)输入接口

            1、DEC  //决策信息(包含状态机、引导线、边界信息)

2、SMC   //车身反馈信息

2、PTP_trajectory_detail //规划的反馈信息(实际未使用)

3、PTP_out    //旧的规划输出接口(实际未使用)

4、PTP_trajectory_head   //规划的车头轨迹(实际未使用)

5、PTP_Inner_Monitor_out        //规划内部信息监控(实际未使用)

  1. 规划模块设计
    1. 巡航规划架构图

巡航规划模块架构图

如图所示,巡航规划模块的整体架构包含三个部分,预处理、规划器(planner)、后处理,其中规划器为主体模块。规划器为各种具体的规划算法的总称。当前的算法主要基于曲率几何推导,因此把其命名为geometry planner。其余为业内主流的一些规划算法,包括lattice、EM、openspace、RRT、reinforce等。下面针对每个模块做概要说明:

预处理:对planner所需的数据进行处理,主要对输入的数据降噪、去毛刺、转换为模块所需要的数据格式及单位转换等。

       Planner:根据地图定位信息、障碍物信息、决策状态机、车身反馈、导航信息等,进行综合考虑,同时结合如平稳、高效、资源占用少等指标,计算出一条优化的轨迹。考虑到模块的拓展性,会在当前算法的基础上根据场景的需求不断增加新算法,比如lattice、EM、openspace、RRT等,补充其能力。目前主要的算法为Geometry planner,主要原理如下:1、通过以当前位置,根据引导线跟随、绕行各障碍物的曲率结合人工驾驶经验,算出下一时刻的行驶曲率和速度。2、再根据下一时刻的曲率、速度等推导下一时刻的位置,并在此基础上重复计算驾驶行为。3、通过上述两个步骤的反复迭代,最终生成一条包含40个点的整体轨迹,并输出给下游。

       后处理:对当前模块的状态进行监控、对算法生成的轨迹等进行评价,同时支持手动调式模式,可以手动生成指定的轨迹输出给下游进行调试。

    1. 预处理(由框架处理)

滤波:针对底盘反馈的速度信号进行2阶滤波及限幅处理,使其降频到3hz左右(经验值),幅度限制在正负70以内,以免出现异常值。

信号转换:将方向盘转角转换为弧度表示,同时通过车速和方向盘转速双重验证,检测输入的方向盘信号是否有效。

    1. Planner
      1. Geometry planner
        1. 环境信息更新

主要包含如下功能:

1、根据之前计算出来的控制量,更新下一时刻的车辆位置信息,供计算后续控制量使用。

2、计算目标线与主车的相对位置,相对角度,供后续计算引导线跟随使用。

3、根据算法估计的状态,更新每一个轨迹点上边界线,障碍物边界等与车的相对位置,供后续计算避障使用。

          1. 车辆位置推算

(xt,yt)

(xt+1,yt+1)

x

y

计算在每个循环推算的时刻,车身的坐标及yaw角。是一种基于运动学的理想位姿迭代。计算关系如下式:

                         xt+1=xt+vx*dt*cosyawrate*dt

                         θt+1=θt+yawrate*dt

其中:vx

为车辆x方向速度,vy

为车辆y方向速度,dt为时间间隔,yawrate为角速度。

        在实际计算过程中,考虑了感知的延时和系统的延时对车辆姿态的影响,因此分别对两种延时进行估计,根据估计参数进行系统姿态延时估算,并将其作为当前初始值。

        另外,在车道线跟随的时候,有的时候可能并不需要车后轴中心在中心线上,尤其是转弯的时候,因此添加对原点位置的平移,使其更符合人的驾驶习惯。

        通过每个时刻计算得到的纵向速度、横向速度、角速度,由上式计算下一个时刻的位置。通过反复计算40次,得到40个时刻的车辆位置,输出到下游。

相关文章:

自动驾驶代客泊车AVP巡航规划详细设计

目 录 巡航规划详细设计... 1 修改记录... 2 目 录... 3 1 背景... 5 2 系统环境... 6 2.1 巡航规划与其它模块联系... 6 2.2 巡航规划接口说明... 6 3 规划模块设计... 9 3.1 巡航规划架构图... 9 3.2 预处理... 10 3.3 Planner. 10 3.3.1 Geometry planner. 10 …...

亚马逊云科技 re:Invent 2023 产品体验:亚马逊云科技产品应用实践 国赛选手带你看 Elasticache Serverless

抛砖引玉 讲一下作者背景,曾经参加过国内世界技能大赛云计算的选拔,那么在竞赛中包含两类,一类是架构类竞赛,另一类就是 TroubleShooting 竞赛,对应的分别为亚马逊云科技 GameDay 和亚马逊云科技 Jam,想必…...

Flink on K8S集群搭建及StreamPark平台安装

1.环境准备 1.1 介绍 在使用 Flink&Spark 时发现从编程模型, 启动配置到运维管理都有很多可以抽象共用的地方, 目前streampark提供了一个flink一站式的流处理作业开发管理平台, 从流处理作业开发到上线全生命周期都做了支持, 是一个一站式的流出来计算平台。 未来spark开…...

SpringBoot如何优雅的处理免登录接口

在项目开发过程中,会有很多API接口不需要登录就能直接访问,比如公开数据查询之类的 ~ 常规处理方法基本是 使用拦截器或过滤器,拦截需要认证的请求路径。在拦截器中判断session或token信息,如果存在则放行,否则跳转到…...

元旦档首日票房超4.69亿,“下雪场尴尬”上热搜!

哇塞,元旦假期终于来啦!🎉在这个喜庆的时刻,电影院也热闹非凡,据猫眼专业版数据显示,截至12月30日,2023年元旦档首日票房竟然超过了4.69亿!这简直是个天文数字啊!&#x…...

CentOS系统中设置IP地址的方式和存在的问题

在CentOS系统中设置IP地址通常涉及以下步骤: 打开网络接口配置文件: 使用文本编辑器(如vi、nano或emacs)打开 /etc/sysconfig/network-scripts/ifcfg-eth0 文件。这里的"eth0"是网卡的名称,如果你的系统中有…...

使用vmware,在ubuntu18.04中使用笔记本的摄像头

步骤1:在windows中检查相机状态 win10系统中,在左下的搜索栏,搜索“相机”,点击进入即可打开相机,并正常显示图像。 注意:如果相机连接到了虚拟机,则不能显示正常。 步骤2:在ubuntu…...

中间件系列 - Redis入门到实战(高级篇-分布式缓存)

前言 学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记,如有侵扰,联系删除 学习目标 Redis持久化Redis主从…...

使用Visual Studio调试VisionPro脚本

使用Visual Studio调试VisionPro脚本 方法一 : 修改项目文件 csproj步骤: 方法二 : Visual Studio附加功能步骤: 方法一 : 修改项目文件 csproj 步骤: 开启VisionPro脚本调试功能 创建一个VisionPro程序…...

Ubuntu安装K8S的dashboard(管理页面)

原文网址:Ubuntu安装k8s的dashboard(管理页面)-CSDN博客 简介 本文介绍Ubuntu安装k8s的dashboard(管理页面)的方法。 Dashboard的作用有:便捷操作、监控、分析、概览。 相关网址 官网地址:…...

zookeeper之集群搭建

1. 集群角色 zookeeper集群下,有3种角色,分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader): 事务请求(写操作)的唯一调度者和处理者,保…...

从0开始界面设计师 Qt Designer

QT程序界面的 一个个窗口、控件,就是像上面那样用相应的代码创建出来的。 但是,把你的脑海里的界面,用代码直接写出来,是有些困难的。 很多时候,运行时呈现的样子,不是我们要的。我们经常还要修改代码调整界…...

Html / CSS刷题笔记

WebKit是一个开源的浏览器引擎,它最初是由苹果公司开发的,并且被广泛用于Safari浏览器和其他基于WebKit的浏览器,比如Google Chrome的早期版本。它也是构建许多移动设备浏览器的基础。WebKit的主要功能是解析HTML和CSS,并将其渲染…...

关于“Python”的核心知识点整理大全51

目录 17.2.2 添加自定义工具提示 bar_descriptions.py 17.2.3 根据数据绘图 python_repos.py 17.2.4 在图表中添加可单击的链接 python_repos.py 17.3 Hacker News API hn_submissions.py 17.4 小结 往期快速传送门👆(在文章最后)&a…...

Termius for Mac/Win:一站式终端模拟器、SSH 和 SFTP 客户端软件的卓越选择

随着远程工作和云技术的普及,对于高效安全的远程访问和管理服务器变得至关重要。Termius,一款强大且易用的终端模拟器、SSH 和 SFTP 客户端软件,正是满足这一需求的理想选择。 Termius 提供了一站式的解决方案,允许用户通过单一平…...

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间 一、软件程序问答 如下图,软件以 佳易王vr体验馆计时计费软件V17.9为例说明 1、软件如何计时间? 点击相应编号的开始计时按钮即可 2、遇到停电再打开软件时间可以恢复吗&…...

HTML---JavaScript基础

文章目录 目录 文章目录 本章目标 一.JavaScript基础 概述 特点 JavaScript 基本机构 语法 网页中引用JavaScript的方式 二. JavaScript核心语法 变量 ​编辑 数据类型 数组 练习 本章目标 掌握JavaScript的组成掌握JavaScript的基本语法会定义和使用函数会使用工具进行…...

2023年03月17日_微软和谷歌办公AI的感慨

2023年3月17日 最近这个科技圈的消息 有点爆炸的让人应接不暇了 各种大公司简直就是神仙打架 你从来没有见过这么密集的 这么高频的产品发布 昨天微软是发布了Office 365 Copilot 在里边提供了大量的AI的功能 然后谷歌呢也发布了这个Google Workspace AI 也是跟365 Cop…...

2023年新一代开发者工具 Vue ,正式开源!

以下文章来源于前端充电宝 ,作者CUGGZ 近日,Vue 新一代开发者工具(DevTools)正式开源!Vue DevTools 是一个旨在增强 Vue 开发人员体验的工具,它提供了一些功能来帮助开发者更好地了解 Vue 应用。下面就来看…...

springboot(ssm校园组团平台 高校组团系统 Java系统

springboot(ssm校园组团平台 高校组团系统 Java系统 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0) 数据库…...

QT 利用开源7z 实现解压各种压缩包,包括进度条和文件名的显示(zip,7z,rar,iso等50多种格式)

想做一个winRAR一样的解压软件吗?很简单,利用开源的7z库就能实现。我看网上其他人说的方法不敢苟同,误人子弟。以前自己在项目中使用过7z,这次又有需要,就想记录下来。如果你研究过如何用7z的话,一定知道7z的每一个GUID都代表了一种格式,50多种GUID也就有50多个格式,最…...

androidStudio 没有新建flutter工程的入口?

装了flutter dart 插件 执行了 flutter doctor 也执行了 flutter doctor --android-license 最后重启了 androidStudio 还是没发现在哪新建flutter项目工程 原来 plugins 下的 Android APK Support没有勾选...

微信小程序开发系列-03全局配置中的“window”和“tabBar”

微信小程序开发系列目录 《微信小程序开发系列-01创建一个最小的小程序项目》《微信小程序开发系列-02注册小程序》《微信小程序开发系列-03全局配置中的“window”和“tabBar”》《微信小程序开发系列-04获取用户图像和昵称》《微信小程序开发系列-05登录小程序》《微信小程序…...

基于CNN神经网络的手写字符识别实验报告

作业要求 具体实验内容根据实际情况自拟,可以是传统的BP神经网络,Hopfield神经网络,也可以是深度学习相关内容。 数据集自选,可以是自建数据集,或MNIST,CIFAR10等公开数据集。 实验报告内容包括但不限于&am…...

Ubuntu 系统中安装和配置 clash

本博客参考 ubuntu下怎么安装clash-ghc? 和 对 clash 进行下载和配置,如有需要可自行点击链接查看原文。 下载 clash 打开终端(进入到 主目录/用户目录 ),通过命令下载 clash 文件并将其中命名为 clash: # 下载 cl…...

DragonEnglish:COCA20000+单词+释义

去年的时候接触到了 COCA20000 单词,对这种给单词特定顺序的方式蛮感兴趣的。因为我当时接触的版本只有单词或者单词释义的版本,所以我直接通过各种方式给它搭配了音标例句发音,然后每100个切割成1份,分成了 202 个文件来学习&…...

『亚马逊云科技产品测评』活动征文|云服务器如何快速搭建个人博客(图文详解)

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 文章目录 引言一、前期准备步骤1.1 准备一个亚马逊 EC2 服务器1.2 进入控…...

QT上位机开发(乘法计算小软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面一篇文章,我们学习了怎么创建qt的第一个工程,怎么用designer给qt修改界面。虽然我们到目前为止,还没有编写…...

【Matlab】BP 神经网络时序预测算法

资源下载: https://download.csdn.net/download/vvoennvv/88681507 一,概述 BP 神经网络是一种常见的人工神经网络,也是一种有监督学习的神经网络。其全称为“Back Propagation”,即反向传播算法。BP 神经网络主要由输入层、隐藏层…...

GPT在企业自动化方面的应用

GPT和类似的自然语言处理技术在企业自动化方面有许多应用。以下是一些主要的应用领域: 自动化客户支持: 使用GPT可以构建自动化的客户支持系统,能够理解和生成自然语言文本,回答常见问题,解决用户的疑问和问题。 自动…...

STM32——通用计时器

通用计时器框图 1.时钟源 1)内部时钟(CK_INT) 2)外部时钟模式 1:外部输入引脚(TIx),x1,2(即只能来自于通道 1 或者通道 2) 3)外部时钟模式 2:外部触发输入(ETR) 4&#…...

【HarmonyOS】鸿蒙开发简介与项目基础配置演示

从今天开始,博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”,对于刚接触这项技术的小伙伴在学习鸿蒙开发之前,有必要先了解一下鸿蒙,从你的角度来讲,你认为什么是鸿蒙呢?它出现的意义又是…...

[MySQL] MySQL数据库创建存储过程

一、mysql存储过程的相关知识 1.1 存储过程的概念 存储过程是一组为了完成特定功能的SQL语句集合。类似于于其他编程语言中的函数,定义一个函数方法,可以随时起到传参调用的功能。 存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用…...

mysql哪些情况下不走索引?

mysql哪些情况下不走索引? MySQL是一种常用的关系型数据库,它使用索引来提高查询性能。然而,并非所有的SQL语句都能充分利用索引。在本文中,我们将介绍几个无法使用到索引的MySQL SQL语句。 1. 使用函数:当SQL语句中…...

蓝桥杯python比赛历届真题99道经典练习题 (13-20)

【程序13】 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 2.程序…...

初识javaWeb

一、JavaWeb是什么? 1、概念 javaWeb指的是使用java语言进行互联网领域项目开发的技术栈——进行web项目开发所需的技术的集合。 -Web前端——在浏览器中用户可以看到的网页 -Web后端——为前端提供数据的程序 2、Web项目 java语言是可以进行多种类型的项目开发&a…...

day5--java基础编程:异常,内部类

6 异常 6.1 异常概述 出现背景: 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式&#xff0c…...

2023.12.28 关于 Redis 数据类型 List 内部编码、应用场景

目录 List 编码方式 早期版本 现今版本 List 实际应用 多表之间的关联关系 消息队列 频道(多列表)消息队列 微博 Timeline 栈 & 队列 List 编码方式 早期版本 早期版本 List 类型的内部编码方式有两种 ziplist(压缩列表&#xf…...

uni-app page新建以及page外观配置

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…...

问题:执行conda init 提示 No action taken,然后无法正确激活环境

执行完下面代码后, conda activate base 报错,提示先执行conda init,于是再执行下面代码 conda init发现还报错提示提示 No action taken。 解决方法: 打开一个新的终端窗口,您应该就可以正常使用conda命令。(把其…...

SpringBoot 增量/瘦身部署jar 包

背景 SpringBoot 项目的部署一般采用全量jar 包方式部署相关项目,如果我们对相关的Contrller\Service\Dao\Mapper 层进行相关业务调整就需要重新编译全量jar 包(包大小约为200M左右)实在太麻烦了。 本文:重点讲解使用SpringBoot 的增量/瘦身…...

AI客服的评分机制及自动化测试

智能客服的评分机制及自动化测试 使用pytest来编写智能客服的测试框架: 准备一个CSV文件来存储测试用例和预期结果。编写测试脚本,其中包含测试用例的读取、发送请求、评分逻辑和结果验证。使用pytest断言来验证测试结果。 首先安装pytest和requests库…...

【Matlab】ELM极限学习机时序预测算法

资源下载: https://download.csdn.net/download/vvoennvv/88681649 一,概述 ELM(Extreme Learning Machine)是一种单层前馈神经网络结构,与传统神经网络不同的是,ELM的隐层神经元权重以及偏置都是随机产生的…...

m3u8网络视频文件下载方法

在windows下,使用命令行cmd的命令下载m3u8视频文件并保存为mp4文件。 1.下载ffmpeg,访问FFmpeg官方网站:https://www.ffmpeg.org/进行下载 ffmpeg下载,安装,操作说明 https://blog.csdn.net/m0_53157282/article/det…...

相机内参标定理论篇------张正友标定法

一、为什么做相机标定? 标定是为了得到相机坐标系下的点和图像像素点的映射关系,为摄影几何、计算机视觉等应用做准备。 二、为什么需要张正友标定法? 张正友标定法使手工标定相机成为可能,使相机标定不再需要精密的设备帮助。…...

鸿蒙 Window 环境的搭建

鸿蒙操作系统是国内自研的新一代的智能终端操作系统,支持多种终端设备部署,能够适配不同类别的硬件资源和功能需求。是一款面向万物互联的全场景分布式操作系统。 下载、安装与配置 DevEco Studio支持Windows系统和macOS系统 Windows系统配置华为官方推…...

新一代大语言模型在Amazon Bedrock引领人工智能潮流

亚马逊Bedrock平台推出全新Amazon Titan大语言模型,为大型数据集预处理提供强大支持。亚马逊云科技开发者大会演讲重点介绍了Amazon Titan在文本大语言模型领域的创新,以及如何通过Bedrock平台实现定制化应用。 亚马逊Bedrock平台的主要产品经理Brent S…...

kafka实现延迟消息

背景 我们知道消息中间件mq是支持延迟消息的发送功能的,但是kafka不支持这种直接的用法,所以我们需要独立实现这个功能,以下是在kafka中实现消息延时投递功能的一种方案 kafka实现延时消息 主要的思路是增加一个检测服务,这个检…...

python+django高校教材共享管理系统PyCharm 项目

本中原工学院教材共享平台采用的数据库是mysql,使用nodejs技术开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。系统所要实现的功能分析,对于现在网络方便的管理&…...

三子棋(c语言)

前言: 三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏规则是双方对战,双方依次在9宫格棋盘上摆放棋子,率先将自己的三个棋子走成一条线就视为胜利。但因棋盘太小,三子棋在很多时候会出现和…...