恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

python的工业过程控制场景模拟第一百二十五篇:机器人仿真平台搭建,模拟船舶机舱巡检机器人,适应船舶摇摆环境调整运动算法。

  • 首页
  • 资讯中心
  • /
  • python的工业过程控制场景模拟第一百二十五篇:机器人仿真平台搭建,模拟船舶机舱巡检机器人,适应船舶摇摆环境调整运动算法。

相关资讯

python的工业过程控制场景模拟第一百二十四篇,机械臂轨迹前馈补偿,抵消机械惯性,实现精准快速投料控制。 2026/8/11 13:08:31
python的工业过程控制场景模拟第一百二十一篇:机械臂任务优先级管理,紧急取样任务打断常规巡检动作优先执行。 2026/8/11 13:08:31
给大棚装上“千里眼”:国标GB28181视频平台EasyCVR如何帮你远程看棚、智能盯苗? 2026/8/11 13:08:31

最新资讯

GitHub Desktop中文汉化终极指南:三分钟让官方Git客户端说中文
从zhangheng2到专业项目:技术命名规范与版本控制实践
RTL88x2BU驱动解决方案:让Linux无线网卡重获新生
MFCUK技术深度解析:MiFare Classic安全研究的密码学实践与架构设计
瀑布模型与敏捷开发:如何选择最适合的软件开发生命周期模型
如何快速获取明日方舟2000+高清游戏素材:完整资源库使用指南

今日推荐

《人工智能导论:深度学习大模型基础》全套PPT课件2026
9.5 技术债务的重构:何时该动一次大手术
如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

本周热门

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁
如何快速生成中国车牌图片:Python开源工具完整指南
当 LLM 遇见大文档:主流开源项目如何处理上下文超限

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

python的工业过程控制场景模拟第一百二十五篇:机器人仿真平台搭建,模拟船舶机舱巡检机器人,适应船舶摇摆环境调整运动算法。

发布时间:2026/8/11 13:08:31
python的工业过程控制场景模拟第一百二十五篇:机器人仿真平台搭建,模拟船舶机舱巡检机器人,适应船舶摇摆环境调整运动算法。 船舶机舱巡检机器人运动仿真基于哈工程《工业过程控制》的摇摆环境自适应算法“船舶在风浪中横摇±15°机舱内设备振动剧烈巡检机器人若按陆地算法行走轻则定位漂移重则侧翻坠舱。”—— 基于哈尔滨工程大学《工业过程控制》第七章“自适应控制”与第九章“非线性系统控制”一、实际应用场景描述在远洋船舶、科考船、航母、潜艇等水面/水下航行器中机舱是动力核心区域也是巡检机器人替代人工的高价值场景┌──────────────────────────────────────────────────────┐│ 船舶机舱巡检机器人仿真系统架构 ││ ││ [船舶运动环境模拟] ││ • 横摇Roll: ±15°~±30°风浪等级3~6级 ││ • 纵摇Pitch: ±5°~±10° ││ • 垂荡Heave: ±0.5m~±2m ││ • 周期: 4s~12s海况相关 ││ • 随机扰动: 海浪谱PM谱/JONSWAP谱 ││ │ ││ ▼ ││ ┌──────────────────────────────────────────┐ ││ │ 运动学/动力学解算模块 │ ││ │ • 船舶-机器人坐标变换旋转矩阵 │ ││ │ • 重力分量实时计算 │ ││ │ • 摩擦力动态修正 │ ││ │ • 惯性力补偿科氏力、离心力 │ ││ └──────────────┬───────────────────────────┘ ││ │ ││ ▼ ││ ┌──────────────────────────────────────────┐ ││ │ 自适应运动控制器核心 │ ││ │ ┌────────────┐ ┌────────────┐ │ ││ │ │ 姿态感知 │ │ 自适应PID │ │ ││ │ │ • IMU数据 │ │ • 增益调度 │ │ ││ │ │ • 倾角解算 │ │ • 抗积分饱和│ │ ││ │ └────────────┘ └────────────┘ │ ││ │ │ │ │ ││ │ ▼ ▼ │ ││ │ ┌────────────────────────────────────┐ │ ││ │ │ 摇摆补偿算法 │ │ ││ │ │ • 重力投影修正 │ │ ││ │ │ • 速度前馈补偿 │ │ ││ │ │ • 摩擦力自适应调节 │ │ ││ │ └────────────────────────────────────┘ │ ││ └──────────────┬───────────────────────────┘ ││ │ ││ ▼ ││ ┌──────────────────────────────────────────┐ ││ │ 机器人本体模型 │ ││ │ • 差速驱动/全向轮底盘 │ ││ │ • 6自由度IMU姿态感知 │ ││ │ • 编码器里程计 │ ││ │ • 避障传感器激光/超声 │ ││ └──────────────┬───────────────────────────┘ ││ │ ││ ▼ ││ ┌──────────────────────────────────────────┐ ││ │ 上位机监控系统 │ ││ │ • 3D可视化船舶机器人 │ ││ │ • 实时姿态曲线 │ ││ │ • 控制参数在线调整 │ ││ │ • 巡检路径规划与任务管理 │ ││ └──────────────────────────────────────────┘ ││ ││ 典型巡检流程: ││ 1. 船舶航行中IMU实时采集姿态数据 ││ 2. 解算船舶横摇/纵摇/垂荡角度 ││ 3. 自适应控制器调整电机输出补偿重力分量 ││ 4. 机器人沿预定路径巡检避障路径跟踪 ││ 5. 到达设备点稳定停靠执行检测任务 ││ 6. 返回充电坞自动对接充电 │└──────────────────────────────────────────────────────┘典型应用场景场景 船舶类型 摇摆强度 控制难点远洋货轮机舱 散货船/油轮 中±10°~±15° 长距离巡检路径保持科考船实验室 科考船 强±20°~±30° 精密仪器避碰稳定停靠航母机舱 航空母舰 中强±15°~±25° 高可靠性抗冲击潜艇舱室 潜艇 弱±5°~±10° 空间狭窄避障复杂海上风电运维船 运维船 极强±25°~±35° 短时大角度摇摆紧急避障二、引入痛点2.1 现场的真实困境场景 现场反馈 根因“站不住” “机器人刚走到设备前船一晃就滑出去半米” 重力分量变化摩擦力不足“走不直” “设定直线行走结果走成了S形” 横摇导致左右轮受力不均“翻跟头” “大角度横摇时机器人直接侧翻” 重心偏移稳定性不足“停不稳” “到达目标点后船晃一下就又动了” 积分饱和抗干扰差“能耗高” “为了对抗摇摆电机一直满负荷运行” 控制策略未考虑重力补偿“易损坏” “频繁急加速急停减速机半年就坏了” 惯性冲击大机械寿命短2.2 核心矛盾船舶机舱巡检机器人的核心矛盾是“动态海洋环境”与“稳定运动控制”之间的不匹配。陆地机器人的运动控制假设地面静止而船舶环境存在周期性摇摆和随机扰动传统控制算法在摇摆环境下性能急剧下降。2.3 三种解决思路对比思路 核心思想 优势 劣势被动适应 降低速度增大摩擦 简单可靠成本低 效率低适应性差主动补偿 基于IMU实时调整 响应快适应性强 依赖传感器精度自适应控制 参数在线调整 鲁棒性强适应复杂海况 算法复杂调参难三、核心逻辑讲解3.1 理论基础自适应控制与船舶运动模型本工具基于哈工程《工业过程控制》第七章“自适应控制”与第九章“非线性系统控制”① 船舶摇摆运动模型船舶在规则波中的横摇运动可简化为二阶线性系统\ddot{\phi} 2\zeta\omega_n\dot{\phi} \omega_n^2\phi K_\omega\omega^2\theta_0\cos(\omega t)其中- \phi 横摇角Roll- \zeta 阻尼比通常0.05~0.1- \omega_n 固有频率与船型相关- \omega 波浪频率- \theta_0 波浪幅值- K_\omega 频率响应函数离散化实现后向差分# 横摇角更新phi[k] (2*phi[k-1] - phi[k-2] (dt**2)*(Kw*omega**2*theta0*cos(omega*t[k]) -2*zeta*omega_n*(phi[k-1]-phi[k-2])/dt -omega_n**2*phi[k-1])) / (1 2*zeta*omega_n*dt omega_n**2*dt**2)② 重力分量补偿原理在摇摆坐标系下重力矢量分解为\vec{g}_{body} R_{world}^{body} \cdot \vec{g}_{world}其中旋转矩阵 R_{world}^{body} 由横摇角 \phi 、纵摇角 \theta 、艏摇角 \psi 组成R R_z(\psi)R_y(\theta)R_x(\phi)重力在机器人坐标系下的分量为g_x g \sin\theta \quad (\text{前后方向})g_y -g \sin\phi \cos\theta \quad (\text{左右方向})g_z -g \cos\phi \cos\theta \quad (\text{垂直方向})③ 自适应PID控制基于MIT规则模型参考自适应控制\dot{K}_p -\gamma_p e \frac{\partial e}{\partial u} u\dot{K}_i -\gamma_i e \frac{\partial e}{\partial u} \int e dt\dot{K}_d -\gamma_d e \frac{\partial e}{\partial u} \frac{de}{dt}其中 \gamma_p, \gamma_i, \gamma_d 为自适应增益 \frac{\partial e}{\partial u} 为灵敏度导数。工程简化形式增益调度K_p K_{p0} K_{p\phi}|\phi| K_{p\theta}|\theta|K_i K_{i0} K_{i\phi}|\phi| K_{i\theta}|\theta|K_d K_{d0} K_{d\phi}|\phi| K_{d\theta}|\theta|3.2 摇摆环境下的运动学修正摇摆环境下差速机器人运动学修正:1. 世界坐标系船舶固定:• X轴: 船首方向• Y轴: 右舷方向• Z轴: 垂直向上2. 机器人坐标系随船摇摆:• x轴: 机器人前进方向• y轴: 机器人右侧方向• z轴: 机器人垂直向上3. 坐标变换旋转矩阵:R Rz(ψ)·Ry(θ)·Rx(φ)其中:Rx(φ) [[1, 0, 0],[0, cφ, -sφ],[0, sφ, cφ]] # 横摇Ry(θ) [[cθ, 0, sθ],[0, 1, 0],[-sθ, 0, cθ]] # 纵摇Rz(ψ) [[cψ, -sψ, 0],[sψ, cψ, 0],[0, 0, 1]] # 艏摇4. 重力分量计算:g_world [0, 0, -9.81] # 世界坐标系重力g_body R^T · g_world # 机器人坐标系重力g_x g_body[0] # 前后方向重力分量g_y g_body[1] # 左右方向重力分量g_z g_body[2] # 垂直方向重力分量5. 摩擦力动态修正:• 法向力: F_n m·|g_z| 惯性力补偿• 摩擦力: F_f μ·F_n• 有效驱动力: F_drive min(F_motor, F_f)6. 速度前馈补偿:• 横摇速度: ω_roll dφ/dt• 补偿力矩: τ_comp J·ω_roll² b·ω_roll• 其中J为转动惯量b为阻尼系数7. 控制量合成:u_left Kp·e_left Ki·∫e_left Kd·de_left/dt u_ff_leftu_right Kp·e_right Ki·∫e_right Kd·de_right/dt u_ff_right其中前馈项:u_ff_left Kv·v_ref - Kg·g_y Ka·a_refu_ff_right Kv·v_ref Kg·g_y Ka·a_refKg为重力补偿增益与机器人质量和重力分量相关3.3 自适应控制算法流程自适应摇摆补偿控制流程:输入: 目标速度v_ref, 目标角速度ω_ref, IMU数据(φ,θ,ψ,ω_x,ω_y,ω_z)Step 1: 船舶姿态解算φ, θ, ψ IMU.get_roll_pitch_yaw()ω_roll, ω_pitch, ω_yaw IMU.get_angular_velocity()Step 2: 重力分量计算g_body R(φ,θ,ψ)^T · [0,0,-g]g_x g_body[0] # 前后分量g_y g_body[1] # 左右分量关键Step 3: 自适应增益计算基于MIT规则简化Kp Kp0 Kp_φ·|φ| Kp_θ·|θ|Ki Ki0 Ki_φ·|φ| Ki_θ·|θ|Kd Kd0 Kd_φ·|φ| Kd_θ·|θ|Step 4: 速度前馈补偿v_ff Kv · v_ref # 速度前馈a_ff Ka · a_ref # 加速度前馈g_ff_left -Kg · g_y # 重力补偿左轮g_ff_right Kg · g_y # 重力补偿右轮Step 5: PID反馈控制e_left v_ref - v_lefte_right v_ref - v_rightu_fb_left Kp·e_left Ki·∫e_left Kd·de_left/dtu_fb_right Kp·e_right Ki·∫e_right Kd·de_right/dtStep 6: 控制量合成u_left u_fb_left v_ff a_ff g_ff_leftu_right u_fb_right v_ff a_ff g_ff_rightStep 7: 输出限幅与抗饱和u_left sat(u_left, u_min, u_max)u_right sat(u_right, u_min, u_max)Step 8: 摩擦力约束检查F_available μ · m · |g_z|if |u_left| F_available: u_left sign(u_left)·F_availableif |u_right| F_available: u_right sign(u_right)·F_availableStep 9: 输出至电机Motor_left.set_speed(u_left)Motor_right.set_speed(u_right)Step 10: 稳定性监测if |φ| φ_max or |θ| θ_max:触发紧急停止/稳定模式关键参数:• Kp0, Ki0, Kd0: 基础PID增益• Kp_φ, Kp_θ: 横摇/纵摇对比例增益的影响系数• Kv: 速度前馈增益≈1/K_motor• Ka: 加速度前馈增益≈T_motor/K_motor• Kg: 重力补偿增益≈m·r_wheel质量×轮半径• μ: 摩擦系数橡胶轮在钢甲板上约0.6~0.8四、代码讲解面向对象设计4.1 类结构总览类名 职责 设计模式ShipMotionConfig 船舶运动配置dataclass 值对象RobotConfig 机器人配置dataclass 值对象ControlMode 控制模式枚举 枚举类型MotionState 运动状态dataclass 值对象ShipMotionSimulator 船舶摇摆模拟器 单一职责IMUSensor IMU传感器模拟 单一职责AdaptivePIDController 自适应PID控制器 策略模式DifferentialDriveRobot 差速机器人模型 单一职责SwingCompensationController 摇摆补偿控制器聚合根 聚合根MarineInspectionSimulator 机舱巡检仿真器 外观模式4.2 核心代码精简版CSDN友好完整源码约 350 行单文件包含 9 个核心类 完整仿真逻辑。以下为关键类摘录完整代码见附件。船舶机舱巡检机器人运动仿真摇摆环境自适应控制参考哈尔滨工程大学《工业过程控制》第七章自适应控制from dataclasses import dataclass, fieldfrom typing import Tuple, Optional, List, Dict, Anyfrom enum import Enum, autoimport numpy as npimport matplotlib.pyplot as pltfrom collections import dequeimport loggingimport mathimport time# # 1. 基础数据结构枚举与值对象# class ControlMode(Enum):控制模式FIXED_PID 固定PID陆地模式ADAPTIVE_PID 自适应PID摇摆补偿EMERGENCY_STOP 紧急停止dataclassclass ShipMotionConfig:船舶运动配置基于哈工程船舶原理# 横摇参数规则波roll_amplitude: float 15.0 # 横摇幅值度roll_period: float 8.0 # 横摇周期秒roll_damping: float 0.08 # 横摇阻尼比roll_natural_freq: float 0.8 # 横摇固有频率rad/s# 纵摇参数pitch_amplitude: float 5.0 # 纵摇幅值度pitch_period: float 10.0 # 纵摇周期秒# 垂荡参数heave_amplitude: float 0.5 # 垂荡幅值米heave_period: float 6.0 # 垂荡周期秒# 随机扰动海浪谱wave_spectrum_type: str PM # Pierson-Moskowitz谱significant_wave_height: float 2.0 # 有义波高米# 仿真参数sample_time: float 0.01 # 采样时间秒gravity: float 9.81 # 重力加速度m/s²dataclassclass RobotConfig:巡检机器人配置# 物理参数mass: float 25.0 # 机器人质量kgwheel_radius: float 0.1 # 轮半径mwheel_base: float 0.4 # 轮距mcenter_of_mass_height: float 0.3 # 重心高度m# 摩擦参数friction_coefficient: float 0.7 # 橡胶轮-钢甲板摩擦系数static_friction: float 0.8 # 静摩擦系数kinetic_friction: float 0.6 # 动摩擦系数# 电机参数max_motor_torque: float 5.0 # 最大电机转矩Nmmotor_constant: float 0.5 # 电机转矩常数Nm/Amotor_time_constant: float 0.1 # 电机时间常数s# 控制参数max_velocity: float 1.0 # 最大速度m/smax_acceleration: float 2.0 # 最大加速度m/s²dataclassclass MotionState:机器人运动状态timestamp: float 0.0x: float 0.0 # 世界坐标系X位置船首方向y: float 0.0 # 世界坐标系Y位置右舷方向yaw: float 0.0 # 艏向角弧度v_x: float 0.0 # X方向速度v_y: float 0.0 # Y方向速度omega: float 0.0 # 角速度roll: float 0.0 # 横摇角弧度pitch: float 0.0 # 纵摇角弧度heave: float 0.0 # 垂荡位移米left_wheel_vel: float 0.0 # 左轮速度rad/sright_wheel_vel: float 0.0 # 右轮速度rad/sleft_motor_cmd: float 0.0 # 左电机指令right_motor_cmd: float 0.0 # 右电机指令def to_dict(self) - Dict:转换为字典return {timestamp: round(self.timestamp, 3),x: round(self.x, 3),y: round(self.y, 3),yaw_deg: round(math.degrees(self.yaw), 1),roll_deg: round(math.degrees(self.roll), 1),pitch_deg: round(math.degrees(self.pitch), 1),heave: round(self.heave, 3),v_x: round(self.v_x, 3),omega: round(self.omega, 3)}# # 2. 船舶摇摆模拟器单一职责# class ShipMotionSimulator:船舶摇摆运动模拟器基于哈工程《船舶原理》与《工业过程控制》第七章模拟船舶在波浪中的六自由度运动def __init__(self, config: ShipMotionConfig):self.config config# 状态变量横摇二阶系统self.roll 0.0 # 横摇角radself.roll_rate 0.0 # 横摇角速度rad/sself.roll_acc 0.0 # 横摇角加速度rad/s²# 纵摇状态self.pitch 0.0self.pitch_rate 0.0# 垂荡状态self.heave 0.0self.heave_velocity 0.0# 时间self.time 0.0# 波浪参数self.wave_frequency 2 * math.pi / config.roll_periodself.natural_frequency config.roll_natural_freqself.damping_ratio config.roll_dampinglogging.info(f[ShipSim] 船舶摇摆模拟器初始化:)logging.info(f 横摇幅值: ±{config.roll_amplitude}°)logging.info(f 横摇周期: {config.roll_period}s)logging.info(f 阻尼比: {config.roll_damping})def update(self, dt: float) - Tuple[float, float, float]:更新船舶姿态self.time dt# 1. 横摇运动二阶线性系统# 输入波浪扰动力矩wave_moment self._calculate_wave_moment()# 二阶系统离散化后向差分# J*θ b*θ k*θ M_waveJ 1.0 # 等效转动惯量归一化b 2 * self.damping_ratio * self.natural_frequency * Jk self.natural_frequency**2 * J# 离散更新new_roll_acc (wave_moment - b * self.roll_rate - k * self.roll) / Jnew_roll_rate self.roll_rate new_roll_acc * dtnew_roll self.roll new_roll_rate * dtself.roll new_rollself.roll_rate new_roll_rateself.roll_acc new_roll_acc# 2. 纵摇运动简化正弦self.pitch math.radians(self.config.pitch_amplitude) * \math.sin(2 * math.pi * self.time / self.config.pitch_period)self.pitch_rate math.radians(self.config.pitch_amplitude) * \(2 * math.pi / self.config.pitch_period) * \math.cos(2 * math.pi * self.time / self.config.pitch_period)# 3. 垂荡运动简化正弦self.heave self.config.heave_amplitude * \math.sin(2 * math.pi * self.time / self.config.heave_period)self.heave_velocity self.config.heave_amplitude * \(2 * math.pi / self.config.heave_period) * \math.cos(2 * math.pi * self.time / self.config.heave_period)return self.roll, self.pitch, self.heavedef _calculate_wave_moment(self) - float:计算波浪扰动力矩简化模型# 规则波扰动力矩正弦wave_moment math.radians(self.config.roll_amplitude) * \self.natural_frequency**2 * \math.sin(self.wave_frequency * self.time)# 添加随机扰动模拟不规则波if self.config.wave_spectrum_type PM:# Pierson-Moskowitz谱简化random_component 0.1 * np.random.normal(0, 1)wave_moment random_componentreturn wave_momentdef get_rotation_matrix(self) - np.ndarray:获取船舶旋转矩阵世界→船体# 横摇绕X轴cr, sr math.cos(self.roll), math.sin(self.roll)Rx np.array([[1, 0, 0],[0, cr, -sr],[0, sr, cr]])# 纵摇绕Y轴cp, sp math.cos(self.pitch), math.sin(self.pitch)Ry np.array([[cp, 0, sp],[0, 1, 0],[-sp, 0, cp]])# 艏摇绕Z轴此处假设为0cy, sy 1.0, 0.0Rz np.array([[cy, -sy, 0],[sy, cy, 0],[0, 0, 1]])# 组合旋转矩阵ZYX顺序R Rz Ry Rxreturn Rdef get_gravity_vector_body(self) - np.ndarray:获取机器人坐标系下的重力矢量# 世界坐标系重力g_world np.array([0, 0, -self.config.gravity])# 旋转到船体坐标系R self.get_rotation_matrix()g_body R.T g_world # 注意R是世界→船体所以重力变换用R^Treturn g_body# # 3. IMU传感器模拟单一职责# class IMUSensor:IMU传感器模拟提供船舶姿态、角速度、加速度测量def __init__(self, noise_level: float 0.01):self.noise_level noise_level# 传感器参数self.accel_bias np.array([0.0, 0.0, 0.0])self.gyro_bias np.array([0.0, 0.0, 0.0])self.accel_scale np.array([1.0, 1.0, 1.0])self.gyro_scale np.array([1.0, 1.0, 1.0])logging.info(f[IMU] IMU传感器初始化噪声水平: {noise_level})def measure(self, ship_sim: ShipMotionSimulator) - Dict[str, np.ndarray]:测量IMU数据# 获取真实值roll, pitch, heave ship_sim.roll, ship_sim.pitch, ship_sim.heaveroll_rate, pitch_rate ship_sim.roll_rate, ship_sim.pitch_rate# 添加噪声和偏差roll_noisy roll np.random.normal(0, self.noise_level)pitch_noisy pitch np.random.normal(0, self.noise_level)roll_rate_noisy roll_rate np.random.normal(0, self.noise_level * 10)pitch_rate_noisy pitch_rate np.random.normal(0, self.noise_level * 10)# 重力矢量船体坐标系g_body ship_sim.get_gravity_vector_body()# 添加线性加速度垂荡加速度linear_acc np.array([0, 0, ship_sim.heave_velocity])accel_measurement g_body linear_acc# 添加噪声accel_measurement np.random.normal(0, self.noise_level * 5, 3)return {roll: roll_noisy,pitch: pitch_noisy,roll_rate: roll_rate_noisy,pitch_rate: pitch_rate_noisy,acceleration: accel_measurement,gravity_body: g_body}# # 4. 自适应PID控制器策略模式# class AdaptivePIDController:自适应PID控制器基于哈工程《工业过程控制》第七章自适应控制根据船舶摇摆程度在线调整PID参数def __init__(self, base_kp: float 10.0, base_ki: float 1.0,base_kd: float 0.5, sample_time: float 0.01):self.base_kp base_kpself.base_ki base_kiself.base_kd base_kdself.sample_time sample_time# 自适应增益系数横摇/纵摇影响self.kp_roll_gain 0.5 # 横摇对Kp的影响self.kp_pitch_gain 0.3 # 纵摇对Kp的影响self.ki_roll_gain 0.2 # 横摇对Ki的影响self.ki_pitch_gain 0.1 # 纵摇对Ki的影响self.kd_roll_gain 0.3 # 横摇对Kd的影响self.kd_pitch_gain 0.2 # 纵摇对Kd的影响# 状态变量self.integral 0.0self.prev_error 0.0self.prev_output 0.0# 当前自适应参数self.kp base_kpself.ki base_kiself.kd base_kdlogging.info(f[AdaptivePID] 初始化: Kp{base_kp}, Ki{base_ki}, Kd{base_kd})def adapt_gains(self, roll: float, pitch: float):根据船舶姿态自适应调整PID增益# 计算摇摆角度绝对值弧度roll_abs abs(roll)pitch_abs abs(pitch)# 自适应调整基于MIT规则简化# 摇摆越大增益越高增强抗干扰能力self.kp self.base_kp self.kp_roll_gain * roll_abs self.kp_pitch_gain * pitch_absself.ki self.base_ki self.ki_roll_gain * roll_abs self.ki_pitch_gain * pitch_absself.kd self.base_kd self.kd_roll_gain * roll_abs self.kd_pitch_gain * pitch_abs# 限制增益范围self.kp max(0.1, min(self.kp, 50.0))self.ki max(0.01, min(self.ki, 20.0))self.kd max(0.01, min(self.kd, 10.0))def compute(self, error: float, roll: float 0.0, pitch: float 0.0,current_time: float None) - float:计算自适应PID输出if current_time is None:利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号