作者 :无人机控制系统工程师
标签 :无人机 / 飞控算法 / 推力分配 / 姿态控制 / 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,z]T 为质心位置
- 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,T]T 为推力在世界系下的分量
- 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,r]T 为机体角速度
- τ = [ τ ϕ , τ θ , τ ψ ] 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,f4\]T。 这本质上是一个**线性方程组求解问题**: 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,ba\]T 其中 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,z\]T ##### 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θ 缩放 |
推力分配 和 倾斜纠正 看似独立,实则深度耦合------姿态控制的输出直接驱动推力分配,而推力分配的饱和状态也会反向影响姿态响应的品质。优秀的飞控设计需要在两者之间寻找最优平衡。
参考资料
- Mahony, R., et al. "Multirotor Aerial Vehicles: Modeling, Estimation, and Control of Quadrotor." IEEE Robotics & Automation Magazine, 2012.
- Faessler, M., et al. "Differential Flatness of Quadrotor Dynamics Subject to Rotor Drag for Accurate Tracking of High-Speed Trajectories." IEEE RA-L, 2018.
- Brescianini, D., & D'Andrea, R. "Computationally Efficient Trajectory Generation for Fully Actuated Multirotor Vehicles." IEEE Transactions on Robotics, 2018.
- PX4 Autopilot 官方文档:https://docs.px4.io
- ArduPilot 源码:https://github.com/ArduPilot/ardupilot
- Michieletto, G., et al. "Fundamental Actuator Constraints and Implications for Multirotors." IEEE T-RO, 2018.
📌 如果本文对你有帮助,欢迎点赞收藏!有问题欢迎在评论区交流。
🔔 关注本专栏,获取更多无人机飞控算法、嵌入式开发、ROS 相关技术文章。
版权声明:本文为原创技术博客,转载请注明出处。