- 嵌入式
- 物联网
- 机器人
- 自动驾驶
- 智能硬件
【免费下载链接】PX4-Autopilot
PX4 Autopilot Software
Omnicopter(全向多旋翼)是一类能够在任意方向产生推力(6 自由度)的多旋翼飞行器,通过精心排布电机位置与推力轴方向,它可以在不倾斜机体的前提下沿任意方向移动,并能在任意倾斜角度下悬停。本文以 PX4-Autopilot 仓库中的官方 Omnicopter 整机方案(docs/en/frames_multicopter/omnicopter.md)为主体,完整覆盖从物料清单、机架与电子组装,到 ESC 双向模式与 PX4 控制分配参数配置、以及 Gazebo 仿真验证的全过程,并结合仓库源码与固件参数文件深入讲解背后的控制分配实现原理,帮助你从零搭建并调通一台属于自己的 6DoF Omnicopter。
一、什么是 Omnicopter:六自由度推力的实现思路
普通多旋翼的电机推力轴基本平行于机体 Z 轴,因此只能靠整体倾斜机身来获得水平方向的分力。Omnicopter 则不同——它通过把电机的位置和推力轴方向按特定几何排布,使得机体在任意姿态下都能对 6 个自由度(三轴平动 + 三轴转动)分别施加独立的力和力矩:
- 无需倾斜机体即可沿任意方向平动;
- 可以在任意倾斜角度下保持悬停(甚至倒置飞行);
- 平动与转动解耦,姿态控制与位置控制互不干扰。
该整机方案的设计源自 Brescianini 与 D'Andrea 提出的 Omnicopter 原型机,PX4 官方整机指南沿用了这一构型。从仓库源码看,PX4 通过**动态控制分配(Dynamic Control Allocation)**模块实现这类非共面多旋翼的控制:每个电机的位置(CA_ROTOR${i}_PX/PY/PZ)与推力轴方向(CA_ROTOR${i}_AX/AY/AZ)都以参数形式描述,控制分配器据此将期望的力/力矩指令映射到 8 个电机的输出上(相关参数定义见 src/modules/control_allocator/module.yaml)。
二、硬件物料清单(Bill of Materials)
官方方案将整机所需物料分为电子、动力和机架三大部分。
电子部分(Electronics)
| 部件 | 型号/要求 |
|---|---|
| 飞控 | Holybro KakuteH7(参见 kakuteh7.md),要求支持 8 路 DShot 输出,也可自行选择其他飞控 |
| 电调 | 2 块 Tekko32 F4 4in1(50A)电调,直接接 KakuteH7 的两个电机连接器 |
| GPS | ZED-F9P 模块 + GPS 螺旋天线(helix antenna,倒置飞行时性能更好) |
| 遥控接收机 | 任意 RC 接收机 |
| 外置磁罗盘 | RM-3100 等高精度外置磁力计(务必远离电源线) |
| 数传 | 例如 WiFi 数传方案 |
动力部分(Propulsion)
- 电机:8 个 BrotherHobby LPD 2306.5(2000KV/2450KV/2650KV);
- 3D 桨(双向桨,正反桨各 4 支):2 套 HQProp 3D 5X3.5X3 三叶桨,或 2 套 Gemfan 513D 三叶 3D 桨;
- 电池:6S 3300mAh LiPo,需确认尺寸能装入机架;
- 电池绑带。
注意:3D 桨有 CCW(逆时针)与 CW(顺时针)两个版本,装机时必须与电机转向一一对应。
机架部分(Frame)
- 碳方管 8mm×7mm×1000mm;
- 碳圆杆 3mm×2mm×1000mm;
- 裁切长度:
- 方管:8 根 × 248mm;
- 圆杆:12 根 × 328mm、6 根 × 465mm;
- 螺丝与支架:
- 电机与立柱固定:40 颗 M3×12mm;
- 飞控安装:4 颗 M3×35mm + 4 颗 M3 螺母;
- 立柱:4 根 40mm。
此外,机架的角连接件等塑料零件需要按官方 3D 模型打印。
三、整机组装:机架与电子部分
机架组装(Frame)
- 打印 3D 零件。角连接件的朝向很关键——如果装反,圆杆的角度就会不对,装到一半就能发现。
- 按上文长度裁切碳管。
- 先将各机架零件徒手连接在一起做试装验证。
- 电机尽量外移,但要保证桨叶不会碰到碳杆。
电子部分(Electronics)
将外设焊接到飞控上,官方方案的引脚分配如下:
- 电调:2 块 4in1 电调直接插入 KakuteH7 的两个电机连接器;为避免冲突,其中一块连接器上拔掉了电源针(最右侧引脚);
- 数传 → UART1;
- GPS → UART4;
- RC → UART6。
几条重要经验:
- 磁力计必须远离电源:官方最终将其放置在中心件底部,中间垫了 4cm 厚的泡沫塑料;
- 给气压计贴上胶带遮光(不要把气孔堵住),避免光线干扰;
- 机架可以先不粘胶,首飞测试通过后再考虑用胶固定。
四、软件配置(Software Configuration)
4.1 ESC:切换到 3D 双向模式
Omnicopter 需要电机能够反转,因此第一步是把 ESC 配置为 3D(双向)模式。官方指出,出厂默认 ESC 设置在 3D 模式下存在问题:电机尝试换向时,有时会直接停转,直到 ESC 重新上电才能恢复,因此必须修改 ESC 参数。
配置方法:在飞控上刷 Betaflight 固件(确保 Betaflight 里配置好 8 电机机架),使用 pass-through 模式配合 BLHeli 套件修改电调参数。关键设置:
- 电机方向(Motor Direction)设为 Bidirectional Soft(双向软换向);
- Rampup Power 提升到 100%(官方认为该取值偏保守,可能略微降低效率,但更稳妥)。
修改设置后务必确认电机不会过热。
4.2 PX4 固件配置
在 PX4 端需要完成以下步骤:
- 选择通用多旋翼机架(Generic Multicopter airframe);
- 使用解锁开关(arming switch)解锁,不要使用摇杆解锁(参见 prearm_arm_disarm.md 中关于 arming button/switch 的说明);
- 在 actuators.md 中为全部 8 路输出选择 DShot 协议;
- 按下面原则配置电机几何与转向:
- 约定:电机朝向其推力轴指向的方向;
- 电机旋转方向与正向推力方向一致(在 QGC 中拖动电机滑块向上验证);
- 务必使用对应转向的桨叶(CCW/CW 版本)。
- 修改关键参数:
CA_METHOD设为 0:改变解饱和(desaturation)逻辑,以获得更好的姿态跟踪(参数定义见 parameter_reference.md);FD_FAIL_P、FD_FAIL_R设为 0:禁用姿态失稳故障检测,避免倒置飞行等 6DoF 特殊姿态被误判为故障。
仓库中随文档附带了一份完整参数文件 omnicopter.params,可以直接导入 QGroundControl 使用。
五、源码级解析:控制分配参数与 6DoF 电机几何
PX4 的控制分配参数全部由 src/modules/control_allocator/module.yaml 定义,Omnicopter 用到的核心参数族包括:
| 参数 | 含义 | 默认值 |
|---|---|---|
CA_AIRFRAME | 机架类型选择(0=Multirotor) | 0 |
CA_METHOD | 控制分配算法:0=Pseudo-inverse with output clipping;1=Pseudo-inverse with sequential desaturation;2=Automatic | 2 |
CA_ROTOR_COUNT | 旋翼总数(Omnicopter 为 8) | 0 |
CA_R_REV | 可反转(双向)电机位掩码,bit0~7 对应电机 1~8 | 0 |
CA_ROTOR${i}_PX/PY/PZ | 电机 ${i} 相对重心的位置(m) | 0.0 |
CA_ROTOR${i}_AX/AY/AZ | 电机 ${i} 推力轴方向向量(仅取方向,自动归一化) | 0/0/-1 |
CA_ROTOR${i}_CT | 推力系数,Thrust = CT * u² | 6.5 |
CA_ROTOR${i}_KM | 力矩系数,Torque = KM * Thrust;CCW 电机取正、CW 电机取负 | 0.05 |
对照omnicopter.params可以看到这台机器的电机几何:例如 8 个电机分布在正方体顶点附近(位置坐标取 ±0.14435m 组合),推力轴指向立方体的各个面心方向(如电机 8/9/10/11 推力轴为 (0,0,-1)),CA_R_REV为 255(8 个电机全部可反转),这正是 6DoF 推力实现的几何基础。
在固件侧,这两个机架级的默认参数还被固化在 SITL 启动脚本中:
- 10019_gazebo-classic_omnicopter:Gazebo Classic 仿真机架,包含 8 个电机的完整
CA_ROTOR*几何、PWM_MAIN_FUNC1~8输出映射、CA_METHOD 0与FD_FAIL_P/R 0; - 8011_gz_omnicopter:新版 Gazebo(gz sim)仿真机架,除上述参数外还配置了
SIM_GZ_EC_FUNC1~8及输出范围。
可以看到,SITL 脚本与整机文档的参数文件完全一致,这保证了实机与仿真使用同一套控制分配几何,仿真结果对实机调参具有直接参考价值。
六、仿真验证:Gazebo Classic 中的 Omnicopter
仓库为 Omnicopter 提供了现成的 Gazebo Classic 仿真目标,一条命令即可启动:
make px4_sitl gazebo-classic_omnicopter启动后即可在仿真环境中验证 6DoF 飞行特性,包括倒置悬停、无倾斜平移等姿态。对应的机架启动文件为 10019_gazebo-classic_omnicopter,它通过param set-default一次性写入全部电机几何与控制参数,因此无需手工逐项配置即可体验与实机一致的动力学。
七、实测经验与注意事项
根据官方整机方案的实测记录,需要注意:
- 悬停油门约 30%;
- 续航约 4~5 分钟,官方认为若换用更大的桨叶,续航还有提升空间;
- 由于 Omnicopter 采用双向电机与 3D 桨,务必确认 ESC 换向可靠性(官方曾遇到换向停转问题,需按上文修改 ESC 参数);
- 倒置飞行时 GPS 螺旋天线表现优于普通天线,磁力计安装位置需远离电源并做好屏蔽。
综合来看,PX4 的动态控制分配架构(src/modules/control_allocator/module.yaml)让 Omnicopter 这类非共面 6DoF 多旋翼从硬件到软件都有了标准化的配置路径:先在 Gazebo Classic 中用 10019_gazebo-classic_omnicopter 验证飞行特性,再依据 omnicopter.params 在 QGC 中完成实机参数导入,即可复现官方的 6DoF 全向飞行能力。
- 嵌入式
- 物联网
- 机器人
- 自动驾驶
- 智能硬件
【免费下载链接】PX4-Autopilot
PX4 Autopilot Software
相关推荐
PX4 多旋翼 DIY 组装实战指南:从 Omnicopter 全向机到 DJI F450 经典四轴
PX4 多旋翼 DIY 组装实战指南:从 Omnicopter 全向机到 DJI F450 经典四轴 DIY(Do It Yourself)组装是指从单独采购的
嵌入式物联网机器人自动驾驶智能硬件PX4 自动调参(Autotune)完整指南:多旋翼与固定翼 Rate/Attitude 控制器自动整定实战
PX4 自动调参(Autotune)完整指南:多旋翼与固定翼 Rate/Attitude 控制器自动整定实战 PX4 自动调参(Auto tuning)通过飞行
嵌入式物联网机器人自动驾驶智能硬件ManiSkill 中 Koch v1.1 六自由度机械臂:模型定义、控制器配置与仿真实践
ManiSkill 中 Koch v1.1 六自由度机械臂:模型定义、控制器配置与仿真实践 Koch v1.1 是 ManiSkill 内置建模的 6 自由度桌
机器人具身智能人工智能强化学习深度学习
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考