尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

纯NumPy+Matplotlib实现智能路径跟踪:python_simple_mppi 跟随案例源码逐行精讲

纯NumPy+Matplotlib实现智能路径跟踪:python_simple_mppi 跟随案例源码逐行精讲 纯NumPyMatplotlib实现智能路径跟踪python_simple_mppi 跟随案例源码逐行精讲【免费下载链接】python_simple_mppiPython implementation of MPPI (Model Predictive Path-Integral) controller to understand the basic idea. Mandatory dependencies are numpy and matplotlib only.项目地址: https://gitcode.com/gh_mirrors/py/python_simple_mppipython_simple_mppi是一个用纯 NumPy Matplotlib 实现 MPPIModel Predictive Path-Integral模型预测路径积分控制器的教学级项目核心功能是让一辆小车沿参考路径进行路径跟踪。全文仅依赖numpy与matplotlib两个库是理解采样式最优控制与智能路径跟踪算法的绝佳入门案例。一、MPPI 路径跟踪算法核心思想 3 句话讲透MPPI 属于采样式模型预测控制每个控制周期做三件事采样在上一步控制序列上加高斯噪声生成 K 条候选控制序列本项目默认 500~1000 条滚动仿真用车辆运动学模型预测每条候选序列 T 步的轨迹计算总代价与参考路径的横向/航向/速度偏差加权更新按代价指数权重更新控制序列取第一个输入执行下一周期再重复。整个过程不需要解析雅可比、不需要 Hessian只靠采样 统计就能逼近最优轨迹这正是它在自动驾驶、机器人智能路径跟踪中广受欢迎的原因。二、环境搭建一键安装步骤项目使用uv管理依赖安装只需 3 行命令需要 Python 3.10git clone https://gitcode.com/gh_mirrors/py/python_simple_mppi cd python_simple_mppi uv sync依赖极简numpy、matplotlib、notebook见 pyproject.toml。如需保存 mp4 动画额外安装ffmpeg即可。三、文件地图跟随案例的关键源码在哪文件作用scripts/mppi_pathtracking.pyMPPI 路径跟踪控制器核心算法逐行精讲主角scripts/pathtracking_kbm.py车辆环境运动学自行车模型 Matplotlib 可视化/动画data/ovalpath.csv椭圆参考路径1201 个路点含 x/y/yaw/参考速度 vnotebooks/mppi_pathtracking.ipynb带数学推导的 Jupyter 讲解笔记运行方式uv run scripts/mppi_pathtracking.py四、车辆模型逐行精讲scripts/pathtracking_kbm.pyVehicle类实现了运动学自行车模型状态为[x, y, yaw, v]控制输入为[steer, accel]。核心状态更新update方法与控制器内_F完全一致new_x x v * np.cos(yaw) * dt new_y y v * np.sin(yaw) * dt new_yaw yaw v / l * np.tan(steer) * dt new_v v accel * dtlwheel_base2.5m是轴距tan(steer)/l即转向几何输入先被np.clip限幅转向角 ±0.523 rad约 30°加速度 ±2 m/s²append_frame用 Matplotlib 绘制车身、车轮、参考路径虚线与 MPPI 预测轨迹save_animation导出 mp4。五、控制器核心逐行精讲scripts/mppi_pathtracking.py5.1 关键参数构造函数horizon_step_T20预测视界秒数×0.1snumber_of_samples_K500采样条数越多越准但越慢param_lambda100权重平滑度越大越民主越小越集中于最优样本param_alpha0.98折中系数gamma lambda*(1-alpha)用于正则项sigma[[0.075,0],[0,2.0]]转向/加速度噪声方差决定探索范围stage_cost_weight[50,50,1,20]x、y、yaw、v 的代价权重。5.2 calc_control_input主循环 6 步拆解第 1 步 · 找最近路点_get_nearest_waypoint从当前路点起向前搜 200 个路点取欧氏距离最小者保证参考点只前进不回退。第 2 步 · 采样噪声np.random.multivariate_normal一次生成 K×T 的噪声矩阵epsilon。第 3 步 · 滚动仿真对每条样本从观测状态出发v[k,t] u[t] epsilon[k,t]逐步执行x self._F(x, self._g(v))累加每步代价S[k] c(x) gamma*u^T Σ⁻¹ v正则项防止序列漂移过远。第 4 步 · 信息论权重_compute_weightsMPPI 的灵魂w[k] exp(-(S[k]-rho)/lambda) / sum(exp(-(S[j]-rho)/lambda))最优样本S 最小权重最高差样本被指数衰减——这就是路径积分。第 5 步 · 更新与平滑u Σ w[k]*epsilon[k,t]即按权重把噪声拉向好样本再经 10 点滑动平均滤波_moving_average_filter平滑输出u[0]给车辆。第 6 步 · 滚动窗口u_prev[:-1] u[1:]左移一位下一周期复用节省采样开销。5.3 代价函数细节_c阶段代价与_phi终端代价结构相同横向/纵向位置误差 ×50、航向误差 ×1用atan2(sin, cos)规整到 [-π,π]、速度误差 ×20。六、参数调优速查表想让小车……调什么贴得更紧调大stage_cost_weight的 x/y 项更顺滑调大param_lambda、加大滤波窗口更激进调大sigma噪声方差更快牺牲精度减小K采样数或horizon_step_T七、下一步进阶案例推荐避障版scripts/mppi_pathtracking_obav.py圆形障碍物 碰撞惩罚单摆摆起、小车立杆scripts/mppi_pendulum.py、scripts/mppi_cartpole.py想看完整数学推导打开notebooks/mppi_pathtracking.ipynb即可边读边运行。只需 NumPy 和 Matplotlib 两个库你已拥有理解 MPPI 路径跟踪算法所需的一切。动手调参看小车如何学会贴住椭圆跑吧【免费下载链接】python_simple_mppiPython implementation of MPPI (Model Predictive Path-Integral) controller to understand the basic idea. Mandatory dependencies are numpy and matplotlib only.项目地址: https://gitcode.com/gh_mirrors/py/python_simple_mppi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表