综合技术
直播中

袁伟

7年用户 190经验值
私信 关注
[问答]

请问在只有气压计的情况下如何做到定高模式一键起飞?

自稳模式下起飞,再切换到定高模式可以差不多定高。但是如果定高模式起飞,直接给设定高度就不行。。猜测可能是基础油门原因造成的,用原子哥的定高油门检测在刚起飞的时候行不通,而且基础油门根据电压变化太严重,满电的时候给30%就非常高了,快没电的时候给到50%才行。。
还有就是气压计在刚起飞的时候非常不稳定,设定高度也不太好确认。
请问在只有气压计的情况下是如何做到定高模式一键起飞的呢?

回帖(13)

李娓仑

2019-7-12 11:56:06
高度是经过气压计和加速计融合的,不是直接给的,一键起飞后,控制油门保持飞机在某一个高度3秒,四轴自动更新基础油门值,下次飞定高效果就好了
举报

王伊

2019-7-12 12:08:53
我的高度也是经过加速度计融合的。。
现在遇到的问题是一键起飞的起飞设定高度给1米,定高油门给30%   如果电压比较高的话可以达到设定高度,但是如果满电会过冲比较严重;如果电压稍低那直接就达不到设定高度,而且这时候由于飞的比较低,这时候地面效应导致小四轴忽上忽下,没法通过检测定高油门来重设基础油门。。
我看的原子哥的一键起飞好像是直接给了目标高度。。是有其他的设置我看漏了么?
举报

张海宝

2019-7-12 12:23:14
我们没给定目标高度,高度方向是速度控制,然后积分就是高度,这个高度也是个大概值,不是特别精准的,对于电压导致油门变化这个问题,可以试试电压油门补偿的方法,具体的看我们的代码。
举报

邓天文

2019-7-12 12:32:28
我知道摇杆是用来控制速度的,但是最终PID不应该还是高度控制吗?
newThrust = THRUST_SCALE * runPidZ(&posPid.pidVZ, state->position.z, setpoint, POS_UPDATE_DT);
这里state->position.z应该就是拟合后的高度吧?
axis->setpoint += setpoint->velocity.z * dt;
这里把摇杆的位置转换成速度然后积分得到目标高度
out = pidUpdate(&axis->pid, axis->setpoint - input);
运行PID   目标值高度-当前高度
如果理解没有问题的话,那一件起飞是在定高模式下,应该有一个目标高度吧?
setpoint->thrust = 0;
setpoint->isAltHold = true;
setpoint->velocity.z = (rawThrust - 32768.f) / 32768.f;
这里是一键起飞的内容,如果油门中点是32768的话那油门在中点起飞速度是0,那目标高度如何确认的呢?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分