自动驾驶---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坐标系下的路径规划

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

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

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

相关文章

Oracle 上机

--1.(3分)查找每个部门的最高工资员工编号及其下属信息。 select e2.empno,e1.* from emp e1 join ( select * from emp where (deptno,sal) in (select deptno,max(sal) from emp group by deptno)) e2 on e1.mgr e2.empno; /* 2.(5分&…

Spring Boot集成checkstyle快速入门Demo

1.什么是checkstyle? CheckStyle是一个帮助程序员来遵守一直的编码规范的工具。默认,它支持google 和sun 的java style guide。而且它是高度可配置的,允许自定义编码规范,并可以对各种IDE(eclipse、Intellij&#xff…

昇思MindSpore学习笔记2-01 LLM原理和实践 --基于 MindSpore 实现 BERT 对话情绪识别

摘要: 通过识别BERT对话情绪状态的实例,展现在昇思MindSpore AI框架中大语言模型的原理和实际使用方法、步骤。 一、环境配置 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下…

前端在for循环中使用Element-plus el-select中的@click.native动态传参

<el-table ref"table" :data"editTableVariables" cell-dblclick"handleRowDblClick" style"width: 100%" > <!-- el-table-column: 表格列组件&#xff0c;定义每列的展示内容和属性 --><el-table-column prop&q…

8种数据迁移工具

前言 最近有些小伙伴问我&#xff0c;ETL数据迁移工具该用哪些。 ETL(是Extract-Transform-Load的缩写&#xff0c;即数据抽取、转换、装载的过程)&#xff0c;对于企业应用来说&#xff0c;我们经常会遇到各种数据的处理、转换、迁移的场景。 今天特地给大家汇总了一些目前…

【云原生】服务网格(Istio)如何简化微服务通信

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、微服务架构的兴起 2、Istio&#xff1a;服务网格的佼…

服务器测评

服务器测评 Linux测评口令是否存在空口令账户密码长度和密码定期更换密码复杂度本地登录失败处理功能相关参数超时锁定sshd服务相关端口是否已经打开不允许root账户远程登录查看SELinux状态审计查看Linux中正在运行的服务查看已添加的iptables规则查看文件和目录的权限设置是否…

大文件上传是怎么做的

1. 分片上传 1. 把需要上传的文件按照一定的规则&#xff0c;分割成相同大小的数据块 2. 初始化一个分片上传任务&#xff0c;返回本次分片上传的唯一标识 3. 按照一定的规则把各个数据块上传 4. 发送完成后&#xff0c;服务端会判断数据上传的完整性&#xff0c;如果完整&a…

【Python】Python环境搭建教学#保姆级教学#手把手带你安装——内附Python环境搭建安装包(Python、PyCharm(社区版)安装包)

Python环境搭建 导读一、初识Python1.1 Python的由来1.2 Python的用途1.3 Python的优缺点1.4 Python的前景&#xff08;钱景&#xff09; 二、Python环境搭建2.1 运行环境——Python安装2.2 开发环境——PyCharm安装2.3 项目创建2.4 基本配置2.4.1 主题配置2.4.2 背景图设置2.4…

Vue笔记-vue中使用JS创建的函数

主要是公司对前端要求不高&#xff0c;能解决问题就行了&#xff0c;前端不太熟&#xff0c;用js这种处理起来方便&#xff0c;在此记录下。 在src中创建一个api目录&#xff0c;新建custom.js export const getDivHeightByClass (className) > {let divElements docume…

容器之docker

Docker 是一个开源的平台&#xff0c;旨在使应用程序的开发、部署和运行更加轻松。它利用容器技术&#xff0c;将应用程序及其依赖环境打包在一起&#xff0c;以便于在任何环境中一致运行。 概述 Docker 通过提供轻量级的虚拟化解决方案&#xff0c;使得开发者可以轻松创建、…

.NET 调用API创建系统服务实现权限维持

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧&#xff0c;对内网和后渗透感兴趣的朋友们可以订阅该电子报刊&#xff0c;解锁更多的报刊内容。 02基本介绍 本文内容部分节选自小报童…

达梦数据库的DBMS_STATS包

达梦数据库的DBMS_STATS包 基础信息 OS版本&#xff1a; Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a; DM Database Server 64 V8 DB Version: 0x7000c 03134284132-20240115-215128-20081达梦数据库&#xff08;DM Database&#xff09;提供了 D…

FreeRTOS开发五、任务状态切换以及空闲任务回收结束的任务

1、任务状态切换 任务创建的时候就会处于就绪状态ready&#xff0c;然后他马上就能够运行进入Running状态&#xff0c;运行中可以调用vTaskDelay进入阻塞状态&#xff0c;实际就是延时一小段时间&#xff0c;等待唤醒&#xff0c;当延时时间过去后就回到了就绪状态&#xff0…

【python学习】自定义函数的一些高级用法-1

在 Python 中&#xff0c;自定义函数除了基本的定义和调用外&#xff0c;还有一些高级用法&#xff0c;可以让函数更加灵活和强大。以下是一些自定义函数的高级用法示例&#xff1a; 1. 默认参数 函数定义时可以指定默认参数值&#xff0c;当调用函数时没有提供该参数的值时&…

深入理解Spring Boot与Spring Cloud的整合方式

深入理解Spring Boot与Spring Cloud的整合方式 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨Spring Boot与Spring Cloud的整合方式&#x…

pytorch-ResNet18简单复现

目录 1. ResNet block2. ResNet18网络结构3. 完整代码3.1 网络代码3.2 训练代码 1. ResNet block ResNet block有两个convolution和一个short cut层&#xff0c;如下图&#xff1a; 代码&#xff1a; class ResBlk(nn.Module):def __init__(self, ch_in, ch_out, stride):su…

Java学习 (六) 面向对象--this、继承、方法重写、super

一、this 关键字 1、this 演示 vi Person.java public class Person {String name;int age;//显示声明构造器public Person(String s , int i){name s;age i;}public void setAge(int age){age age;}}vi PersonTest.java public class PersonTest {public static void m…

第二十一章 函数(Python)

文章目录 前言一、定义函数二、函数参数三、参数类型四、函数返回值五、函数类型1、无参数&#xff0c;无返回值2、无参数&#xff0c;有返回值3、有参数&#xff0c;无返回值4、有参数&#xff0c;有返回值 六、函数的嵌套七、全局变量和局部变量1、局部变量2、全局变量 前言 …