OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 871|回复: 13

一键起飞达不到设定高度,而且电压不同变化太严重

[复制链接]

  离线 

24

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2014-4-18
在线时间
79 小时
发表于 2017-11-15 17:41:33 | 显示全部楼层 |阅读模式
50金钱
自稳模式下起飞,再切换到定高模式可以差不多定高。但是如果定高模式起飞,直接给设定高度就不行。。猜测可能是基础油门原因造成的,用原子哥的定高油门检测在刚起飞的时候行不通,而且基础油门根据电压变化太严重,满电的时候给30%就非常高了,快没电的时候给到50%才行。。
还有就是气压计在刚起飞的时候非常不稳定,设定高度也不太好确认。
请问在只有气压计的情况下是如何做到定高模式一键起飞的呢?


回复

使用道具 举报

  离线 

3

主题

2090

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3817
金钱
3817
注册时间
2013-11-22
在线时间
686 小时
发表于 2017-11-15 21:33:26 | 显示全部楼层
高度是经过气压计和加速计融合的,不是直接给的,一键起飞后,控制油门保持飞机在某一个高度3秒,四轴自动更新基础油门值,下次飞定高效果就好了
回复

使用道具 举报

  离线 

24

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2014-4-18
在线时间
79 小时
 楼主| 发表于 2017-11-15 23:14:31 | 显示全部楼层
lycreturn 发表于 2017-11-15 21:33
高度是经过气压计和加速计融合的,不是直接给的,一键起飞后,控制油门保持飞机在某一个高度3秒,四轴自动 ...

我的高度也是经过加速度计融合的。。

现在遇到的问题是一键起飞的起飞设定高度给1米,定高油门给30%   如果电压比较高的话可以达到设定高度,但是如果满电会过冲比较严重;如果电压稍低那直接就达不到设定高度,而且这时候由于飞的比较低,这时候地面效应导致小四轴忽上忽下,没法通过检测定高油门来重设基础油门。。

我看的原子哥的一键起飞好像是直接给了目标高度。。是有其他的设置我看漏了么?
回复

使用道具 举报

  离线 

3

主题

2090

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3817
金钱
3817
注册时间
2013-11-22
在线时间
686 小时
发表于 2017-11-16 08:52:28 | 显示全部楼层
Mfweb 发表于 2017-11-15 23:14
我的高度也是经过加速度计融合的。。

现在遇到的问题是一键起飞的起飞设定高度给1米,定高油门给30%   ...

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

使用道具 举报

  离线 

24

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2014-4-18
在线时间
79 小时
 楼主| 发表于 2017-11-16 14:13:54 | 显示全部楼层
正点原子公众号
lycreturn 发表于 2017-11-16 08:52
我们没给定目标高度,高度方向是速度控制,然后积分就是高度,这个高度也是个大概值,不是特别精准的,对 ...

我知道摇杆是用来控制速度的,但是最终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,那目标高度如何确认的呢?
回复

使用道具 举报

  离线 

500

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
129739
金钱
129739
注册时间
2010-12-1
在线时间
1169 小时
发表于 2017-11-16 22:16:53 | 显示全部楼层
Mfweb 发表于 2017-11-16 14:13
我知道摇杆是用来控制速度的,但是最终PID不应该还是高度控制吗?

newThrust = THRUST_SCALE * runPid ...

是的,有个目标高度。
这个和传感器的精度以及当时的气压变化情况(比如有风,无风)
来决定的。
我们的设置是,你开机的时候(停在地上),按照正常的情况,飞高约1m左右。
但是这个只是个大概高度,有时候可能高一些,有时候可能矮一些,就是跟当时的具体条件有关了。
所以,一键起飞,只要能飞起来,接下来就要靠你的油门,去控制高度了。
而且定高飞的时候,也同样是可能高低变化的。
如果要精准定高,可以考虑加超声波,或者激光定高。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

24

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2014-4-18
在线时间
79 小时
 楼主| 发表于 2017-11-17 08:16:08 | 显示全部楼层
正点原子 发表于 2017-11-16 22:16
是的,有个目标高度。
这个和传感器的精度以及当时的气压变化情况(比如有风,无风)
来决定的。

谢谢原子哥回答,
请问这个1米左右是怎样确定的呢?直接给目标1米么,还是说给基础定高油门来确定呢?
我现在是采用给定高高度,但是不是非常稳定
回复

使用道具 举报

  离线 

500

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
129739
金钱
129739
注册时间
2010-12-1
在线时间
1169 小时
发表于 2017-11-17 10:45:59 | 显示全部楼层
Mfweb 发表于 2017-11-17 08:16
谢谢原子哥回答,
请问这个1米左右是怎样确定的呢?直接给目标1米么,还是说给基础定高油门来确定呢 ...

通过气压计的固有计算方式(比如气压增加多少,增加多少米,按这个比例来算的)
不稳是正常的,气压定高,会有一定误差。
目前最好的气压定高芯片是MS5611,但是我买用的不是这颗,更多是用算法和补偿,来实现比较好的一个定高效果。

如果用MS5611的话,效果会更好。但是无论如何,都会有一定偏差,因为四轴的四个桨打下来的风力,会干扰气压计的 读数。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

3

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2016-7-11
在线时间
61 小时
发表于 2017-12-27 18:39:00 | 显示全部楼层
正点原子 发表于 2017-11-17 10:45
通过气压计的固有计算方式(比如气压增加多少,增加多少米,按这个比例来算的)
不稳是正常的,气压定高 ...

原子哥,匿名用了歌德的SPL06-001,好像精度比MS5611还要好,并且价格超级便宜,15年原子哥也问了这款气压计的价格,为什么我们的MiniFly没有用这款气压计啊?
回复

使用道具 举报

  离线 

500

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
129739
金钱
129739
注册时间
2010-12-1
在线时间
1169 小时
发表于 2017-12-28 00:50:46 | 显示全部楼层
耘耔 发表于 2017-12-27 18:39
原子哥,匿名用了歌德的SPL06-001,好像精度比MS5611还要好,并且价格超级便宜,15年原子哥也问了这款气压 ...

也不便宜吧,看淘宝6块,另外,这个我没有用过,也不确定精度能到多少
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

9

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-2-20
在线时间
51 小时
发表于 2018-3-13 09:59:53 | 显示全部楼层
正点原子 发表于 2017-11-16 22:16
是的,有个目标高度。
这个和传感器的精度以及当时的气压变化情况(比如有风,无风)
来决定的。

请问一键起飞这个目标高度 是怎么设置的,怎样飞高一米
回复

使用道具 举报

  离线 

9

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-2-20
在线时间
51 小时
发表于 2018-3-13 20:47:26 | 显示全部楼层
正点原子 发表于 2017-11-16 22:16
是的,有个目标高度。
这个和传感器的精度以及当时的气压变化情况(比如有风,无风)
来决定的。

请问原子哥 我现在就是在弄这个买的小四轴的定高 我没有使用遥控器 我想让四轴开机过后,自己实现定高 我想问问 一键起飞就是让飞机先大概飞高1米,再来用气压计定高么 我看程序是直接对z轴速度进行积分,那怎么能确定我们的期望高度呢?
回复

使用道具 举报

  离线 

500

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
129739
金钱
129739
注册时间
2010-12-1
在线时间
1169 小时
发表于 2018-3-14 01:22:26 | 显示全部楼层
liuamin 发表于 2018-3-13 20:47
请问原子哥 我现在就是在弄这个买的小四轴的定高 我没有使用遥控器 我想让四轴开机过后,自己实现定高 我 ...

无法精确1m的,你要精确的,加其他传感器,比如超声波、激光测距之类的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

  离线 

9

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
245
金钱
245
注册时间
2017-5-5
在线时间
101 小时
发表于 2018-3-14 16:08:47 | 显示全部楼层
正点原子 发表于 2018-3-14 01:22
无法精确1m的,你要精确的,加其他传感器,比如超声波、激光测距之类的。

建议给源码添加SPL06的驱动  可以让客户自己更换
好玩的STM32开源项目  554150925
本人的小店:https://shop110563242.taobao.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




关闭

"原子哥”推荐上一条 /1 下一条

QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-7-20 01:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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