RoboMaster

标题: 【RM2020-供开源飞控】E2000动力系统部分性能曲线函数拟合 [打印本页]

作者: Kevin_JF    时间: 2020-11-30 21:33
标题: 【RM2020-供开源飞控】E2000动力系统部分性能曲线函数拟合
这周在用开源飞控+DJI E2000Pro动力系统过程中遇到的一些问题,在这里和大家分享一下原因和解决办法。
先上问题视频
https://v.youku.com/v_show/id_XNDk2NjQ0Mjg2OA==
从视频中可以看到飞机姿态在起飞阶段过程较为平稳。起飞后打杆进行方位飞行后,四轴飞行器姿态迅速改变以轴心为基准晃动。
现象分析:飞机在起飞阶段姿态较为平稳,因为不涉及姿态改变,4个电机输出值较为接近。起飞后打杆飞机晃动,因为姿态改变,各个电机输出需改变,飞控未能输出正确的参数值,使得未能飞机未能达到目标姿态。

问题分析:DJI E2000动力系统是速度闭环,油门和转速是线性关系,导致油门和拉力成二次方关系,油门-拉力动力曲线下凹。而普通PWM电调+电机,油门和拉力成线性关系。导致电机输出拉力值低于期望拉力值。

解决方案一:更换电调,成本较高,且E2000Pro为一体化设计,更换复杂。

解决方案二:在程序中最后输出每个电机油门的地方,转换成比较凸的曲线,补偿电调本身比较凹的曲线。

考虑解决方案二,成本较低,易实现。于是利用电子称自制简易拉力测试设备,如下图
[attach]28139[/attach]

鉴于电子称精度较低,最小分度值为50g,因此拟合出来的数据稍有出入。
下面上数据

[attach]28144[/attach]



求得拟合油门-拉力拟合函数

[attach]28145[/attach]

取油门-拉力首个点和最后一个点作为期望拟合得到的油门-拉力线性关系。
推出补偿函数

[attach]28146[/attach]



代码实现:在程序中找到飞控配置pwm输出前,最终每个电机油门输出的数组。我的代码里是先有motor_step【i】数组然后限幅后再传给motor【i】。因此我选择在motor_step这里进行补偿,然后传递给motor【i】再进行输出。(实际上在motor_step或者motor数组进行补偿没什么区别,因为代码要求0油门对应0输出值,油门量范围为0-1000,单位0.1%,因此简化补偿函数,如代码)

[attach]28149[/attach]

最后附赠一个转速-拉力曲线。通过计算E2000手册中的动力曲线像素点算出来的,还挺准的

[attach]28150[/attach]

[attach]28151[/attach]








欢迎光临 RoboMaster (https://bbs.robomaster.com/) Powered by Discuz! X3.2