Apollo进阶课程㉓丨Apollo规划技术详解——Motion Planning with Environment

原文链接:进阶课程㉓丨Apollo规划技术详解——Motion Planning with Environment

行为层决定要在当前环境中执行的驾驶行为时,其可以是例如巡航-车道,改变车道或右转,所选择的行为必须被转换成路径或轨迹,可由低级反馈控制器跟踪。所产生的路径或轨迹必须满足车辆动力学约束的,对乘客来说是舒适的,并且避免与车载传感器检测到的障碍物的碰撞。寻找这样的路径或轨迹的任务是运动规划系统的责任。

由于规划感知控制之间的纽带,当前的新规划算法开发多考虑感知的不确定性以及控制的约束。在动态环境数据采集过程中,路径规划的最新发展目标是正确处理数据采集过程中的不确定性。这在实时的情况下会有更好的环境感知效果,并指导规划过程。通过考虑感知阶段的不确定性来提高防止危险情况的能力。从控制的角度来看,需考虑多目标,包括车辆的运动学约束和乘客的舒适性等。

上周阿波君为大家详细介绍了「进阶课程㉒Apollo规划技术详解——Motion Planning with Autonomous Driving」。

主要介绍了运动规划的一些基本方法,重点从robotics的角度阐释。包括有RRT(基于快速扩展随机树算法)Lattice网络方法Spira方法Polynomial方法Functional Optimization方法等。

本周阿波君将与大家分享Apollo规划技术详解——Motion Planning with Environment。下面,我们一起进入进阶课程第23期。


目录

1.运动规划的环境变化

2.Vehicle Model的建立

3.曲线坐标系SL

4.SL坐标系到XY坐标系的投影

5.XY坐标系到SL坐标系的投影


1.运动规划的环境变化

运动规划根据环境的变化在算法和处理方法上有很大的不同,涉及到模型建立平滑优化坐标转换以及障碍物投影等。如下图所示。

                                                                                                运动规划的环境变化


2.Vehicle Model的建立

                                                                                                Vehicle Model的建立

对于汽车而言,质点模型是远远不够的,无人车是前轮转向的车,前后位置的变化是不一样的,那么怎么去描述这种不一样呢?首先从刚体角度考虑,二维平面里的刚体涉及到XY\theta,也就是以车后轴中心作为XY坐标原点时车身的朝向heading。因为无人车运动模型还多了一个转向的变量,多了一个自由度,刚体模型也不够。

可以将汽车运动模型简化为自行车模型,将四轮抽象成两个轮子,前轮中心和后轮中心的运动方向和自行车一样。车辆在垂直方向的运动被忽略掉,用一个二维平面上的运动物体来描述车辆的运动模型。自行车运动的时候具有以下特点,旋转车头的时候,前轮和后轮都围绕一个中心点转动,并且后轮的转向半径(1/k)(1/k)与方向盘转动角度w满足以下关系,其中L为前轮中心和后轮中心的距离:

k=(tan(w))/k

                                                                                                运动规划与车辆模型

                                                                                                实际的自行车运动模型

在实际的自行车运动模型中,后轴中心是沿着如上图所示的一条平滑的轨迹运行,该轨迹对应的曲率(k)表示调整方向盘的度数,如果为正,表示向左转,反之则向右转。因此,自行车运动模型可以用XY\theta,k还有速度v来表示。那么沿着这样的轨迹运动时,如何去估计障碍物的距离呢?解决这个问题,先了解一下曲线坐标系以及与世界坐标系之间的转换关系。 


3.曲线坐标系SL

SL坐标系也叫做frenet frame,如下所示。它以道路中心线为参考,S表示道路中心线的方向L表示与道路中心线垂直的方向。在结构化道路上行驶的时候,SL坐标系比XY坐标系更加贴合实际需求。那么SL坐标系如何转换到XY坐标系呢?

                                                                                               SL坐标系和XY坐标系


4.SL坐标系到XY坐标系的投影

之所以要投影到世界坐标系,是因为很多信息是全局的,例如红绿灯位置,参考的是XY世界坐标系。在给定SL坐标系时,每一个点的S坐标本身对应一个(x-r,y-r)(x-r,y-r)坐标,根据该点的横向偏移距离,可以求出给定点在世界坐标系中的XY位置,如下图所示。其中theta是参考线的方向,也就是切线方向。如果XY与S方向平行的话,轨迹的曲率还满足图中所示的关系。

                                                                                                SL坐标系到XY坐标系的投影


5.XY坐标系到SL坐标系的投影

对于一个给定的曲线,如何将XY坐标系下的点转换到SL坐标系呢?因为SL坐标系并不是唯一的,XY会在曲线上产生很多投影,投影点是经过XY坐标,且垂直于曲线的线段与曲线的交点,如下图所示,XY就有两个投影点。通常情况下会增加一些限制,例如投影距离不能超曲率值。需要注意的是,掉头的时候还是需要特殊处理的。

                                                                                                XY坐标系到SL坐标系的投影

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

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

相关文章

Java对象模型-oop和klass

oop-klass模型 Hotspot 虚拟机在内部使用两组类来表示Java的对象和类。 oop(ordinary object pointer),用来描述对象实例信息。klass,用来描述 Java 类,是虚拟机内部Java类型结构的对等体 。 JVM内部定义了各种oop-klass,在JV…

【2019南昌邀请赛现场赛 - J】Prefix(STLmap,思维)

题干&#xff1a; yah has n strings <s1​,⋯,sn​>, and he generates a sequence P by two steps: P<s1​,⋯,sn​> Replace each si​ with all prefixes of itself. An example is: the n strings are < aab,ab > first, P < aab,ab > then, P…

Apollo进阶课程㉔丨Apollo 规划技术详解——Motion Planning Environment

原文链接&#xff1a;进阶课程㉔丨Apollo 规划技术详解——Motion Planning Environment 自动驾驶汽车核心技术包括环境感知、行为决策、运动规划与控制等方面。其中&#xff0c;行为决策系统、运动规划与控制系统作为无人驾驶汽车的“大脑”&#xff0c;决定了其在不同交通驾…

JAVA类 与类文件

在一个.java文件中可以有多个同级类, 其修饰符只可以public&#xff0f;abstract&#xff0f;final&#xff0f;和无修饰符1.public修饰的只能有一个,且必须要与文件名相同: 因为jvm虚拟机为了提高查找类的速度&#xff0c;使用import语句导入的时候&#xff0c;只会导入对应空…

【2019南昌邀请赛现场赛 - G】Winner(建图,tarjan缩点 或 贪心)

题目大意&#xff1a; n个人参加竞技比赛。比赛由三种模式a,b,c&#xff0c;每个人在每种模式下有对应的权值a[i]b[i]c[i]。举行n−1场比赛&#xff0c;每场比赛主办方可以选择两个人决斗&#xff0c;能力值低的人淘汰。这样保证n-1场比赛过后&#xff0c;只会有一个winner。q…

一步步编写操作系统 26 打开A20地址线

打开A20地址线 还记得实模式下的wrap-around吗&#xff1f;也就是地址回绕。咱们一起来复习一下。实模式下内存访问是采取“段基址:段内偏移地址”的形式&#xff0c;段基址要乘以16后再加上段内偏移地址。实模式下寄存器都是16位的&#xff0c;如果段基址和段内偏移地址都为1…

【HDU - 6567】Cotree(树形dp,思维)

题干&#xff1a; Avin has two trees which are not connected. He asks you to add an edge between them to make them connected while minimizing the function ∑ni1∑nji1dis(i,j)∑i1n∑ji1ndis(i,j), where dis(i,j)dis(i,j) represents the number of edges of the …

一步步编写操作系统 27 处理器微架构之流水线简介

了解处理器内部硬件架构&#xff0c;有助于理解软件运行原理&#xff0c;因为这两者本身相辅相成&#xff0c;相互依存。就像枪和狙击手&#xff0c;枪的操作和外形设计都是要根据人体工学&#xff0c;让人不仅操作容易&#xff0c;而且携带也要轻便&#xff0c;做到能随时射出…

【2019icpc南京站网络赛 - F】Greedy Sequence(思维,贪心构造,STLset)

题干&#xff1a; Youre given a permutation aa of length nn (1 \le n \le 10^51≤n≤105). For each i \in [1,n]i∈[1,n], construct a sequence s_isi​ by the following rules: s_i[1]isi​[1]i;The length of s_isi​ is nn, and for each j \in [2, n]j∈[2,n], s_…

一步步编写操作系统 28 cpu乱序执行

乱序执行(乱序执行译作异步执行更贴切)&#xff0c;是指在cpu中运行的指令并不按照代码中的顺序执行&#xff0c;而是按照一定的策略打乱顺序执行&#xff0c;也许后面的指令先执行&#xff0c;当然&#xff0c;得保证指令之间不具备相关性。 举个简单的例子&#xff0c;比如如…

【POJ - 1741】Tree(树分治,容斥,点分治,模板题)

题干&#xff1a; Give a tree with n vertices,each edge has a length(positive integer less than 1001). Define dist(u,v)The min distance between node u and v. Give an integer k,for every pair (u,v) of vertices is called valid if and only if dist(u,v) not e…

Apollo进阶课程㉚丨Apollo ROS背景介绍

原文链接&#xff1a;进阶课程㉚丨Apollo ROS背景介绍 ROS是机器人学习和无人车学习最好Linux平台软件&#xff0c;资源丰厚。无人车的规划、控制算法通常运行在Linux系统上&#xff0c;各个模块通常使用ROS进行连接。 上周阿波君为大家详细介绍了「进阶课程㉙Apollo控制技术详…

一步步编写操作系统 29 cpu缓存简介

缓存是20世纪最大的发明&#xff0c;其原理用一些存取速度较快的存储设备做为数据缓冲区&#xff0c;避免频繁访问速度较慢的低速存储设备&#xff0c;归根结底的原因是&#xff0c;低速存储设备是整个系统的瓶颈&#xff0c;缓存用来缓解“瓶颈设备”的压力。 之前介绍实模式…

【CodeForces - 1096D】Easy Problem(dp,思维)

题目大意&#xff1a; 现在有一个由小写字母组成的字符串&#xff0c;去掉这个字符串的第i个位置的字符会有ai的代价。你的任务是去掉这个字符串中的一些字符使得该字符串中不包含子序列hard&#xff0c;且去掉字符的代价之和尽可能小。 输入 第一行一个整数n表示字符串的长…

一步步编写操作系统 30 cpu的分支预测简介

人在道路的分岔口时要预测哪条路能够到达目的地&#xff0c;面对众多选择时&#xff0c;计算机也一样要抉择&#xff0c;毕竟计算机的运行方式是以人的思路来设计的&#xff0c;计算机中的抉择其实就是人在抉择。 cpu中的指令是在流水线上执行。分支预测&#xff0c;是指当处理…

【HDU - 5492】Find a path(dp,tricks)

题干&#xff1a; Frog fell into a maze. This maze is a rectangle containing NN rows and MM columns. Each grid in this maze contains a number, which is called the magic value. Frog now stays at grid (1, 1), and he wants to go to grid (N, M). For each step,…

Apollo进阶课程㉜丨Apollo ROS原理—1

原文链接&#xff1a;进阶课程㉜丨Apollo ROS原理—1 ROS在开发过程中&#xff0c;基于功能把整个自动驾驶系统分成多个模块&#xff0c;每个模块负责自己消息的接收、处理、发布。当模块需要联调时&#xff0c;通过框架可以把各个模块快速的集成到一起。 上周阿波君为大家详细…

Ubuntu下安装Chrome浏览器的两个方法

一、通过直接下载安装Google Chrome浏览器deb包。 打开Ubuntu终端&#xff0c;以下为32位版本&#xff0c;使用下面的命令。 wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb 以下为64位版本&#xff0c;使用下面的命令。 wget https://dl.…

【EOlymp - 2908】SumThem All(数位统计,tricks)

题干&#xff1a; Find the sum of all the digits in all the integers between lowerBound and upperBound inclusive. Input Each line contains two integers lowerBound and upperBound (0 ≤ lowerBound ≤ upperBound ≤ 2109). Output For each test case print i…

Apollo进阶课程㉝丨Apollo ROS原理—2

原文链接&#xff1a;进阶课程㉝丨Apollo ROS原理—2 在ROS系统中&#xff0c;从数据的发布到订阅节点之间需要进行数据的拷贝。在数据量很大的情况下&#xff0c;很显然这会影响数据的传输效率。所以Apollo项目对于ROS第一个改造就是通过共享内存来减少数据拷贝&#xff0c;以…