- 博客(13)
- 收藏
- 关注
原创 【无标题】
本文介绍了一个通用的C++滑动平均类实现。该模板类使用双端队列存储数据,支持任意数值类型,通过维护窗口总和实现高效计算。主要功能包括添加数据点、获取实时平均值、检查窗口状态和重置窗口。时间复杂度为O(1),适用于传感器数据平滑、金融分析等实时处理场景。实现中考虑了数值精度和异常处理,窗口大小可在构造时指定,具有较好的灵活性和通用性。
2025-07-18 16:22:14
127
原创 C++实践:Google开源库GFlags的使用
GFlags 是 Google 开源命令行参数解析库,支持动态修改程序参数。本文介绍了 GFlags 的核心功能,包括多类型标志定义、命令行解析和动态修改。提供了 C++ 示例代码,展示如何定义、使用和修改标志(如布尔值、整数和字符串)。同时详解了四种修改参数的方法:命令行参数、代码动态修改、环境变量和配置文件,并介绍了标志校验、帮助信息等实用功能。通过安装命令和编译示例,帮助开发者快速集成 GFlags 到项目中。
2025-07-18 14:10:59
567
原创 自动驾驶控制算法——基于车辆动力学的道路-车辆误差模型
本文建立了自动驾驶车辆的横向控制系统误差模型,重点分析了车辆质心相对于车道中心线的位置和航向误差。通过车辆动力学推导,建立了包含横向位置偏差(e₁)、航向角偏差(e₂)及其变化率的四维状态方程。模型考虑了轮胎侧偏刚度、车辆质量、转动惯量等关键参数,并给出了状态空间表达式(式2.13),其中系统矩阵A描述了误差动态特性,B矩阵为控制输入矩阵。此外,模型还引入了道路曲率(ψ_des)和横向坡度(φ)等环境因素影响。最后,文章指出该模型可扩展至包含纵向动力学,为自动驾驶车辆横向控制提供了理论基础。
2025-07-18 10:43:25
972
原创 自动驾驶规划算法——多项式拟合
自动驾驶规划算法常利用多项式拟合来生成轨迹或路径。本文将系统介绍多项式拟合方法,并提供可直接应用于项目的通用C++实现代码。
2025-07-18 10:27:30
646
原创 自动驾驶规划算法——图搜索:BFS、DFS、Dijkstra与A*
本文介绍了四种图搜索算法(BFS、DFS、Dijkstra、A*)及其在自动驾驶路径规划中的应用。BFS和DFS适用于无权图遍历,Dijkstra解决加权图最短路径问题,A通过启发式函数优化搜索效率。文章详细说明了各算法原理、复杂度、优缺点及C++实现,并对比了它们的适用场景。在自动驾驶领域,这些算法通过将道路建模为有权图(节点为车道,边权重考虑距离、路况等),能有效规划最优路径。其中A算法因结合实际成本和启发式估计,特别适合大规模路径规划需求。
2025-07-18 09:57:33
642
原创 自动驾驶控制算法——车辆七自由度动力学模型
本文介绍了车辆七自由度动力学模型,该模型能更准确描述打滑和侧滑等复杂工况下的车辆行为。文章首先对比了二/三自由度模型的局限性,然后详细推导了七自由度模型的核心方程,包括纵向、横向和横摆三个整车运动方程,以及四个车轮的转动方程。模型考虑了轮胎垂向载荷的动态分配、侧偏角计算、滑移率计算等关键因素,并采用魔术公式描述轮胎力特性。文章还给出了转弯制动联合工况下轮胎力的修正方法,以及相关参数的参考值,为车辆动力学仿真和分析提供了理论基础。
2025-04-22 17:15:41
1414
原创 二次规划问题与OSQP原生求解器
线性二次规划(Linear Quadratic Programming)是一类特殊的非线性规划问题,其目标函数是二次函数,约束条件是线性函数。min12xTQxxTC约束条件Ax≤bExdx≥0可选约束条件:Ax &≤ b \\Ex &= d \\x &≥ 0 (可选) \\min21xTQxxTC约束条件AxExx≤bd≥0可选x∈Rnx ∈ ℝⁿx∈Rn是决策变量Q。
2025-04-19 14:57:22
1211
原创 自动驾驶控制算法——MPC横向控制器
本文提出了一种基于车辆二自由度模型的MPC控制器设计方法。首先建立了横纵向动力学误差模型,推导了包含横向、航向和纵向位置偏差的状态空间方程,并采用双线性变换和欧拉方法进行离散化处理。其次,通过预测时域内的状态递推,构建了增广矩阵形式的预测模型。最后,采用二次规划方法压缩优化问题,将控制量作为优化变量,以最小化控制误差为目标函数。该方法考虑了轮胎侧偏刚度等关键参数,并与Apollo开源代码保持参数定义一致性,为车辆轨迹跟踪控制提供了有效解决方案。
2025-04-16 18:02:49
940
原创 C++实践:VS Code环境下Cmake的基本操作
本文介绍了一个实现多种信号处理功能的Limiter类,包括幅值限制、斜率限制、一阶低通滤波和均值滤波。Limiter.h头文件定义了类接口,Limiter.cpp源文件实现了具体功能。工程采用CMake构建系统,通过两个CMakeLists.txt文件分别生成静态库和可执行文件。文章详细说明了CMake配置参数、工程目录结构以及Windows环境下的编译命令。该方案实现了信号处理的基本功能,为后续扩展提供了基础框架,适合需要信号限幅和滤波的应用场景。
2024-11-01 18:45:05
308
1
原创 自动驾驶控制算法——横纵向误差计算
本文介绍了车辆运动控制中Frenet坐标系与笛卡尔坐标系的转换方法,以及横向和纵向误差的计算模型。首先建立了车辆质心相对车道中心线的误差模型,详细推导了Frenet坐标系下运动状态的数学表达,包括纵向位移、速度、加速度和横向位移及其导数的计算公式。其次,阐述了如何通过匹配最近点建立Frenet坐标系,计算横向误差(位置误差和航向角误差)及其变化率。最后,说明了纵向控制中关键路径点(起始点、匹配点、参考点、预瞄点)的定义方法,以及基于这些点计算纵向位置误差、速度误差和加速度误差的公式。该模型为自动驾驶车辆的轨
2023-04-02 11:13:00
6560
原创 自动驾驶控制算法——车辆二自由度动力学模型
2自由度(2-DOF)车辆动力学模型是研究车辆横向和横摆运动的基础模型。该模型基于刚性车身、小转向角等假设,通过力学平衡方程推导出横向加速度(式2.7)和横摆角加速度(式2.9)的表达式。采用线性轮胎模型,侧向力与速度偏角成正比,最终得到矩阵形式的状态方程(式2.10)。该模型适用于小侧偏角工况,但存在忽略悬架系统、纵向耦合等局限性,不适用于大转向或极限工况。模型广泛应用于车辆稳定性分析和控制系统设计。
2023-04-02 11:01:33
2714
原创 自动驾驶控制算法——车辆运动学模型
本文介绍了车辆运动学建模的核心方法,重点阐述了自行车模型(Bicycle Model)及其简化推导过程。该模型基于五个关键假设,将复杂车辆运动简化为二维平面问题,通过几何关系建立了车辆状态方程。文章详细推导了低速环境下忽略质心侧偏角后的简化模型,并引入阿克曼转向几何解释实际转向时内外轮转角差异。随后,基于后轴中心参考点建立了车辆运动学状态空间方程,并采用泰勒展开对非线性模型进行线性化处理,最终得到误差状态方程。这些理论为车辆轨迹跟踪控制奠定了数学模型基础,适用于低速场景下的路径规划和控制算法设计。
2023-04-01 16:53:54
3675
4
原创 自动驾驶控制算法——常见控制算法原理
本文介绍了三种常见的车辆横向控制算法。Pure Pursuit算法基于几何学原理,通过预瞄点和前轮转角控制消除横向偏差,本质上是一种P控制器。Stanley算法采用非线性反馈,结合航向误差和横向误差进行转向控制。LQR控制算法则通过状态反馈实现最优控制,其核心是求解Riccati方程获取最优控制量。三种算法各有特点:Pure Pursuit依赖预瞄距离,Stanley更直观但不适合高速,LQR能实现稳定最优控制但计算复杂。这些算法在自动驾驶系统中广泛应用,需根据具体场景选择合适的控制策略。
2023-04-01 16:23:33
3864
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人