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

自动驾驶---Motion Planning之多段五次多项式

1 前言

        在之前的博客系列文章中和读者朋友们聊过Apollo的 Motion Planning方案:

        《自动驾驶---Motion Planning之LaneChange》

        《自动驾驶---Motion Planning之Path Boundary》

        《自动驾驶---Motion Planning之Speed Boundary》

        《自动驾驶---Motion Planning之轨迹Path优化》

        《自动驾驶---Motion Planning之轨迹Speed优化》

        也聊过其它Motion Planning的量产方案:

        《自动驾驶---Motion Planning之构建SLT Driving Corridor》

        《自动驾驶---Motion Planning之STSC轨迹优化》

        同时也包括特斯拉的量产方案迭代历程:

        《自动驾驶---Tesla的自动驾驶技术进化史(Perception&Planning)》

        基于传统Planning框架的文章基本告一段落,后面分享的内容主要包括Planning子模块的小任务以及端到端方案。今天,想聊的话题是:多项式曲线。其实在自动驾驶的不少场景下,经常会使用多种曲线(多项式曲线,样条曲线,螺旋曲线,贝塞尔曲线等)来进行轨迹规划或者平滑,主要考虑到以下场景:

  1. 通过动态规划/全局规划的方法得到离散点列,然后采用多项式曲线进行连接。

  2. 轨迹平滑(Smoother)

        本篇博客主要为读者朋友们介绍五次多项式在自动驾驶轨迹规划模块中的应用。

2 五次多项式介绍

        自动驾驶规划中的五次多项式在生成平滑、连续的轨迹中扮演着重要角色,特别是在速度规划和路径规划中。以下是关于自动驾驶规划五次多项式的介绍:

2.1 定义

        五次多项式是一个数学函数,其形式通常为:

eq?s%28t%29%20%3D%20a_0%20+%20a_1t%20+%20a_2t%5E2%20+%20a_3t%5E3%20+%20a_4t%5E4%20+%20a_5t%5E5

       其中,eq?s%28t%29 代表车辆随时间 eq?t 变化的纵向位移或路径,而 eq?%28a_0%2C%20a_1%2C%20a_2%2C%20a_3%2C%20a_4%2C%20a_5%29是待确定的系数。

        上面的形式表示纵向,那么横向同样可以表示为:

eq?l%28t%29%20%3D%20b_0%20+%20b_1t%20+%20b_2t%5E2%20+%20b_3t%5E3%20+%20b_4t%5E4%20+%20b_5t%5E5

        其中,eq?l%28t%29 代表车辆随时间 eq?t 变化的横向位移或路径,而 eq?%28b_0%2C%20b_1%2C%20b_2%2C%20b_3%2C%20b_4%2C%20b_5%29 是待确定的系数。

2.2 特点

  • 平滑性:五次多项式可以确保生成的轨迹在时间和空间上都是连续的,并且其一阶(速度)、二阶(加速度)和三阶导数(加速度的变化率,也称为Jerk)也都是连续的。这种连续性对于自动驾驶车辆来说至关重要,因为它能确保车辆行驶的平稳性和乘客的舒适性。
  • 可调性:通过调整五次多项式的系数,可以根据特定的需求(如起始点、终止点、速度、加速度等)来定制轨迹。

2.3 应用

        在自动驾驶规划中,五次多项式常用于:

  • 速度规划:在给定起始速度、终止速度、起始加速度和终止加速度的条件下,通过五次多项式来规划速度随时间变化的曲线。这样可以确保车辆在整个行驶过程中速度的变化是平滑的。
  • 路径规划:在全局路径规划的基础上,通过五次多项式来生成局部路径的轨迹。这种方法可以在车辆行驶过程中根据实时环境信息(如障碍物位置、道路曲率等)来动态调整轨迹,确保车辆能够安全、平稳地到达目的地。

3 单段五次多项式规划

        自动驾驶规划中的五次多项式是一种强大的工具,它可以根据给定的边界条件生成平滑、连续的轨迹。这种轨迹不仅有利于确保车辆行驶的平稳性和乘客的舒适性,还有助于提高自动驾驶系统的安全性和可靠性。下面分别针对笛卡尔坐标系以及车道坐标系对单段的五次多项式做相应的介绍。

3.1 XY坐标系下的路径规划

         单段是指已知起点和终点,通过起点和终点的约束信息来求解多项式的系数。已知五次多项式的起点和终点信息ÿ

相关文章:

自动驾驶---Motion Planning之多段五次多项式

1 前言 在之前的博客系列文章中和读者朋友们聊过Apollo的 Motion Planning方案: 《自动驾驶---Motion Planning之LaneChange》 《自动驾驶---Motion Planning之Path Boundary》 《自动驾驶---Motion Planning之Speed Boundary》 《自动驾驶---Motion Planning之轨迹Path优化》…...

Linux基础IO操作详解

C文件IO相关接口 fopen函数 pathname: 要打开的文件名字符串mode: 访问文件的模式 模式描述含义“r”读文件不存在失败返回null“r”读写文件不存在打开失败返回null,文件存在则从头开始覆盖现有的数据(不会清空数据)“w”写文件不存在创建…...

轻松掌握:Hubstudio指纹浏览器如何接入IPXProxy代理IP

​代理IP对于保护个人和企业网络安全起到了至关重要的作用,然而在需要多个工作的时候,就需要搭配指纹浏览器来使用。其中Hubstudio指纹浏览器就可以模拟多个浏览器环境,然而有些用户不知道如何将Hubstudio和代理IP一起使用,下面以…...

React小记(五)_Hooks入门到进阶

React 16.8 版本 类组件 和 函数组件 两种组件共存,到目前 React 18 版本,官方已经不在推荐使用类组件,在函数组件中 hooks 是必不可少的,它允许我们函数组件像类组件一样可以使用组件的状态,并模拟组件的生命周期等一…...

使用工业自动化的功能块实现大语言模型应用

大语言模型无所不能? 以chatGPT为代表的大语言模型横空出世,在世界范围内掀起了一场AI革命。给人的感觉似乎大模型语言无所不能。它不仅能够生成文章,图片和视频,能够翻译文章,分析科学和医疗数据,甚至可以…...

PPT文件中,母版视图与修改权限的区别

在PPT(PowerPoint)制作过程中,母版视图和修改权限是两个重要的概念,它们各自在演示文稿的编辑、管理和分发中扮演着不同的角色。本文将从定义、功能、使用场景及区别等方面详细探讨PPT母版视图与修改权限的异同。 PPT母版视图 定…...

php简单的单例模式

本文由 ChatMoney团队出品 单例模式是一种常用的设计模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。在 PHP 中实现单例模式通常有三种形式:饿汉式(Eager)、懒汉式(Lazy&…...

【面试题】IPS(入侵防御系统)和IDS(入侵检测系统)的区别

IPS(入侵防御系统)和IDS(入侵检测系统)在网络安全领域扮演着不同的角色,它们之间的主要区别可以归纳如下: 功能差异: IPS:这是一种主动防护设备,不仅具备检测攻击的能力&…...

宠物博主亲测养宠好物安利,口碑好的狗毛空气净化器推荐

作为一名6年资深铲屎官,一到春季换季就开始各种疯狂打喷嚏、全身过敏红肿,这是因为宠物在换季的时候就疯狂掉毛,家里就想下雪一样,空气中都是宠物浮毛。而宠物毛上附带的细菌会跟随浮毛被人吸入人体,从而产生打喷嚏、过…...

常用工具类

计算当天开始时间和结束时间 DateTime date DateUtil.date(); String startDateStr DateUtil.formatDateTime(DateUtil.beginOfDay(date)); String endDateStr DateUtil.formatDateTime(DateUtil.beginOfDay(DateUtil.offsetDay(date,1))); params.put("startDate&quo…...

【数据库原理】总结(期末版)

题型关系范式题[数据库原理]关系范式总结(自用)-CSDN博客事务分析题[数据库原理]事务-CSDN博客Sql题 MySQL:MySQL基本语法 Oracle:Oracle基本语法 ​​​​​​ 关系代数[数据库原理]关系代数-CSDN博客 sql里面主要是考增删改查授权撤销权限等内容&#…...

【算能全国产AI盒子】基于BM1688CV186AH+FPGA智能物联工作站,支持差异化泛AI视觉产品定制

在数据呈现指数级增长的今天,越来越多的领域和细分场景对实时、高效的数据处理和分析的需求日益增长,对智能算力的需求也不断增强。为应对新的市场趋势,凭借自身的硬件研发优势,携手算能相继推出了基于BM1684的边缘计算盒子&#…...

材质相关内容整理 -ThreeJs

在Three.js中,材质是用来定义3D对象外观的关键部分。Three.js支持多种材质文件和类型,每种材质都有其特定的用途和优势。下面简单整理了一下目前Three.js支持的材质文件和类型。 一、Three.js支持的材质文件类型 JPEG (.jpg) 和 PNG (.png) 用途&#x…...

ES 嵌套查询

背景 一个配方由多种原材料组成&#xff0c;需求是根据各种原材料的用量搜索出对应的配方 配方实体类 class Formula {private long id;private String name;private List<Material> materials;}class Material {JsonProperty("material_id")private long m…...

《等保测评实战指南:从评估到加固的全程解析》

在当今数字化时代&#xff0c;信息安全已成为企业生存与发展的基石。随着网络攻击手段的不断演变和复杂度的提升&#xff0c;信息系统等级保护&#xff08;简称“等保”&#xff09;作为国家信息安全保障体系的重要组成部分&#xff0c;其重要性日益凸显。《等保测评实战指南&a…...

【24考研·交通】我的考研经历

文章目录 一、考前准备二、政治备考三、英语一备考四、数学一备考五、运筹学备考六、复试/调剂七、结语 距离24考研上考场过去快半年了&#xff0c;距离我拟录取也两个月多了&#xff0c;现在回想起来&#xff0c;最大的感受是&#xff1a;好像做了一场大梦。 其实这篇文章在考…...

ERP系统中有哪些模块?有哪些具体实现方案呢?

对于许多初次接触ERP系统的企业来说&#xff0c;可能会对系统中包含的模块和功能感到困惑。本文将详细介绍ERP系统中的主要模块&#xff0c;需要明确的是&#xff0c;ERP系统是一个庞大的系统&#xff0c;包含了多个模块&#xff0c;每个模块都有其独特的功能和作用。这些模块涵…...

扩散模型在机器学习中的应用及原理

扩散模型在机器学习中的应用及原理 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是扩散模型&#xff1f; 在机器学习中&#xff0c;扩散模型&#xff…...

fastapi自定义中间件

fastapi自定义中间件 1、自定义中间件类 from fastapi import Request from starlette.middleware.base import BaseHTTPMiddlewareclass MyMiddleware(BaseHTTPMiddleware):def __init__(self, app,*args, **kwargs):super().__init__(app,*args, **kwargs)async def dispat…...

基于 MCU 的开发,能不能对代码进行单元测试?

在基于微控制器&#xff08;MCU&#xff09;的开发中&#xff0c;确实可以对代码进行单元测试&#xff0c;并且随着嵌入式软件开发实践的发展&#xff0c;越来越多的团队开始重视并实施单元测试和自动化测试。 单元测试是一种软件测试方法&#xff0c;用于验证程序模块&#xf…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...