5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 48429|回复: 95
打印 上一主题 下一主题

阿凡达两轴手把手教程——F3F4飞控动力分配矩阵详解

  [复制链接]
跳转到指定楼层
楼主
发表于 2018-9-21 22:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yangyh75 于 2018-9-29 11:25 编辑

阿凡达两轴教程网站有过几篇,都不尽详细,能成功起飞的凤毛麟角。为了使小白也能成功DIY两轴阿凡达,决定写个手把手教程。一并将飞控的动力分配矩阵做个详解,以便大家可以自定义任意的飞行器架构(两轴、四轴、三轴、甚至是支奴干)。
第一次起飞
https://v.youku.com/v_show/id_XM ... 488e8aab5664b1e9eb1

电源分配面板连接

飞控连接

装配完

一、对应机架的说明——机架要求稳固,特别是机臂,因其除承受升力外,还有旋翼前后倾转陀螺效应力,强度不够会有更多的舵机抖动。
1、两个舵机驱动两个电机底座,使电机具有前后俯仰能力;
2、两个电机反向旋转,通常左电机顺时针旋转,右电机反时针旋转;

二、对于F3飞控直接在命令行输入如下代码,回车,基本就配置好了。(F4飞控管脚定义不一样,需要更改管脚)
#请拷贝以下命令代码,直至save后,回车
#以下三段为核心设置——————————————————————
resource MOTOR 1 A06                             #物理映射左马达的控制信号到MCU的A06管脚(1号插钉)
resource MOTOR 2 A07                             #物理映射右马达的控制信号到MCU的A07管脚(2号插钉)
resource MOTOR 3 NONE                         #解除3号插钉的物理管脚映射,以备左舵机使用
resource MOTOR 4 NONE                         #解除4号插钉的物理管脚映射,以备右舵机使用
resource SERVO 1 A11                              #物理映射左舵机的控制信号到MCU的A11管脚(3号插钉)
resource SERVO 2 A12                              #物理映射右舵机的控制信号到MCU的A12管脚(4号插钉)

mixer CUSTOMAIRPLANE                         #自定义机架构型
mmix reset                                               #复位马达混合器
mmix 0 1.000 1.000 0.000 0.000                #定义左马达对油门100%响应,横滚正向100%响应
mmix 1 1.000 -1.000 0.000 0.000               #定义右马达对油门100%响应,横滚反向100%响应                        

smix reset                                                #复位舵机混合器
smix 0 2 2 -100 0 0 100 0                         #定义1号舵机偏航反向100%响应(如果你的舵机方向与实际要求相反,对应修改中间列的正负号就ok)
smix 1 2 1 100 0 0 100 0                          #定义1号舵机对俯仰正向100%响应(如果你的舵机方向与实际要求相反,对应修改中间列的正负号就ok)
smix 2 3 2 -100 0 0 100 0                         #定义2号舵机偏航反向100%响应(如果你的舵机方向与实际要求相反,对应修改中间列的正负号就ok)
smix 3 3 1 -100 0 0 100 0                         #定义2号舵机对俯仰反向100%响应(如果你的舵机方向与实际要求相反,对应修改中间列的正负号就ok)


#以下为快捷设置,可以用图形界面设置——————————————————————
feature -RX_SERIAL
feature -ANTI_GRAVITY
feature RX_SERIAL
feature TELEMETRY
feature MOTOR_STOP                            #设置飞控解锁时马达不转
serial 2 64 115200 57600 0 115200          #设置3#串口为遥控接收机信号输入
set serialrx_provider = SBUS                   #设置接收机为SBUS模式
aux 0 1 0 900 2100 0                              #设置5通道控制模式为自稳模式
set gyro_lowpass_hz = 90                      #设置陀螺仪低通滤波90hz

set motor_pwm_protocol = DSHOT600      #设置马达模式(PWM=OFF;ONESHOT125;DSHOT600;等等, 根据电调支持情况而定,一般的PWM电调就 set motor_pwm_protocol = OFF)

save
-----------------------------------------------------------------------------------

三、校准加速度计,检查遥控,模式的设置成功否,舵机中点设置等等,看图识字吧。
       舵机连接可转动电机底座时,应先置jj水平,供电,使舵机处于中立位,然后尽可能的将电机座竖直,将两者连接起来。由于电机输出齿不一定能在中立位与电机座竖直对应,所以连接后调节电机中点是必须的。

四、起飞心得
a、两轴对jj的重心要求比较严苛,起飞前调整重心尽量靠近两个轴的连线,为了能获得更好的稳定性,重心可以放低一点,这样默认PID起飞更加可靠。
b、起飞推油门要干脆利落,一忍一忍的反而会因为地效,气流反弹导致舵机激烈抖动,不能成功起飞。

五、动力分配矩阵描述请看9楼。





1102715680.jpg (169.52 KB, 下载次数: 330)

1102715680.jpg

1527618244.jpg (188.7 KB, 下载次数: 294)

1527618244.jpg

1646023709.jpg (175.36 KB, 下载次数: 332)

1646023709.jpg

0.jpg (135.87 KB, 下载次数: 333)

0.jpg

1.jpg (278.6 KB, 下载次数: 314)

1.jpg

2.jpg (218.31 KB, 下载次数: 318)

2.jpg

3.jpg (286.27 KB, 下载次数: 342)

3.jpg

4.jpg (220.28 KB, 下载次数: 326)

4.jpg

5.jpg (331.44 KB, 下载次数: 310)

5.jpg

6.jpg (261.97 KB, 下载次数: 292)

6.jpg

7.jpg (412.25 KB, 下载次数: 322)

7.jpg

评分

参与人数 1威望 +2 模币 +10 收起 理由
永丰狼人 + 2 + 10 赞一个!

查看全部评分

欢迎继续阅读楼主其他信息

沙发
发表于 2018-9-21 23:43 | 只看该作者
要火,站位。
3
发表于 2018-9-22 00:04 | 只看该作者
前排围观,等待教程
来自苹果客户端来自苹果客户端
4
发表于 2018-9-22 07:42 | 只看该作者
期待中!
来自安卓客户端来自安卓客户端
5
发表于 2018-9-22 16:28 | 只看该作者
抖动的太厉害了
6
发表于 2018-9-23 20:54 | 只看该作者
强势围观,楼主请继续!
来自安卓客户端来自安卓客户端
7
发表于 2018-9-25 08:32 | 只看该作者
两轴最近比较火
来自安卓客户端来自安卓客户端
8
发表于 2018-9-27 15:47 | 只看该作者
然后呢?期待中
9
 楼主| 发表于 2018-9-29 11:09 | 只看该作者
本帖最后由 yangyh75 于 2018-10-8 14:34 编辑

此楼谈谈运用动力分配矩阵自定义机架类型支持拖了很久,继续作业.........................

任何飞控进行姿态融合计算后都输出四维参数(推力、横滚量、俯仰量和偏航量),飞控的先进性主要体现在这里,从最初的互补滤波到卡尔曼滤波再到扩转卡尔曼滤波,姿态算法越来越优化。但是飞控支持什么样的机架,最终是通过动力分配来实现的。基本是思路就是——每个轴的最终动力=(推力+该轴对roll、pitch、yaw的影响)X {P、I、D}。所以调整相应P、I、D将影响各个姿态的敏感度。

BF/CF的动力分配矩阵是通过一个数组来定义的,而且该数组支持命令行修改,这就为玩家带来了无穷发挥的余地。看图理解

从源代码的数组可以看出,对于Y3机架,要飞得好其重心应该位于纵轴的1/3处。
照葫芦画瓢,你可以自定义Y3的构型:
mixer CUSTOMAIRPLANE                         #自定义机架构型
mmix reset                                               #复位马达混合器
mmix 0 1.000 1.000 -0.666 0.000                #定义左马达对油门100%响应,横滚正向100%响应,俯仰正向66.6%响应
mmix 1 1.000 -1.000 -0.666 0.000              #定义右马达对油门100%响应,横滚反向100%响应,俯仰正向66.6%响应
mmix 3 1.000 0.000 1.333 0.000                #定义尾马达对油门100%响应,横滚反向133.3%响应


smix reset                                                #复位舵机混合器
smix 0 1 2 100 0 0 100 0                         #定义1号舵机偏航100%响应(如果你的舵机方向与实际要求相反,对应修改中间列的正负号就ok)  


如果你的机架非标准对称机架,甚至不一定要是尾电机控制偏航,可以是左或/和右电机控制偏航,更或者是拖把型Y3,只要三角函数计算各个系数,使用自定义分配矩阵理论上会获得更佳的飞行体验。在APM飞控里面,对于Y3有一个第三轴推力补偿,即第三轴倾转后会对向上的推力有影响,降低了第三轴的向上力,在计算舵机倾转角度后,会给第三轴根据倾转角度计算一个额外增加的推力,这个补偿会使得三轴有更好的飞行体验。

------------------------------------------------------------------------
对于X4机架,其各个轴对于roll、pitch都有影响,其在相应轴的投影都是0.5,在源代码里面对于X4的马达混合器是作了整体扩大至2倍处理的,即都是1。在某些飞控里面为了保证机架更改不影响PID数值,其实保持0.5才是最佳选择。


同样照葫芦画瓢,你可以自定义X4的构型:
mixer CUSTOMAIRPLANE                           #自定义机架构型
mmix reset                                               #复位马达混合器
mmix 0 1.000 1.000 -1.000 -1.000              #定义前左马达对油门100%响应,横滚正向100%响应,俯仰反向100%响应,偏航反向100%响应
mmix 1 1.000 -1.000 -1.000 1.000              #定义右马达对油门100%响应,横滚反向100%响应,俯仰反向向100%响应,偏航正向100%响应
mmix 3 1.000 1.000 1.000 1.000                #定义后左马达对油门100%响应,横滚正向100%响应俯仰正向100%响应,偏航正向100%响应
mmix 4 1.000 -1.000 1.000 -1.000              #定义后右达对油门100%响应,横滚反向100%响应俯仰正向100%响应,偏航反向100%响应


偶数轴有需要偏航轴,其偏航是通过正反马达的转速差来实现的。因此四轴(偶数轴非矢量控制必须要正反桨,三轴可以的使用相同的桨,但这样会影响效率。
四轴因采用正反桨的扭矩差控制偏航,无需定于舵机,即smix无需出现




----------------------------------------------------------------------------------------------------------


对于直升机而言,我们有机械混控(总距与横滚、俯仰由机械臂单独控制)和软件混控(CCPM差分螺距调制,由单片机混和总距与横滚、俯仰量,分别直接赋值给三个CCPM舵机)。由于CCPM控制的机械结构简单,舵机能效高,在电控直升机中已经普遍采用。下面就简单谈谈CCPM的动力分配。

直升机控制就是控制十字盘,如图,不管十字盘怎样布局,对我们而言,只要懂得三角函数,就能知道每个舵机对横滚、俯仰、偏航的影响,然后使用舵机航空器命令
ssmix就可以定义出符合要求的
smix 0 2 2 100 0 0 100 0                     
smix                       0                            1                          2                           100                      0                      0                       100              0                     
舵机混合器        定于顺序号                舵机ID               输入量(0—横滚)        速率                    速度                   最小值              最大值            区块
                                                                                  输入量(1—俯仰)
                                                                                  输入量(2—偏航)

以上是舵机混合器的格式,对于速度 、最大值 、 区块不需要关心默认0就好。如果需要一个舵机对于多个输入量就多次smix就好,如两轴里面里的
smix 0 2 2 -100 0 0 100 0                         #定义1号舵机偏航反向100%响应(如果你的舵机方向与实际要求相反,对应修改中间列的正负号就ok)
smix 1 2 1 100 0 0 100 0                          #定义1号舵机对俯仰正向100%响应(如果你的舵机方向与实际要求相反,对应修改中间列的正负号就ok)
smix 2 3 2 -100 0 0 100 0                         #定义2号舵机偏航反向100%响应(如果你的舵机方向与实际要求相反,对应修改中间列的正负号就ok)
smix 3 3 1 -100 0 0 100 0                         #定义2号舵机对俯仰反向100%响应(如果你的舵机方向与实际要求相反,对应修改中间列的正负号就ok)


左右舵机对俯仰、横滚后要响应,就分别smix一次。

对于支奴干实际上就是两个直升机,按照直升机定义的方法定义出6个舵机就好了。之前修改过APM飞控的代码整的支奴干就是按这个思路来的,只不过APM需要在代码里面修改后,重新编译为机器码刷机。详见——pix玩转两轴支奴干手把手教程——

http://bbs.5imx.com/forum.php?mod=viewthread&tid=1388617

................................................................................................................................................
至此,大家应该对F3\4\7飞控的马达混合器(mmix)和舵机混合器(smix)有一个全面的了解了,接下来就是飞控的输出,即物理映射电机、舵机的输出管脚。
使用resource命令你可以任意将马达信号、舵机信号输出到你想要的管脚。由于F3\4\7芯片对管脚的定于不一样,所以在不同芯片的飞控上对于马达混合器(mmix)和舵机混合器(smix)是相同的,对于管脚映射就要区别对待,其格式为:
(以下以F3为例)
resource MOTOR 3 NONE                         #解除3号插钉的物理管脚映射,以备以后使用
resource MOTOR 1 A06                             #物理映射1#马达的控制信号到MCU的A06管脚(1号插钉)
resource SERVO 1 A11                              #物理映射1#舵机的控制信号到MCU的A11管脚(3号插钉)


对于任意的飞控,如何知道其管脚定义?
——方法是重置飞控后,在命令行里面输入   resource       就可以看到飞控插钉对应的管脚定义了,记住每个输出插钉对应的管脚定义号,就可以输入映射命令,自定义修改管脚对应的输出。


最后,记住......................................玩转F3\4\7飞控只需要三步:
一、根据需要mmix;
二、根据需要smix;
三、根据芯片resource






动力分配mmix.jpg (103.02 KB, 下载次数: 297)

动力分配mmix.jpg

机架影响计算.jpg (126.28 KB, 下载次数: 331)

机架影响计算.jpg

直升机十字盘.jpg (32.81 KB, 下载次数: 297)

直升机十字盘.jpg
10
发表于 2018-9-30 19:03 | 只看该作者
f3飞控支持单轴或者共轴双桨的吗?
11
发表于 2018-10-4 23:57 | 只看该作者
楼主真的很厉害
12
发表于 2018-10-5 22:21 | 只看该作者
f3飞控支持2轴吗?
13
发表于 2018-10-8 15:09 | 只看该作者
楼主厉害! 此贴必收藏!
14
发表于 2018-10-9 02:19 | 只看该作者
高手就是厉害,感谢大神
来自安卓客户端来自安卓客户端
15
 楼主| 发表于 2018-10-13 13:11 | 只看该作者
pix飞控也可以飞两轴阿凡达——http://bbs.5imx.com/forum.php?mo ... ;extra=#pid21187715

同样道理,通过修改动力分配矩阵,实现pix飞控的两轴支持。
16
发表于 2018-10-13 14:05 | 只看该作者
讲解的真心不错
来自苹果客户端来自苹果客户端
17
发表于 2018-10-13 17:15 | 只看该作者
F4呢。。。。
18
 楼主| 发表于 2018-10-13 19:30 | 只看该作者

F3/4/7除了管脚映射(芯片的管脚定义不一样)外其余是一样的。
19
发表于 2018-10-16 13:48 | 只看该作者
鱼鹰机,不错
20
发表于 2018-10-25 12:19 | 只看该作者
楼主历害!我现在也学着做两轴,遇到了一个问题,F3飞控bicopter模式,推油门后舵机前倾但舵机不会回中,刚解锁电机旋转舵机是可以回中的,一加速就不行了,楼主能帮着解决下嘛,谢谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表