
✨ 长期致力于自治水下运载器-机械手系统、UVMS、冗余系统、浮游系统、运动学规划、轨迹跟踪、非线性鲁棒控制、连续性时延估计、离散时延估计、终端滑模控制研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1基于模糊多任务加权投影梯度法的UVMS运动学规划针对自治水下运载器-机械手系统具有运动学冗余自由度任务空间维度且多个任务存在冲突的问题提出一种模糊加权投影梯度法。主任务设定为机械手末端执行器跟踪期望轨迹次要约束包括避开关节限位、最小化运载器姿态变化、避开奇异位形等。传统加权投影梯度法需要人工设定固定权重难以适应动态环境。本方法设计模糊推理系统动态调整各次要任务的权重输入为各约束的当前接近程度归一化到[0,1]输出为权重调整系数。隶属度函数采用高斯型模糊规则表通过专家经验制定共27条规则。在仿真中UVMS有8个自由度运载器6DOF机械手2DOF末端执行器跟踪一条圆形轨迹。模糊动态权重法使机械手关节速度幅值从固定权重的0.25rad/s减小到0.18rad/s且没有发生关节限位违反。运载器姿态变化幅度降低32%末端跟踪误差从2.3cm减小到1.1cm。该算法计算时间每步约8ms可实时运行。2基于连续时延估计的终端滑模鲁棒跟踪控制为解决UVMS动力学模型参数不确定和外部扰动如洋流、缆线干扰问题设计一种基于时延估计的终端滑模控制器TDE-TSMC。时延估计技术利用前几个采样时刻的系统状态和输入来估计当前的集总动态包括未知动力学和扰动无需精确模型。采用非奇异终端滑模面 s e beta * e^(p/q)其中e为轨迹跟踪误差beta10p5q3确保有限时间收敛。控制律为 u u_{tde} u_{sm}其中u_{tde}基于时延估计补偿动态u_{sm}为滑模项包含饱和函数防抖振。采样时间设定为5ms时延步长L3。在仿真中加入时变洋流干扰最大流速0.5m/s和20%参数摄动TDE-TSMC的末端跟踪误差稳态值为±3mm收敛时间0.8秒而传统PD控制器误差为±12mm收敛时间2秒。与基于TDE的PD相比TDE-TSMC的误差峰值减小35%。水池试验中机械手抓取水下目标时在突加扰动下仍能保持轨迹跟踪误差小于5mm证明了鲁棒性。3基于离散时延估计的无加速度测量控制与协调控制策略集成鉴于实际UVMS不配备加速度传感器连续TDE需要加速度信息通过位置差分获得会放大噪声提出一种离散时延估计控制方案DTDE。离散TDE直接利用前一时刻的输入和位置/速度量不需要加速度。控制器形式为 u(k) u(k-1) M*( e(k) - e(k-1) Kd*(v(k)-v(k-1)) )其中M为估计的惯性矩阵可用常数对角阵。稳定性分析表明只要采样频率足够高100HzDTDE的估计误差有界。将DTDE与终端滑模结合形成DTDE-TSMC在仿真中与连续TDE方案对比在相同噪声水平信噪比30dB下DTDE-TSMC的位置均方根误差为0.6mm连续TDE为1.2mm因为噪声放大更小。最后将运动学规划算法模糊加权投影梯度与DTDE-TSMC结合形成完整的UVMS协调控制策略在抓取任务仿真中运载器浮游机械手接近目标末端执行器轨迹跟踪误差RMS为1.3mm且运载器姿态变化不超过2度协调性能优良。该策略已成功应用于ROV模拟器。import numpy as np from scipy.integrate import odeint def fuzzy_weighted_gradient(primary_task_jacobian, secondary_jacobians, error_primary, errors_secondary): # 模糊动态权重投影梯度法 # 计算模糊权重简化 w_secondary [] for err in errors_secondary: # 隶属度函数三角形err在[0,1] if err 0.3: w 1.0 elif err 0.7: w 1.5 - 1.67*err else: w 0.3 w_secondary.append(w) # 加权投影梯度 Jp primary_task_jacobian Js np.vstack(secondary_jacobians) W np.diag(w_secondary) # 投影矩阵 P np.eye(Jp.shape[1]) - np.linalg.pinv(Jp) Jp q_dot np.linalg.pinv(Jp) error_primary P (np.linalg.pinv(Js) (W errors_secondary)) return q_dot def tde_tsmc_controller(q, q_des, q_dot, q_dot_des, prev_u, prev_tde, dt, M_hat10): # 基于连续时延估计的终端滑模控制 e q_des - q e_dot q_dot_des - q_dot # 终端滑模面 beta 10; p5; q_3 s e_dot beta * e**(p/q_) # 时延估计 if prev_tde is None: tde 0 else: tde prev_u - M_hat * (q_dot - prev_q_dot) / dt # 简化 # 滑模控制律 eta 5; k 2 sat np.clip(s/0.05, -1, 1) u_sm M_hat * (eta * sat k * s) u tde u_sm return u, tde def dtd_tsmc_controller(q, q_des, q_dot, q_dot_des, u_prev, e_prev, v_prev, M_hat10, Kd5): # 离散时延估计控制器 e q_des - q v q_dot_des - q_dot # 终端滑模面离散形式 beta10; p5; q_3 s v beta * e**(p/q_) # 离散TDE tde u_prev - M_hat * (v - v_prev) # 控制律 u tde M_hat * (Kd * (e - e_prev) 2 * s) return u, e, v # 模拟数据 q_sim np.array([0.1, 0.2, 0.3]) q_des_sim np.array([0.15, 0.22, 0.28]) qdot_sim np.array([0.01,0.02,0.03]) qdot_des_sim np.array([0.02,0.02,0.02]) u, _ tde_tsmc_controller(q_sim, q_des_sim, qdot_sim, qdot_des_sim, 0, None, 0.005) print(TDE-TSMC 控制输出:, u)