基于carsim Simulink联合仿真和预瞄PID算法的轨迹跟踪模型】车辆路径跟踪包括主车...
基于carsim Simulink联合仿真和预瞄PID算法的轨迹跟踪模型】车辆路径跟踪包括主车的纵向和横向运动控制纵向控制是通过调整轮毂电机的扭矩使得车辆以期望的速度行驶横向控制是通过调整主车的转向使主车沿预期的轨迹行驶。 本模型以分布式轮毂电机车辆为对向结合车辆运动学的知识对主车进行横纵向控制基于PID控制策略设计路径跟踪控制器和联合仿真并实现整个系统的闭环仿真与分析适合初学者实验学习或者研究生工程师再此基础上进行改进分析。 文档详实代码规范欢迎。方向盘在手里搓到冒汗后视镜里甩尾扬起的尘土还没散尽这大概就是每个车控工程师的日常。咱们今天不玩虚的直接上手调教那个总跟你对着干的四轮机器——基于CarSim和Simulink的轨迹跟踪模型这次玩点带预瞄的PID花活。先拆解这个模型的骨架纵向靠四个轮毂电机扭力分配横向则玩转向角魔术。重点在于这两个控制器的配合得像交响乐指挥这里我直接把控制器的核心代码摊开来说% 纵向PID控制器核心 function torque longitudinal_pid(v_current, v_target) persistent integral error_prev; Kp 1.2; Ki 0.05; Kd 0.3; error v_target - v_current; integral integral error * 0.01; % 10ms周期 torque Kp*error Ki*integral Kd*(error - error_prev)/0.01; error_prev error; % 扭矩分配策略 torque torque_distribution(torque, steering_angle); % 根据转向角动态分配 end这个PID最骚的操作在扭矩分配函数里藏着——当方向盘打到30度时外侧轮扭矩会自动增加15%这种动态分配比驾校教练踩副刹还及时。新手常栽在Ki参数上记住积分项别超过目标速度的1/5否则加速时那推背感能让你把早饭吐出来。横向控制才是真正的战场预瞄算法就像给车装了千里眼% 预瞄点计算简化版 function [lookahead_x, lookahead_y] get_lookahead(path, current_pos) lookahead_time 1.5; % 老司机预判距离 target_speed 60/3.6; % m/s preview_distance target_speed * lookahead_time; [~, nearest_idx] min(vecnorm(path - current_pos, 2, 2)); cumulative_dist 0; for i nearest_idx:length(path) if i 1 step norm(path(i,:) - path(i-1,:)); cumulative_dist cumulative_dist step; if cumulative_dist preview_distance lookahead_x path(i,1); lookahead_y path(i,2); return; end end end end这段代码里的预瞄时间参数是个玄学参数雨天调到2.0秒能救命赛道日缩到0.8秒才够犀利。注意for循环里的路径点遍历——这里藏着新手最容易踩的坑路径点间隔必须小于预瞄距离否则你的车会像没头苍蝇乱窜。基于carsim Simulink联合仿真和预瞄PID算法的轨迹跟踪模型】车辆路径跟踪包括主车的纵向和横向运动控制纵向控制是通过调整轮毂电机的扭矩使得车辆以期望的速度行驶横向控制是通过调整主车的转向使主车沿预期的轨迹行驶。 本模型以分布式轮毂电机车辆为对向结合车辆运动学的知识对主车进行横纵向控制基于PID控制策略设计路径跟踪控制器和联合仿真并实现整个系统的闭环仿真与分析适合初学者实验学习或者研究生工程师再此基础上进行改进分析。 文档详实代码规范欢迎。联合仿真时的通信配置才是隐藏BOSS战CarSim的输出端口配置错一个Simulink模型能给你表演灵魂出窍。这里分享个祖传配置模板%% CarSim联机配置 csim_port 10000; csim_interface tcpip(127.0.0.1, csim_port, NetworkRole, server); set(csim_interface,OutputBufferSize, 2048); fopen(csim_interface); % 关键数据帧结构 struct_def struct(... time, 0, ... steer_angle, single(0), ... torque_FL, single(0), ... torque_FR, single(0), ... torque_RL, single(0), ... torque_RR, single(0));注意那个single精度设定——用double精度CarSim能当场死给你看。传输频率别超过100Hz否则TCP/IP通道会堵得比早高峰的北五环还惨。当看到仿真曲线终于完美贴合目标路径时别急着开香槟。调参党的终极考验才刚刚开始试着把纵向控制切到滑模控制横向换成MPC看看帧率会不会崩。这堆代码最妙的地方就在扩展性——把PID类改个继承就能接入新算法比改装车简单多了。仿真结果分析部分突然黑屏——别慌这通常是轮胎模型参数溢出检查下你输入的摩擦系数是不是手滑多打了个零。玩车控的谁没经历过几次仿真器崩溃呢
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2463071.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!