作者 :无人机控制系统工程师
标签 :无人机 / 飞控算法 / 推力分配 / 姿态控制 / 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 为什么需要倾斜纠正?
无人机在实际飞行中,受到以下因素影响会产生非预期的倾斜:
- 重心偏移:电池、载荷安装不均匀
- 电机推力不一致:电机老化、桨叶损伤
- 气流扰动:侧风、湍流
- 惯性测量单元(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
-
角速度内环(最高优先级)
- 逐步增大 K p K_p Kp,直到出现轻微振荡,然后退回 20%
- 增大 K d K_d Kd,抑制振荡,改善响应速度
- 少量 K i K_i Ki,消除稳态误差
-
姿态角外环
- 在内环稳定后,增大 K p K_p Kp,观察阶跃响应
- 外环通常只需要纯 P 控制
-
验证方法
- 使用遥控器施加扰动,观察恢复时间
- 用飞控日志分析频域响应(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 相关技术文章。
版权声明:本文为原创技术博客,转载请注明出处。