最优控制与轨迹规划学习笔记:包含倒立摆控制、路径规划优化及离散点参考线优化案例

张开发
2026/6/30 4:48:24 15 分钟阅读
最优控制与轨迹规划学习笔记:包含倒立摆控制、路径规划优化及离散点参考线优化案例
最优控制和轨迹规划学习笔记 包含多个实际案例 倒立摆上翻控制 满足车辆运动学约束的路径规划 离散点参考线优化 lattice横向距离规划 这段代码包含了三个程序我们将分别对它们进行详细的分析。 1. 最速降线问题求解 这个程序的主要功能是通过优化算法求解最速降线问题。它应用于物理学、工程学和数学等领域用于确定两个给定点之间的最速下降路径。 程序的主要思路是通过将路径分成多个小段然后通过优化算法找到每个小段的最佳下降路径。程序首先定义起点和终点的坐标然后根据给定的分段数目将路径分成多个小段。接下来它使用fminunc函数和CostTime函数来进行优化找到最佳的路径。最后程序使用plot函数绘制出找到的路径和解析解的路径。 CostTime函数是目标函数它计算路径的总时间。它通过计算每个小段的长度和速度来计算总时间。程序中的for循环用于计算每个小段的长度并将其加到总时间中。 2. 车辆路径规划 这个程序的主要功能是进行车辆路径规划以避开给定的障碍物。它应用于自动驾驶、机器人导航和交通控制等领域用于确定车辆的最佳路径以避开障碍物并到达目标位置。 程序的主要思路是使用优化算法来找到车辆的最佳路径。程序首先定义车辆的初始位置和障碍物的位置和尺寸。然后它使用循环来计算横向偏移边界以确保车辆不会碰到障碍物。接下来程序使用casadi库来进行优化定义决策变量和目标函数并添加约束条件。最后程序使用plot函数绘制出找到的路径和障碍物。 3. 参考点路径规划 这个程序的主要功能是进行参考点路径规划以使车辆按照给定的参考点行驶。它应用于自动驾驶、机器人导航和路径规划等领域用于确定车辆的最佳路径以便它按照给定的参考点行驶。 程序的主要思路是使用优化算法来找到车辆的最佳路径。程序首先定义参考点的坐标和车辆的初始状态和终点状态。然后它使用casadi库来进行优化定义决策变量和目标函数并添加约束条件。最后程序使用plot函数绘制出找到的路径和参考点。 以上是对给定代码的详细分析和解释。这些程序涉及到的知识点包括优化算法、数值计算、路径规划和绘图等。希望这些解释对你有帮助一、最速降线问题求解模块Brachistochrone_curve.m1.1 功能定位该模块旨在数值求解经典的最速降线问题即寻找一条从指定起点到终点的曲线使小球在重力作用下沿此曲线滑动的时间最短。同时通过与解析解对比验证数值解法的准确性。1.2 核心逻辑问题离散化将整个路径划分为N2个节点N为分段数目默认200以相邻节点间的直线段近似曲线通过优化中间节点的纵坐标逼近最优曲线。初始解设定以起点到终点的直线作为初始解为后续优化提供基础起点。时间成本计算基于物理公式计算小球在每段直线上的滑动时间累加得到总时间作为优化目标函数。核心是利用重力场中速度与下落高度的关系结合线段长度推导每段时间的计算方式。优化求解采用拟牛顿算法quasi-newton对目标函数进行最小化求解得到最优的节点纵坐标序列。结果可视化同时绘制数值解以星号标记和解析解摆线直观对比两种解法的差异验证数值解的合理性。1.3 关键参数与输出输入参数起点坐标xy0默认[0,0]、终点坐标xyf默认[10,10]、分段数目N默认200。输出结果最优曲线的横纵坐标序列xs, ys、数值解与解析解的对比图像。二、倒立摆上翻控制模块CartPoleSwingUp目录2.1 功能定位该模块实现倒立摆系统从初始下垂状态摆角为0到目标上翻状态摆角为π的最优控制通过施加水平力控制小车运动使摆杆稳定到达竖直向上位置同时最小化控制能量消耗。2.2 核心组件与功能2.2.1 系统参数定义CartPoleSwingUp.m设定倒立摆的物理参数包括摆长l、小车质量m1、摆球质量m2、重力加速度g定义初始状态init小车位置、摆角、小车速度、摆角速度均为0和目标状态ref小车位置为0、摆角为π、速度均为0设置约束条件小车位置范围、控制 force 范围及控制时间T默认2秒。2.2.2 动力学建模autoGen_cartPoleDynamics.m、cartPoleDynamics.m动力学方程推导基于拉格朗日力学推导倒立摆的加速度方程考虑小车水平力F和摆杆扭矩T此处设为0的作用计算小车加速度ddx和摆角加速度ddq生成状态向量的导数dz即小车速度、摆角速度、小车加速度、摆角加速度。自动代码生成利用符号计算工具生成动力学方程的代码确保公式推导的准确性避免手动计算误差。2.2.3 运动学计算autoGen_cartPoleKinematics.m根据小车位置x、摆角q及对应的速度dx、dq计算摆球的位置p和速度dp为后续可视化和动力学约束提供运动学基础。2.2.4 优化问题构建CartPoleSwingUp.m决策变量定义包括状态变量X4维涵盖小车位置、摆角、速度、加速度变量A2维小车和摆杆加速度、控制变量U1维小车水平力。约束条件施加边界约束初始状态和目标状态固定确保控制过程从起点到终点。动力学约束通过积分器getIntegratorDynamics.m将加速度与状态转移关联利用梯形积分公式计算下一时刻状态保证状态变化符合动力学规律。变量范围约束控制 force 、小车位置在设定范围内。目标函数设定以控制 force 的平方和作为目标函数最小化控制能量消耗。2.2.5 积分器实现getIntegratorDynamics.m定义状态转移的积分函数基于当前状态位置、速度、加速度和时间步长dT通过梯形积分计算下一时刻的状态核心是将连续时间的动力学方程离散化适用于数值优化。2.2.6 可视化模块animate.m、drawCartPole.m、plotTraj.m实时动画animate.m、drawCartPole.m根据每时刻的状态向量绘制小车矩形、摆杆线段和摆球圆点的位置模拟倒立摆的运动过程支持调整播放速度和绘图窗口编号。轨迹绘制plotTraj.m绘制小车位置、摆角、小车速度、摆角速度及控制 force 随时间的变化曲线直观展示控制过程中各变量的动态特性。2.3 求解与输出采用IPOPT求解器对非线性优化问题进行求解得到最优的状态轨迹traj.state和控制序列traj.control输出动画和变量时间历程图验证控制效果是否满足要求。三、加农炮轨迹优化模块cannon_control目录3.1 功能定位该模块解决加农炮炮弹的最优轨迹规划问题在考虑空气阻力二次 drag的情况下寻找从原点0,0到目标点6,0的发射轨迹最小化初始发射速度的平方即最小化发射能量同时满足动力学约束。3.2 核心组件与功能3.2.1 动力学模型cannonDynamics.m建立炮弹的运动微分方程考虑水平和竖直方向的空气阻力与速度平方成正比系数为c及重力作用竖直向下单位重力。状态向量包括位置x、y和速度dx、dy状态导数为速度和加速度水平加速度由水平 drag 决定竖直加速度由竖直 drag 和重力共同决定。3.2.2 事件检测groundEvent.m定义ODE求解的事件函数当炮弹竖直位置y为0时触发终止条件用于模拟炮弹落地过程为优化初始值提供参考轨迹。3.2.3 参考轨迹生成simulateCannon.m给定初始发射速度v0、发射角度th0、分段数目N和 drag 系数c利用ODE求解器ode45模拟炮弹飞行过程生成参考轨迹位置、速度、时间作为优化问题的初始猜测值提高求解收敛速度。3.2.4 优化问题构建与求解cannon_control.m决策变量包括最终时间tf、时间步长dttf/(N-1)、各节点的位置x、y和速度dx、dy。目标函数以初始发射速度的平方dx(1)² dy(1)²为优化目标最小化发射能量。约束条件边界约束起点x(1)0,y(1)0和终点x(N)6,y(N)0位置固定。动力学约束采用梯形积分离散化动力学方程确保相邻节点的状态转移符合炮弹运动规律。求解与可视化设置初始猜测值参考轨迹调用IPOPT求解器得到最优轨迹绘制炮弹的空间轨迹x-y图验证是否到达目标点且轨迹合理。四、车辆轨迹规划模块4.1 车辆运动学约束轨迹规划vehicle_Path.m4.1.1 功能定位针对车辆运动学模型 Ackermann 转向模型规划从初始状态位置、航向角、速度到目标状态的最优路径满足车辆运动学约束如转向角限制、加速度限制同时最小化时间成本和速度变化量。4.1.2 核心逻辑车辆参数与状态定义设定车辆轴距L默认2.8定义初始状态x00,y00,theta00,v00和目标状态x1-3,y13,theta1π/2决策变量包括位置x、y、航向角theta、前轮转向角delta、时间步长dt、速度v。目标函数以时间步长的平方加权和速度变化量的平方和为目标平衡运动时间和行驶平稳性。约束条件边界约束初始和目标状态固定速度初始值为0。运动学约束基于 Ackermann 模型建立位置变化、航向角变化与速度、转向角、时间步长的关系确保车辆运动符合物理规律。变量范围约束时间步长、速度、转向角、速度变化率加速度在合理范围内。求解与可视化调用IPOPT求解器得到最优路径绘制车辆位置轨迹并用箭头标记初始和目标航向角验证路径是否满足运动学约束。4.2 离散参考线平滑ref_point_smooth.m4.2.1 功能定位对原始离散参考点进行优化调整在保证参考线与原始点偏差较小、曲线总长度合理的前提下使参考线更平滑曲率满足约束为车辆路径跟踪提供高质量的参考轨迹。4.2.2 核心逻辑原始参考点定义输入一系列离散的参考点坐标waypoints计算相邻点的距离确定平均步长deltaS。目标函数构建参考点偏差项最小化优化后点与原始参考点的位置偏差确保轨迹贴近原始路径。平滑性项FEM 位置偏差最小化相邻三点的二阶差分平方和降低曲线曲率变化提升平滑性。长度约束项最小化相邻点距离的平方和控制轨迹总长度避免过度拉伸或压缩。约束条件位置偏差约束优化后点相对于原始点的偏移量在设定范围内xu、xl、yu、yl默认1。曲率约束基于离散点曲率公式通过限制相邻三点二阶差分的平方和确保曲线曲率不超过最大允许值由最小转弯半径R决定。求解与可视化调用IPOPT求解器得到平滑后的参考线绘制原始点圆圈标记和平滑点星号标记对比展示平滑效果。4.3 Lattice 横向距离规划lattice_plan.m4.3.1 功能定位在Lattice轨迹规划框架中实现横向方向的最优位置规划。根据障碍物位置确定横向偏移的边界范围结合车辆横向运动的动力学约束生成一条偏离参考线最小且无碰撞的横向轨迹。4.3.2 核心逻辑环境与参数定义设定车辆初始位置vehpos、障碍物列表oblist及尺寸obw、obl定义纵向步长ds默认1将纵向路径划分为60个节点计算每个纵向节点对应的横向偏移上下边界ll、lu确保避开障碍物。决策变量包括横向偏移l、横向速度dl、横向加速度ddl、横向加加速度dddl全面描述横向运动状态。目标函数以横向偏移的平方和为目标最小化轨迹与参考线横向偏移为0的偏离程度保证行驶稳定性。约束条件边界约束每个纵向节点的横向偏移在计算出的上下边界内避免碰撞。动力学约束基于横向运动的积分关系建立横向偏移、速度、加速度之间的状态转移约束确保运动连续平滑限制横向加加速度的范围控制加速度变化率提升舒适性。求解与可视化调用IPOPT求解器得到最优横向轨迹绘制参考线、横向边界红色、最优轨迹绿色及障碍物蓝色矩形、车辆初始位置红色矩形验证轨迹的无碰撞性和合理性。五、共性技术与工具5.1 优化框架与求解器所有模块均基于CasADi工具包构建优化问题CasADi提供了灵活的符号计算和数值优化接口支持将连续时间的动力学问题转化为离散的非线性规划NLP问题。统一采用IPOPTInterior Point OPTimizer作为求解器IPOPT擅长处理带约束的非线性优化问题能够高效收敛到最优解适用于最优控制和轨迹规划场景。5.2 离散化方法为将连续时间的动力学方程转化为数值可解的离散问题各模块均采用梯形积分法进行离散化处理。该方法通过计算相邻节点的动力学导数平均值乘以时间步长得到状态变化量兼顾计算精度和效率避免一阶欧拉法精度低或高阶方法计算量大的问题。5.3 可视化与验证每个模块均配备完善的可视化功能通过绘制轨迹、时间历程曲线、动画等形式直观展示优化结果的合理性。同时部分模块如最速降线通过与解析解对比或如加农炮通过参考轨迹初始化确保数值解的准确性和可靠性。六、应用场景与扩展方向6.1 应用场景最速降线可用于机械设计中快速输送装置的路径优化如物料滑道、过山车轨道设计等。倒立摆控制典型的欠驱动系统控制案例可应用于机器人平衡控制如双足机器人、自平衡小车、卫星姿态控制等领域。加农炮轨迹优化适用于弹药发射、无人机航迹规划、导弹弹道设计等需要考虑空气阻力的运动轨迹优化场景。车辆轨迹规划直接应用于自动驾驶领域包括参考线平滑、横向避障、满足运动学约束的路径生成为车辆控制提供高质量的参考轨迹。6.2 扩展方向算法优化部分模块如参考线平滑、Lattice横向规划可进一步转化为二次规划QP问题采用QP求解器如OSQP提升求解速度满足自动驾驶实时性要求。约束扩展增加更多实际场景约束如车辆动力学约束轮胎力、侧偏角、动态障碍物、交通规则限速、车道边界等提升轨迹的实用性。多目标优化当前模块多为单目标优化如最小化控制能量、偏移量可扩展为多目标优化平衡行驶时间、舒适性、能耗等多个目标提供更灵活的轨迹选择。最优控制和轨迹规划学习笔记 包含多个实际案例 倒立摆上翻控制 满足车辆运动学约束的路径规划 离散点参考线优化 lattice横向距离规划 这段代码包含了三个程序我们将分别对它们进行详细的分析。 1. 最速降线问题求解 这个程序的主要功能是通过优化算法求解最速降线问题。它应用于物理学、工程学和数学等领域用于确定两个给定点之间的最速下降路径。 程序的主要思路是通过将路径分成多个小段然后通过优化算法找到每个小段的最佳下降路径。程序首先定义起点和终点的坐标然后根据给定的分段数目将路径分成多个小段。接下来它使用fminunc函数和CostTime函数来进行优化找到最佳的路径。最后程序使用plot函数绘制出找到的路径和解析解的路径。 CostTime函数是目标函数它计算路径的总时间。它通过计算每个小段的长度和速度来计算总时间。程序中的for循环用于计算每个小段的长度并将其加到总时间中。 2. 车辆路径规划 这个程序的主要功能是进行车辆路径规划以避开给定的障碍物。它应用于自动驾驶、机器人导航和交通控制等领域用于确定车辆的最佳路径以避开障碍物并到达目标位置。 程序的主要思路是使用优化算法来找到车辆的最佳路径。程序首先定义车辆的初始位置和障碍物的位置和尺寸。然后它使用循环来计算横向偏移边界以确保车辆不会碰到障碍物。接下来程序使用casadi库来进行优化定义决策变量和目标函数并添加约束条件。最后程序使用plot函数绘制出找到的路径和障碍物。 3. 参考点路径规划 这个程序的主要功能是进行参考点路径规划以使车辆按照给定的参考点行驶。它应用于自动驾驶、机器人导航和路径规划等领域用于确定车辆的最佳路径以便它按照给定的参考点行驶。 程序的主要思路是使用优化算法来找到车辆的最佳路径。程序首先定义参考点的坐标和车辆的初始状态和终点状态。然后它使用casadi库来进行优化定义决策变量和目标函数并添加约束条件。最后程序使用plot函数绘制出找到的路径和参考点。 以上是对给定代码的详细分析和解释。这些程序涉及到的知识点包括优化算法、数值计算、路径规划和绘图等。希望这些解释对你有帮助

更多文章