船舶/无人艇/无人船,线性nomoto响应型操纵运动,回转实验和Z型实验MATLAB仿真程序(...
船舶/无人艇/无人船线性nomoto响应型操纵运动回转实验和Z型实验MATLAB仿真程序欧拉法今天咱们来聊聊船舶运动控制的仿真实现。以无人艇为研究对象的时候线性Nomoto模型就像汽车的方向盘——虽然简化了物理特性但足够实用。先准备点前置知识Nomoto模型用一阶微分方程描述船舶转向特性核心参数K增益系数和T时间常数决定了舵效响应速度。来看个最简单的转向模型实现。打开MATLAB新建脚本先定义几个关键变量dt 0.1; % 时间步长 sim_time 200; % 总时长 K 0.8; T 30; % 货船典型参数 r 0; % 初始转艏率 psi 0; % 初始艏向角 delta 20*pi/180; % 固定舵角35度这里用欧拉法做数值积分最省事。循环体里塞个运动方程for t 1:sim_time/dt dr (K*delta - r)/T * dt; % Nomoto方程微分项 r r dr; psi psi r*dt; % 艏向角积分 % 存储数据备用 yaw_rate(t) r; heading(t) psi; end注意这里的delta是定常舵角对应的是回转实验。跑完这段可以看到典型的指数收敛曲线——就像猛打方向后船头慢慢摆正的过程。但真实的操舵测试可不止这么简单Z型实验要求舵角交替变化得改改输入条件。船舶/无人艇/无人船线性nomoto响应型操纵运动回转实验和Z型实验MATLAB仿真程序欧拉法加个计时器控制舵角翻转steer_flag 0; for t 1:sim_time/dt current_time t*dt; % 每20秒翻转舵角 if mod(current_time,40) 20 delta 20*pi/180; else delta -20*pi/180; end % 后续计算同上... end这时候的艏向角曲线应该呈现锯齿状波动。不过要符合IMO标准的话得严格按照10°/20°的操舵规范来。给各位看个专业点的版本target_heading 10; % 目标艏向偏离量 current_target target_heading; delta_max 20; % 最大舵角限制 for t 1:sim_time/dt % 判断是否到达目标艏向 if abs(heading(t) - current_target) 0.5 current_target -current_target; delta -delta; end % 舵角速率限制 delta sign(delta)*min(abs(delta)5*dt, delta_max); % 更新模型... end这段代码里的0.5度阈值和5度/秒的转舵速率是关键防止出现理想化的瞬时转舵。跑出来的超调量和滞后时间可以直接用来评估船舶操纵性。最后给新人提个醒仿真时时间步长别选太大特别是做Z型这种快速换向的。试过用dt1秒的话数值误差会让曲线抖得像心电图——这时候就得换龙格库塔法了。不过对于教学演示欧拉法已经足够直观啦。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2443557.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!