- 博客(26)
- 收藏
- 关注
原创 Apollo 9.0 控制算法 -- mpc controller Ⅰ
本章将详细讲解Apollo纵向控制器LonController - lon_based_pid_controller。
2025-12-04 16:33:42
82
原创 自动驾驶控制算法——模型预测控制(MPC)
目前主流的轨迹跟踪方法有两类:基于几何模型的跟踪方法和基于动力学模型的跟踪方法。基于几何模型的跟踪方法:基于动力学模型的跟踪方法:首先,明确三个基本概念:最优控制(optimal control)指的是在一定的约束情况下达到最优状态的系统表现。这里有2个概念需要注意:所以到底什么是最优?我们通常通过代价函数(目标函数)来衡量,同时代价函数还受约束的限制。对于单输入单输出系统(SISO)而言,衡量系统性能优劣可以用误差的积累值∫0∞e2dt\int_{0}^{\infty } e^{2} dt∫0∞e2dt
2025-12-02 20:37:51
882
原创 时空联合规划与iLQR
本系列力争采用最通俗易懂的语言,介绍目前头部自动驾驶公司主流的规划算法 –为了说清楚这个问题,本系列将回答时空联合规划的。,以及一种求解时空联合规划的最优化方法 –
2025-10-09 17:16:50
485
1
原创 最优控制8 -- 轨迹追踪-正弦函数轨迹
本系列是个人在b站大学学习【DR_CAN】的最优控制教程的笔记,主要用于记录和方便随时知识回顾。【最优控制-合集】将正弦函数线性化,通过分段,让每一段追踪一个常数的目标值。当你分段越多,它就越接近正弦函数。这相当于让系统处理一系列的阶跃响应。引入一个预测型的前馈,用于解决延迟。
2025-09-19 11:27:04
418
原创 最优控制7 -- 轨迹追踪-输入增量控制
本系列是个人在b站大学学习【DR_CAN】的最优控制教程的笔记,主要用于记录和方便随时知识回顾。【最优控制-合集】在上一节 稳态非零参考值控制 中,目标状态为一个常量定值Xd,但是若Xd非定值呢?
2025-09-19 11:25:51
691
原创 最优控制6 -- 轨迹追踪-稳态非零参考值控制
本系列是个人在b站大学学习【DR_CAN】的最优控制教程的笔记,主要用于记录和方便随时知识回顾。【最优控制-合集】上一节谈到,对于轨迹追踪问题,如果目标状态是一个稳态定值,可以通过定义增广形式的状态空间方程和误差的代价函数, 组合成一个LQR问题,使用LQR求解的办法解决。但是上一节的方法存在一个问题,就是定义的代价函数JJJ直接关联系统的控制u→kuk,不管如何调整权重矩阵RRR都无法使系统完全达到目标状态x→dkxdk。若权重矩阵RRR过大的时候,u→。
2025-09-19 11:20:15
655
原创 最优控制5 -- 轨迹追踪-目标误差控制
本系列是个人在b站大学学习【DR_CAN】的最优控制教程的笔记,主要用于记录和方便随时知识回顾。【最优控制-合集】对于LQR问题,最终的目标是将状态变量调节到零点。而如果目标状态不是0,这就变成了一个轨迹追踪问题。
2025-09-19 11:09:50
950
原创 最优控制4 -- LQR
本系列是个人在b站大学学习【DR_CAN】的最优控制教程的笔记,主要用于记录和方便随时知识回顾。【最优控制-合集】LQR(Linear Quadratic Regulator)线性二次调节器,是一种用于线性系统的最优控制方法,其目标是通过设计状态反馈控制器,最小化一个二次型代价函数。是控制器的一种。线性:系统的状态方程是线性的;二次型:系统的代价函数是二次型的,可以平衡状态误差和控制能量;调节器:系统的目标状态是零,用于将系统调节到零点。
2025-09-19 11:02:48
919
原创 最优控制3 -- 动态规划-一个解析解的例子
本系列是个人在b站大学学习【DR_CAN】的最优控制教程的笔记,主要用于记录和方便随时知识回顾。【最优控制-合集】
2025-09-19 10:38:52
192
原创 最优控制2 -- 动态规划
本系列是个人在b站大学学习【DR_CAN】的最优控制教程的笔记,主要用于记录和方便随时知识回顾。【最优控制-合集】动态规划(Dynamic Programming, DP)与最优控制,两者有共同的理论基础:贝尔曼最优性原理。动态规划问题的求解核心在于 利用子问题的重叠性和最优子结构性质,通过分阶段决策避免重复计算。重叠子问题:不同决策路径会重复访问相同的子问题。例如斐波那契数列中 fib(5) 需要多次计算 fib(2)。最优子结构:问题的最优解包含其子问题的最优解。
2025-09-19 10:34:21
451
原创 Apollo 9.0 控制算法 -- lon based pid controller
参考论文:1808.10134 Baidu Apollo Auto-Calibration System - An这篇论文是Apollo发表的一种基于离线模型和在线学习的(对于纵向动力学)自动校准系统。首先从人类驾驶数据中生成离线标定表。离线表作为后期使用的初始猜测,只需要二十分钟的数据收集和处理。然后,基于实时性能分析,采用在线学习算法适当更新初始表(离线表)。基于人体驾驶数据,生成标定表,将油门、刹车、车速作为输入,加速度作为输出。
2025-02-14 16:16:18
1545
原创 Apollo 9.0 速度二次规划算法 – piecewise jerk speed optimizer
路径规划的坐标系是sl坐标系,沿着参考线的方向是s轴,垂直于参考线的方向是l轴。(红色坐标轴)速度规划的坐标系是st坐标系,s是沿着规划好的路径方向的位移,t是时间。(蓝色坐标轴)速度二次规划同样采用分段加加速度的算法思想,对时间t进行等间隔△t采样。选取各个时间点t对应的s,s˙,s¨s,\dot{s} ,\ddot{s}s,s˙,s¨作为优化变量,如下:x=[s0s1⋮sn−1s˙0s˙1⋮s˙n−1s¨0s¨1⋮s¨n−1]x=\begin{bmatrix}s_{0} \\s_{1} \
2025-02-13 11:22:30
618
原创 Apollo 9.0 速度动态规划决策算法 – path time heuristic optimizer
PathTimeHeuristicOptimizer算法,实际上是将ST空间进行离散,在这离散的图上寻找“最短”路径的问题,所以可以使用动态规划分而治之的思想进行求解。注意这里的“最短”,并不是路程上的最短,而是指包含障碍物代价,加速度代价等一系列代价最小的一条路径。动态规划Task的入口在。
2025-02-13 10:42:24
1561
原创 Apollo 9.0 参考线生成器 -- ReferenceLineProvider
在基于参考线的规划算法中,参考线是Planning一切工作的基础和前提,所以搞清楚参考线怎么来的就变得很重要。为此,首先需要了解Planning 与 Routing的交互,通过交互得到路径片段,这些路径片段就告诉我们该怎么走,再在此基础上生成参考线,最后使用不同的平滑算法对参考线进行平滑,得到一条光滑的参考线。
2025-02-11 17:42:37
1501
原创 Apollo 9.0 参考线平滑算法 -- Discrete Points ReferenceLine Smoother
这一章将介绍参考线平滑中的主体部分,即smoother类下的smooth函数和具体的平滑算法。这里我只介绍Apollo 9.0中目前配置参数里正在使用的discrete_points_reference_line_smoother下的smooth函数。该方法通过对原始参考线上的离散点的有限偏移对原始参考线进行平滑。在详解代码之前,有必要先对理论进行讲解。
2025-02-11 17:22:17
742
1
原创 Apollo 9.0 轨迹拼接和规划起点
在每一帧轨迹规划的开始,我们需要确定规划的起始点P0txyvaheadingkappa,起始点P0给定了规划的初始状态,然后结合当前帧的环境信息并调用规划算法规划生成当前帧轨迹。在确定好规划起点后,Apollo中还会从上周期的规划轨迹中截取一段轨迹,与当前帧规划的轨迹拼接在一起,组成期望轨迹发给控制执行。
2025-02-11 16:34:08
1088
原创 Apollo 9.0 Planning 中重要的数据结构
在具体深入到Apollo的规划算法之前,首先需要讲清楚算法里贯穿始终的几个重要数据结构。只有搞懂了这些数据结构,才能理清楚具体算法的输入输出,后续看代码也会事半功倍。
2025-01-04 15:00:24
1181
原创 Apollo 9.0 Planning 初始化都做了什么?
planning_base_的Init()初始化是整个Planning模块初始化过程最复杂的部分,通过断点调试的函数调用栈,可以看到整个调用的过程。最后将init_置为true,标志着Planning模块的初始化完成。看到这里,如果你还有一个疑问:每个task都有一个Init()函数,用于对应的配置参数加载,例如qp求解的权重系数,但是你上面讲的初始化却没有提到,那么它们又是在哪里调用到的呢?那么恭喜你,你看的很仔细。
2025-01-03 16:24:11
1567
原创 Apollo 9.0 PnC 学习路线图
作为中国自动驾驶的黄埔军校,百度的Apollo 自动驾驶开源框架是每一个刚入行的PnCer都不可错过的“小甜甜”,甚至对于很多做自动驾驶“自研”的公司,该框架也是有很大的借鉴意义(当然它们很多也是这样做的😂)。哪怕是在端到端已经开始横行的2024年,Apollo仍然是你入行自动驾驶,学习PnC算法的不二框架!
2024-12-27 17:47:10
1028
原创 Apollo 9.0 路径规划算法 -- piecewise jerk path optimizer
Apollo 9.0 路径规划算法 – piecewise jerk path optimizer文章目录Apollo 9.0 路径规划算法 -- piecewise jerk path optimizer1. 分段加加速度优化算法2. Apollo 中二次规划问题的构造2.1 定义优化变量2.2 设计目标函数2.3 设计约束条件2.3.1 不等式约束:边界条件2.3.2 等式约束:路径连续性约束2.3.3 等式约束:规划起点2.3.4 约束矩阵3. 代码解析3.1 二次规划问题构建3.2 P矩阵3.3
2024-09-09 16:18:00
2547
7
原创 如何用vscode调试Apollo 9.0?-- 以Planning模块为例
看了百度Apollo代码这么久了,你是不是也想亲自dbug一下,看看代码流程?网上的教程都试了,还是调试失败?你还不会使用断点进行调试?按照下面的步骤,手把手教你在ubuntu系统下用vscode调试Apollo 9.0代码,So easy,妈妈再也不用担心我不会调试代码啦!本教程基于百度Apollo 9.0版本,进行安装和调试,其他版本可能略有差异;本教程使用源码的安装方式,包管理安装方式的调试略有差异。
2024-06-18 18:03:27
3155
原创 自动驾驶控制算法——纯跟踪算法(Pure Pursuit)
把预瞄距离变大,那么纯追踪控制器就会表现得更加“平滑”,更加平滑的结果就是在某些急剧的转角处会存在转向不足的情况。把预瞄距离变小,那么车辆控制会不稳定甚至震荡,为了确保车辆稳定而设置较长的前视距离又会出现车辆在大转角处转向不足的问题。
2023-08-02 14:53:27
30843
16
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅