无人机动态推力分配与倾斜纠正原理详解

作者 :无人机控制系统工程师
标签 :无人机 / 飞控算法 / 推力分配 / 姿态控制 / PID / 四旋翼
发布平台 :CSDN 技术博客
阅读时长:约 15 分钟


目录

### 文章目录

  • [目录](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [@toc](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [一、前言](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [二、四旋翼无人机动力学模型](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [2.1 坐标系定义](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [2.2 六自由度运动方程](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [平移运动(牛顿第二定律)](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [旋转运动(欧拉方程)](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [2.3 电机推力与力矩模型](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [三、动态推力分配原理](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [3.1 什么是推力分配?](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [3.2 静态推力分配(标准解法)](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [3.3 动态推力分配(欠/过驱动系统)](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [最小二乘法(Moore-Penrose 伪逆)](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [加权最小二乘(考虑电机差异)](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [带约束的二次规划(QP)](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [3.4 实时动态分配策略](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [四、倾斜纠正原理](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [4.1 为什么需要倾斜纠正?](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [4.2 姿态估计](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [4.2.1 互补滤波器(Complementary Filter)](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [4.2.2 扩展卡尔曼滤波(EKF)](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [4.3 倾斜纠正控制律](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [4.3.1 姿态误差计算](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [4.3.2 PID 姿态控制器](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [4.4 倾斜补偿:总推力的缩放修正](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [4.5 重心偏移的自动学习补偿](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [五、完整控制框架](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [六、工程调参指南](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [6.1 PID 调参步骤](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [6.2 常见问题排查](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [6.3 推力分配调参注意事项](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [七、进阶话题](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [7.1 倾转旋翼无人机的扩展推力分配](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [7.2 基于模型预测控制(MPC)的一体化分配](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [7.3 强化学习在推力分配中的应用](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [八、总结](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)
  • [参考资料](#文章目录 目录 @[toc] 一、前言 二、四旋翼无人机动力学模型 2.1 坐标系定义 2.2 六自由度运动方程 平移运动(牛顿第二定律) 旋转运动(欧拉方程) 2.3 电机推力与力矩模型 三、动态推力分配原理 3.1 什么是推力分配? 3.2 静态推力分配(标准解法) 3.3 动态推力分配(欠/过驱动系统) 最小二乘法(Moore-Penrose 伪逆) 加权最小二乘(考虑电机差异) 带约束的二次规划(QP) 3.4 实时动态分配策略 四、倾斜纠正原理 4.1 为什么需要倾斜纠正? 4.2 姿态估计 4.2.1 互补滤波器(Complementary Filter) 4.2.2 扩展卡尔曼滤波(EKF) 4.3 倾斜纠正控制律 4.3.1 姿态误差计算 4.3.2 PID 姿态控制器 4.4 倾斜补偿:总推力的缩放修正 4.5 重心偏移的自动学习补偿 五、完整控制框架 六、工程调参指南 6.1 PID 调参步骤 6.2 常见问题排查 6.3 推力分配调参注意事项 七、进阶话题 7.1 倾转旋翼无人机的扩展推力分配 7.2 基于模型预测控制(MPC)的一体化分配 7.3 强化学习在推力分配中的应用 八、总结 参考资料)

一、前言

随着多旋翼无人机在航拍、物流、巡检等领域的广泛应用,其飞控系统的稳定性与可靠性变得至关重要。在众多飞控核心算法中,动态推力分配(Dynamic Thrust Allocation)倾斜纠正(Tilt Correction) 是保证无人机姿态稳定、响应灵敏的两大关键技术。

本文将从物理建模出发,结合控制理论,系统讲解:

  • 四旋翼无人机的动力学模型
  • 动态推力分配的数学原理与工程实现
  • 倾斜纠正的姿态估计与闭环控制
  • 常见问题与调参技巧

💡 适合读者:有一定线性代数、控制理论基础,对无人机飞控算法感兴趣的工程师或研究者。


二、四旋翼无人机动力学模型

2.1 坐标系定义

分析无人机运动需要明确两个坐标系:

坐标系 符号 说明
世界坐标系(NED/ENU) W \mathcal{W} W 固定于地面,惯性坐标系
机体坐标系 B \mathcal{B} B 固定于无人机质心,随机体旋转

两坐标系之间通过旋转矩阵 R ∈ S O ( 3 ) R \in SO(3) R∈SO(3) 相互转换:

v W = R ⋅ v B \mathbf{v}\mathcal{W} = R \cdot \mathbf{v}\mathcal{B} vW=R⋅vB

旋转矩阵由欧拉角(Roll-Pitch-Yaw) 参数化:

R = R z ( ψ ) ⋅ R y ( θ ) ⋅ R x ( ϕ ) R = R_z(\psi) \cdot R_y(\theta) \cdot R_x(\phi) R=Rz(ψ)⋅Ry(θ)⋅Rx(ϕ)

其中 ϕ \phi ϕ、 θ \theta θ、 ψ \psi ψ 分别为滚转角、俯仰角和偏航角。


2.2 六自由度运动方程

四旋翼的运动分为平移运动旋转运动两部分。

平移运动(牛顿第二定律)

m p ¨ = F t h r u s t + m g m\ddot{\mathbf{p}} = \mathbf{F}_{thrust} + m\mathbf{g} mp¨=Fthrust+mg

其中:

  • m m m 为无人机质量
  • p = x , y , z T \mathbf{p} = x, y, z^T p=x,y,zT 为质心位置
  • F t h r u s t = R ⋅ 0 , 0 , T T \mathbf{F}_{thrust} = R \cdot 0, 0, T^T Fthrust=R⋅0,0,TT 为推力在世界系下的分量
  • T T T 为总推力(沿机体 Z 轴正方向)
旋转运动(欧拉方程)

I ω ˙ + ω × ( I ω ) = τ \mathbf{I}\dot{\boldsymbol{\omega}} + \boldsymbol{\omega} \times (\mathbf{I}\boldsymbol{\omega}) = \boldsymbol{\tau} Iω˙+ω×(Iω)=τ

其中:

  • I = diag ( I x x , I y y , I z z ) \mathbf{I} = \text{diag}(I_{xx}, I_{yy}, I_{zz}) I=diag(Ixx,Iyy,Izz) 为转动惯量矩阵
  • ω = p , q , r T \boldsymbol{\omega} = p, q, r^T ω=p,q,rT 为机体角速度
  • τ = τ ϕ , τ θ , τ ψ T \boldsymbol{\tau} = \\tau_\\phi, \\tau_\\theta, \\tau_\\psi^T τ=τϕ,τθ,τψT 为控制力矩

2.3 电机推力与力矩模型

每个电机产生的推力 f i f_i fi 与力矩 m i m_i mi 与转速 Ω i \Omega_i Ωi 的关系:

f i = k f Ω i 2 , m i = k m Ω i 2 f_i = k_f \Omega_i^2, \quad m_i = k_m \Omega_i^2 fi=kfΩi2,mi=kmΩi2

其中 k f k_f kf、 k m k_m km 为电机的推力系数和力矩系数(由实验标定)。

对于标准十字形布局的四旋翼,合力和合力矩为:

T = ∑ i = 1 4 f i T = \sum_{i=1}^{4} f_i T=i=1∑4fi

τ ϕ τ θ τ ψ = l ( f 4 − f 2 ) l ( f 3 − f 1 ) k m ( m 1 − m 2 + m 3 − m 4 ) \begin{bmatrix} \tau_\phi \\ \tau_\theta \\ \tau_\psi \end{bmatrix} = \begin{bmatrix} l(f_4 - f_2) \\ l(f_3 - f_1) \\ k_m(m_1 - m_2 + m_3 - m_4) \end{bmatrix} τϕτθτψ = l(f4−f2)l(f3−f1)km(m1−m2+m3−m4)

其中 l l l 为电机到质心的臂长。


三、动态推力分配原理

3.1 什么是推力分配?

飞控系统的上层控制器(位置环、速度环、姿态环)输出的是期望力和力矩 T , τ ϕ , τ θ , τ ψ T T, \\tau_\\phi, \\tau_\\theta, \\tau_\\psi^T T,τϕ,τθ,τψT,而底层执行机构是4个(或更多)独立电机

推力分配的任务 :将期望的广义力 u \mathbf{u} u 映射为各电机的具体指令 f = f 1 , f 2 , f 3 , f 4 T \mathbf{f} = f_1, f_2, f_3, f_4^T f=f1,f2,f3,f4T。

这本质上是一个线性方程组求解问题

u = B ⋅ f \mathbf{u} = B \cdot \mathbf{f} u=B⋅f

T τ ϕ τ θ τ ψ = 1 1 1 1 − l 0 l 0 0 − l 0 l k r − k r k r − k r ⏟ B (分配矩阵) f 1 f 2 f 3 f 4 \begin{bmatrix} T \\ \tau_\phi \\ \tau_\theta \\ \tau_\psi \end{bmatrix} = \underbrace{\begin{bmatrix} 1 & 1 & 1 & 1 \\ -l & 0 & l & 0 \\ 0 & -l & 0 & l \\ k_r & -k_r & k_r & -k_r \end{bmatrix}}_{B \text{(分配矩阵)}} \begin{bmatrix} f_1 \\ f_2 \\ f_3 \\ f_4 \end{bmatrix} Tτϕτθτψ =B(分配矩阵) 1−l0kr10−l−kr1l0kr10l−kr f1f2f3f4


3.2 静态推力分配(标准解法)

对于标准四旋翼,分配矩阵 B B B 为方阵且满秩,直接求逆即可:

f = B − 1 u \mathbf{f} = B^{-1} \mathbf{u} f=B−1u

Python 示例代码:

python 复制代码
import numpy as np

# 参数设置
l = 0.225      # 臂长 (m)
k_f = 1.0e-5   # 推力系数
k_m = 1.5e-7   # 力矩系数
k_r = k_m / k_f

# 分配矩阵 B(十字形布局)
B = np.array([
    [1,    1,    1,    1   ],
    [-l,   0,    l,    0   ],
    [0,   -l,    0,    l   ],
    [k_r, -k_r,  k_r, -k_r]
])

B_inv = np.linalg.inv(B)

def thrust_allocation(T_des, tau_phi, tau_theta, tau_psi):
    """静态推力分配"""
    u = np.array([T_des, tau_phi, tau_theta, tau_psi])
    f = B_inv @ u
    # 限幅:确保推力在物理范围内
    f_min, f_max = 0.5, 20.0  # 单位:N
    f = np.clip(f, f_min, f_max)
    return f

# 示例
forces = thrust_allocation(T_des=9.8, tau_phi=0.1, tau_theta=0.0, tau_psi=0.0)
print("各电机推力 (N):", forces)

3.3 动态推力分配(欠/过驱动系统)

对于六旋翼、八旋翼 等冗余驱动系统, B B B 为非方阵,方程组有无穷多解,需引入优化目标

最小二乘法(Moore-Penrose 伪逆)

f ∗ = arg ⁡ min ⁡ f ∥ f ∥ 2 s.t. B f = u \mathbf{f}^* = \arg\min_{\mathbf{f}} \|\mathbf{f}\|^2 \quad \text{s.t.} \quad B\mathbf{f} = \mathbf{u} f∗=argfmin∥f∥2s.t.Bf=u

f ∗ = B + u = B T ( B B T ) − 1 u \mathbf{f}^* = B^+ \mathbf{u} = B^T(BB^T)^{-1}\mathbf{u} f∗=B+u=BT(BBT)−1u

此解在满足力矩约束的同时,最小化总功耗(推力平方和最小)。

加权最小二乘(考虑电机差异)

f ∗ = W − 1 B T ( B W − 1 B T ) − 1 u \mathbf{f}^* = W^{-1}B^T(BW^{-1}B^T)^{-1}\mathbf{u} f∗=W−1BT(BW−1BT)−1u

其中权重矩阵 W = diag ( w 1 , ... , w n ) W = \text{diag}(w_1, \ldots, w_n) W=diag(w1,...,wn) 可用于:

  • 补偿电机效率差异
  • 故障情况下降低问题电机权重(容错控制
带约束的二次规划(QP)

当需要严格满足电机上下限时,转化为 QP 问题:

min ⁡ f 1 2 f T Q f \min_{\mathbf{f}} \quad \frac{1}{2}\mathbf{f}^T Q \mathbf{f} fmin21fTQf

s.t. B f = u , f m i n ≤ f i ≤ f m a x \text{s.t.} \quad B\mathbf{f} = \mathbf{u}, \quad f_{min} \leq f_i \leq f_{max} s.t.Bf=u,fmin≤fi≤fmax

python 复制代码
from scipy.optimize import minimize

def dynamic_thrust_allocation_qp(B, u_des, f_min=0.5, f_max=20.0):
    """带约束的动态推力分配(QP求解)"""
    n = B.shape[1]
    
    def objective(f):
        return 0.5 * np.dot(f, f)  # 最小化推力平方和
    
    def objective_grad(f):
        return f
    
    constraints = {'type': 'eq', 'fun': lambda f: B @ f - u_des}
    bounds = [(f_min, f_max)] * n
    f0 = np.ones(n) * np.mean([f_min, f_max])
    
    result = minimize(objective, f0, jac=objective_grad,
                      constraints=constraints, bounds=bounds,
                      method='SLSQP')
    return result.x

3.4 实时动态分配策略

在实际飞控中,动态推力分配还需处理以下问题:

问题 解决方案
推力饱和 优先保证姿态力矩,按比例缩减总推力
电机响应延迟 加入电机动态模型(一阶惯性环节)进行前馈补偿
计算实时性 离线计算伪逆矩阵,在线仅做矩阵乘法
故障检测 实时监控电流/转速,动态重构分配矩阵

推力优先级调度(Priority-based Allocation)示例:

python 复制代码
def priority_thrust_allocation(T_des, tau_des, B, f_min, f_max):
    """
    优先保证姿态力矩,其次满足总推力需求
    tau_des: [tau_phi, tau_theta, tau_psi]
    """
    # Step 1: 计算姿态力矩所需推力
    B_tau = B[1:, :]  # 力矩分配子矩阵
    f_tau = np.linalg.pinv(B_tau) @ tau_des
    
    # Step 2: 计算剩余推力裕度
    f_remaining_max = f_max - f_tau
    f_remaining_min = f_min - f_tau
    
    # Step 3: 在裕度内分配总推力
    T_achievable = np.clip(T_des / 4.0, 
                           np.max(f_remaining_min),
                           np.min(f_remaining_max))
    f_total = np.ones(4) * T_achievable
    
    return f_tau + f_total

四、倾斜纠正原理

4.1 为什么需要倾斜纠正?

无人机在实际飞行中,受到以下因素影响会产生非预期的倾斜:

  1. 重心偏移:电池、载荷安装不均匀
  2. 电机推力不一致:电机老化、桨叶损伤
  3. 气流扰动:侧风、湍流
  4. 惯性测量单元(IMU)安装误差:传感器轴未与机体轴对齐

倾斜纠正 即通过姿态估计 + 闭环控制,实时补偿上述误差,维持期望姿态。


4.2 姿态估计

4.2.1 互补滤波器(Complementary Filter)

这是最轻量高效的姿态估计方法:

  • 加速度计:低频准确(可感知重力方向),高频噪声大
  • 陀螺仪:高频准确(角速度积分),低频存在漂移

互补滤波器融合两者优势:

ϕ ^ ( t ) = α ⋅ ( ϕ ^ t − 1 + ω x Δ t ) + ( 1 − α ) ⋅ ϕ a c c \hat{\phi}(t) = \alpha \cdot (\hat{\phi}{t-1} + \omega_x \Delta t) + (1-\alpha) \cdot \phi{acc} ϕ^(t)=α⋅(ϕ^t−1+ωxΔt)+(1−α)⋅ϕacc

其中 α ≈ 0.98 \alpha \approx 0.98 α≈0.98(高通系数), 1 − α 1-\alpha 1−α 为低通系数。

python 复制代码
class ComplementaryFilter:
    def __init__(self, alpha=0.98, dt=0.004):
        self.alpha = alpha      # 高通滤波系数
        self.dt = dt            # 采样周期 (250Hz)
        self.roll = 0.0
        self.pitch = 0.0
    
    def update(self, gx, gy, gz, ax, ay, az):
        """
        gx,gy,gz: 陀螺仪角速度 (rad/s)
        ax,ay,az: 加速度计读数 (m/s^2)
        """
        import math
        
        # 加速度计计算倾角(低频)
        roll_acc  = math.atan2(ay, az)
        pitch_acc = math.atan2(-ax, math.sqrt(ay**2 + az**2))
        
        # 陀螺仪积分(高频)
        roll_gyro  = self.roll  + gx * self.dt
        pitch_gyro = self.pitch + gy * self.dt
        
        # 互补融合
        self.roll  = self.alpha * roll_gyro  + (1 - self.alpha) * roll_acc
        self.pitch = self.alpha * pitch_gyro + (1 - self.alpha) * pitch_acc
        
        return self.roll, self.pitch
4.2.2 扩展卡尔曼滤波(EKF)

EKF 是工业级飞控(如 PX4、ArduPilot)的标准方案,可融合 GPS、磁力计、气压计等多传感器:

状态向量:

x = q , v , p , b g , b a T \mathbf{x} = \\mathbf{q}, \\mathbf{v}, \\mathbf{p}, \\mathbf{b}_g, \\mathbf{b}_a^T x=q,v,p,bg,baT

其中 q \mathbf{q} q 为四元数, v \mathbf{v} v 为速度, p \mathbf{p} p 为位置, b g , b a \mathbf{b}_g, \mathbf{b}_a bg,ba 为陀螺/加速度偏置。

预测步骤:

x ^ k ∣ k − 1 = f ( x ^ k − 1 ∣ k − 1 , u k ) \hat{\mathbf{x}}{k|k-1} = f(\hat{\mathbf{x}}{k-1|k-1}, \mathbf{u}_k) x^k∣k−1=f(x^k−1∣k−1,uk)

P k ∣ k − 1 = F k P k − 1 ∣ k − 1 F k T + Q k P_{k|k-1} = F_k P_{k-1|k-1} F_k^T + Q_k Pk∣k−1=FkPk−1∣k−1FkT+Qk

更新步骤:

K k = P k ∣ k − 1 H k T ( H k P k ∣ k − 1 H k T + R k ) − 1 K_k = P_{k|k-1} H_k^T (H_k P_{k|k-1} H_k^T + R_k)^{-1} Kk=Pk∣k−1HkT(HkPk∣k−1HkT+Rk)−1

x ^ k ∣ k = x ^ k ∣ k − 1 + K k ( z k − h ( x ^ k ∣ k − 1 ) ) \hat{\mathbf{x}}{k|k} = \hat{\mathbf{x}}{k|k-1} + K_k(\mathbf{z}k - h(\hat{\mathbf{x}}{k|k-1})) x^k∣k=x^k∣k−1+Kk(zk−h(x^k∣k−1))


4.3 倾斜纠正控制律

4.3.1 姿态误差计算

使用四元数表示姿态误差,避免欧拉角奇异性(万向节死锁):

q e r r = q d e s − 1 ⊗ q e s t \mathbf{q}{err} = \mathbf{q}{des}^{-1} \otimes \mathbf{q}_{est} qerr=qdes−1⊗qest

误差旋转向量:

θ e r r = 2 ⋅ sign ( q e r r , w ) ⋅ q e r r , x , q e r r , y , q e r r , z T \boldsymbol{\theta}{err} = 2 \cdot \text{sign}(q{err,w}) \cdot q_{err,x}, q_{err,y}, q_{err,z}^T θerr=2⋅sign(qerr,w)⋅qerr,x,qerr,y,qerr,zT

4.3.2 PID 姿态控制器

标准三环级联 PID 控制结构:

复制代码
期望姿态角 → [姿态角PID] → 期望角速度 → [角速度PID] → 期望力矩 → [推力分配] → 电机指令
                ↑                              ↑
           姿态角反馈                       角速度反馈(IMU)

角速度内环(高带宽,~250Hz):

τ i = K p , i ⋅ e ω , i + K i , i ⋅ ∫ e ω , i   d t + K d , i ⋅ e ˙ ω , i \tau_i = K_{p,i} \cdot e_{\omega,i} + K_{i,i} \cdot \int e_{\omega,i} \, dt + K_{d,i} \cdot \dot{e}_{\omega,i} τi=Kp,i⋅eω,i+Ki,i⋅∫eω,idt+Kd,i⋅e˙ω,i

姿态角外环(低带宽,~50Hz):

ω d e s , i = K p , ϕ ⋅ e ϕ , i \omega_{des,i} = K_{p,\phi} \cdot e_{\phi,i} ωdes,i=Kp,ϕ⋅eϕ,i

python 复制代码
class AttitudePIDController:
    def __init__(self):
        # 姿态外环 P 增益
        self.Kp_angle = {'roll': 6.5, 'pitch': 6.5, 'yaw': 3.0}
        
        # 角速度内环 PID 增益
        self.Kp_rate = {'roll': 0.15, 'pitch': 0.15, 'yaw': 0.20}
        self.Ki_rate = {'roll': 0.05, 'pitch': 0.05, 'yaw': 0.02}
        self.Kd_rate = {'roll': 0.003,'pitch': 0.003,'yaw': 0.0  }
        
        self.integral = {'roll': 0.0, 'pitch': 0.0, 'yaw': 0.0}
        self.prev_error = {'roll': 0.0, 'pitch': 0.0, 'yaw': 0.0}
        
        # 积分限幅(Anti-windup)
        self.integral_limit = 0.3
    
    def compute(self, angle_des, angle_est, rate_est, dt):
        """
        angle_des: 期望姿态角 {'roll':..., 'pitch':..., 'yaw':...}
        angle_est: 估计姿态角
        rate_est:  测量角速度
        """
        torques = {}
        
        for axis in ['roll', 'pitch', 'yaw']:
            # 外环:姿态角误差 → 期望角速度
            angle_error = angle_des[axis] - angle_est[axis]
            rate_des = self.Kp_angle[axis] * angle_error
            
            # 内环:角速度误差 → 力矩
            rate_error = rate_des - rate_est[axis]
            
            # 积分项(含限幅)
            self.integral[axis] += rate_error * dt
            self.integral[axis] = np.clip(self.integral[axis],
                                          -self.integral_limit,
                                           self.integral_limit)
            
            # 微分项
            derivative = (rate_error - self.prev_error[axis]) / dt
            self.prev_error[axis] = rate_error
            
            # PID 输出
            torques[axis] = (self.Kp_rate[axis] * rate_error +
                             self.Ki_rate[axis] * self.integral[axis] +
                             self.Kd_rate[axis] * derivative)
        
        return torques

4.4 倾斜补偿:总推力的缩放修正

当无人机发生倾斜时,旋翼推力的竖直分量减小,会导致高度下降。因此需要对总推力进行倾斜补偿

T c o r r e c t e d = T d e s cos ⁡ ϕ ⋅ cos ⁡ θ T_{corrected} = \frac{T_{des}}{\cos\phi \cdot \cos\theta} Tcorrected=cosϕ⋅cosθTdes

其中 ϕ , θ \phi, \theta ϕ,θ 为当前滚转角和俯仰角。

python 复制代码
def tilt_compensated_thrust(T_des, roll, pitch):
    """
    倾斜补偿:保持竖直推力分量不变
    注意:大角度时补偿量会趋于无穷,需限幅
    """
    import math
    cos_tilt = math.cos(roll) * math.cos(pitch)
    cos_tilt = max(cos_tilt, 0.5)  # 防止除零,限制最大补偿为2倍
    return T_des / cos_tilt

⚠️ 注意:在大倾斜角(>45°)时,该补偿会产生超大推力需求,需结合最大推力限制进行裁剪。


4.5 重心偏移的自动学习补偿

对于系统性偏置(如重心偏移导致的稳态倾斜),可通过积分学习自适应控制进行长期补偿:

python 复制代码
class TrimLearner:
    """在线学习稳态配平补偿量"""
    def __init__(self, learning_rate=0.001, max_trim=0.1):
        self.trim_roll  = 0.0
        self.trim_pitch = 0.0
        self.lr = learning_rate
        self.max_trim = max_trim
    
    def update(self, roll_error, pitch_error):
        """根据长期姿态误差更新配平量"""
        self.trim_roll  += self.lr * roll_error
        self.trim_pitch += self.lr * pitch_error
        self.trim_roll  = np.clip(self.trim_roll,  -self.max_trim, self.max_trim)
        self.trim_pitch = np.clip(self.trim_pitch, -self.max_trim, self.max_trim)
        return self.trim_roll, self.trim_pitch

五、完整控制框架

将上述模块整合,形成完整的飞控控制流程:

复制代码
┌─────────────────────────────────────────────────────────────────┐
│                        传感器层                                  │
│   IMU(加速度计+陀螺仪)  气压计  GPS  磁力计  光流               │
└──────────────────────┬──────────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────────────────┐
│                   姿态估计层(EKF / 互补滤波)                    │
│         输出:Roll, Pitch, Yaw, 角速度, 位置, 速度               │
└──────────────────────┬──────────────────────────────────────────┘
                       │
        ┌──────────────┼──────────────┐
        ▼              ▼              ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
│  位置控制环  │ │  速度控制环  │ │   高度控制环     │
│  (P控制器)   │ │  (PID控制器) │ │   (PID控制器)    │
└──────┬───────┘ └──────┬───────┘ └────────┬─────────┘
       │                │                  │
       └────────────────┴──────────────────┘
                        │
                        ▼
┌─────────────────────────────────────────────────────────────────┐
│                   姿态控制层(级联PID)                           │
│     倾斜纠正 + 配平补偿 + 倾斜补偿推力缩放                       │
│     输出:期望力矩 [τ_φ, τ_θ, τ_ψ] + 期望总推力 T              │
└──────────────────────┬──────────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────────────────┐
│               动态推力分配层                                      │
│     B⁻¹ 求逆 / 伪逆 / QP优化    电机饱和处理    故障容错         │
│     输出:各电机推力指令 [f₁, f₂, f₃, f₄, ...]                 │
└──────────────────────┬──────────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────────────────┐
│                    电机驱动层                                     │
│         PWM/DSHOT 信号 → ESC → 无刷电机 → 螺旋桨                │
└─────────────────────────────────────────────────────────────────┘

六、工程调参指南

6.1 PID 调参步骤

基本原则:由内到外,先P后D再I

  1. 角速度内环(最高优先级)

    • 逐步增大 K p K_p Kp,直到出现轻微振荡,然后退回 20%
    • 增大 K d K_d Kd,抑制振荡,改善响应速度
    • 少量 K i K_i Ki,消除稳态误差
  2. 姿态角外环

    • 在内环稳定后,增大 K p K_p Kp,观察阶跃响应
    • 外环通常只需要纯 P 控制
  3. 验证方法

    • 使用遥控器施加扰动,观察恢复时间
    • 用飞控日志分析频域响应(Bode图)

6.2 常见问题排查

现象 可能原因 解决方案
悬停时持续缓慢漂移 重心偏移 / IMU偏置 配平学习 / 重新校准IMU
高频抖动/振荡 K d K_d Kd 过大 / 电机噪声 降低 K d K_d Kd / 加陷波滤波器
姿态响应迟钝 K p K_p Kp 过小 / 电机响应慢 提高 K p K_p Kp / 检查ESC设置
单方向持续倾斜 某电机推力下降 检查桨叶/电机 / 重新标定
偏航漂移 磁力计干扰 重新校准罗盘 / 转移干扰源
起飞时翻机 电机方向或布局配置错误 检查分配矩阵与实物一致性

6.3 推力分配调参注意事项

python 复制代码
# 关键参数检查清单
class ThrustAllocationConfig:
    # 1. 电机臂长(单位:米,从质心到电机中心)
    arm_length = 0.225
    
    # 2. 推力系数(需实验标定:f = k_f * PWM^2)
    k_thrust = 1.0e-5
    
    # 3. 力矩系数(正桨为正,反桨为负)
    k_moment = 1.5e-7
    
    # 4. 电机最大/最小推力(N)
    f_max = 15.0  # 约 1.5kg 单电机最大推力
    f_min = 0.5   # 最小怠速推力(防止电机停转)
    
    # 5. 推力分配优先级
    # True = 优先保证姿态,牺牲总推力(推荐)
    # False = 等权重优化
    attitude_priority = True

七、进阶话题

7.1 倾转旋翼无人机的扩展推力分配

对于倾转旋翼(Tilt-rotor)全向无人机 ,分配矩阵 B B B 会随旋翼倾转角 α i \alpha_i αi 实时变化:

B ( α ) = sin ⁡ α 1 ⋯ sin ⁡ α n cos ⁡ α 1 ⋯ cos ⁡ α n ⋯ B(\boldsymbol{\alpha}) = \begin{bmatrix} \sin\alpha_1 & \cdots & \sin\alpha_n \\ \cos\alpha_1 & \cdots & \cos\alpha_n \\ \cdots \end{bmatrix} B(α)= sinα1cosα1⋯⋯⋯sinαncosαn

此时需实时重算伪逆,或采用神经网络近似推力分配函数。

7.2 基于模型预测控制(MPC)的一体化分配

MPC 可将推力分配与姿态控制统一建模,在预测时域内同时优化:

min ⁡ U ∑ k = 0 N − 1 ∥ x k − x r e f ∥ Q 2 + ∥ u k ∥ R 2 \min_{U} \sum_{k=0}^{N-1} \left \\\|\\mathbf{x}_k - \\mathbf{x}_{ref}\\\|_Q\^2 + \\\|\\mathbf{u}_k\\\|_R\^2 \\right Umink=0∑N−1∥xk−xref∥Q2+∥uk∥R2

优点:自然处理约束、预见性好;缺点:计算量大,需要高性能处理器。

7.3 强化学习在推力分配中的应用

近年来,基于深度强化学习(DRL) 的端到端飞控研究逐渐兴起:

  • 输入:传感器原始数据
  • 输出:电机PWM指令
  • 训练环境:物理仿真(Gazebo/Isaac Gym)
  • 代表工作:ETH Zurich 的 Learning Agile Flight、Agility in Turbulence 等

八、总结

本文系统介绍了无人机动态推力分配与倾斜纠正的核心原理:

模块 核心思想 关键技术
动力学建模 六自由度方程描述运动 旋转矩阵、欧拉方程
推力分配 广义力 → 电机推力映射 矩阵求逆、伪逆、QP优化
姿态估计 多传感器融合消除噪声 互补滤波、EKF
倾斜纠正 误差反馈闭环控制 级联PID、四元数误差
倾斜补偿 维持竖直推力分量 1 / cos ⁡ ϕ cos ⁡ θ 1/\cos\phi\cos\theta 1/cosϕcosθ 缩放

推力分配倾斜纠正 看似独立,实则深度耦合------姿态控制的输出直接驱动推力分配,而推力分配的饱和状态也会反向影响姿态响应的品质。优秀的飞控设计需要在两者之间寻找最优平衡。


参考资料

  1. Mahony, R., et al. "Multirotor Aerial Vehicles: Modeling, Estimation, and Control of Quadrotor." IEEE Robotics & Automation Magazine, 2012.
  2. Faessler, M., et al. "Differential Flatness of Quadrotor Dynamics Subject to Rotor Drag for Accurate Tracking of High-Speed Trajectories." IEEE RA-L, 2018.
  3. Brescianini, D., & D'Andrea, R. "Computationally Efficient Trajectory Generation for Fully Actuated Multirotor Vehicles." IEEE Transactions on Robotics, 2018.
  4. PX4 Autopilot 官方文档:https://docs.px4.io
  5. ArduPilot 源码:https://github.com/ArduPilot/ardupilot
  6. Michieletto, G., et al. "Fundamental Actuator Constraints and Implications for Multirotors." IEEE T-RO, 2018.

📌 如果本文对你有帮助,欢迎点赞收藏!有问题欢迎在评论区交流。

🔔 关注本专栏,获取更多无人机飞控算法、嵌入式开发、ROS 相关技术文章。


版权声明:本文为原创技术博客,转载请注明出处。

相关推荐
mxwin4 小时前
Unity URP 中的法线生成完全指南
unity·游戏引擎
游乐码5 小时前
Unity基础(十五)LineRender画线功能
unity·游戏引擎
玖玥拾5 小时前
Cocos学习笔记:瓦片地图与坐标转换
游戏引擎·cocos2d
Deepoch7 小时前
Deepoc VLA开发板:无人机近距接触式精细作业与贴壁导航
无人机·开发板·具身模型·deepoc
晓131310 小时前
【Cocos Creator 3.x】篇——第二章 入门
前端·javascript·游戏引擎
玖玥拾12 小时前
Cocos学习笔记:粒子系统与对象层批量处理
游戏引擎·cocos2d
中讯慧通13 小时前
无人机靠什么实时传画面?图传电台传输数据全明细
大数据·机器人·无人机
不知名的老吴16 小时前
Unity3D 2022安装教程及全流程下载步骤指南
unity·游戏引擎
程序员也有头发16 小时前
如何使用AI工具开发Unity
unity·游戏引擎·ai编程
caimouse17 小时前
Godot 引擎官方常见问题(FAQ)整理
游戏引擎·godot