红树林下的鱼 发表于 2012-8-7 21:57:15

请教四轴中陀螺仪和加速度计的数据如何处理?谢谢

本帖最后由 红树林下的鱼 于 2012-8-7 21:59 编辑

问题:我的四轴在电机不转的时候,陀螺仪和加速度计的读数都很稳定,当电机转起来后,陀螺仪和加速度计的数据波动很大
这是陀螺仪测出的角速度的数据





用这些数据计算出来的姿态角简直没法看,电机一转就飙到十几度去了。
加速度计测出的数据和陀螺仪的曲线差不多,也是会抖动,
用AngleAcc.x=atan2(AngleAcc_tmpx,AngleAcc_tmpz)*180/PI;
   AngleAcc.y=atan2(AngleAcc_tmpy,AngleAcc_tmpz)*180/PI;
这两个公式计算出来的姿态角也会漂的很大。
不知道如何解决这个问题?如何能在保证数据实时性的同时得到更加准确的数据?求指导

就是一枪 发表于 2012-8-7 22:00:03

不懂。。。帮顶。{:lol:}{:lol:}坐等大神来解决。

976717326 发表于 2012-8-7 22:00:27

求大神指导。。

xue_xi_zhong 发表于 2012-8-8 09:59:37

电机转以后肯定有更大的误差,当然还得看你用什么算法,如果是直接积分的话十多度很正常,所以我们得用其它算法,你可以试试四元数或卡尔曼之类的算法

ouyangyu 发表于 2012-8-8 10:39:19

帮顶   

boostchopper 发表于 2012-8-8 11:01:06

本帖最后由 boostchopper 于 2012-8-8 11:03 编辑

LZ看起来用的labview?
握个爪,我也是用的这个

嘛,其实这个是需要滤波的,简单的如均值(有前辈提过,大概100个值均值比较接近实际值),还有的高端一点的IIR数字滤波器等

还有,就是在这个系统里面,三轴的倾斜角不能这么算的,要把第三个轴一起加上。因为重力被三个轴分解了(不是两个),所以必须要把其中两个合成之后,再和第三个做三角变换
像这样——
θ=arctan(X/sqrt(Y*Y+Z*Z))

红树林下的鱼 发表于 2012-8-8 17:15:58

陀螺仪积分用的就是四元数,可是算出的角度还是抖动很大

红树林下的鱼 发表于 2012-8-8 17:22:06

图片的确是labview获取的,你说的滤波是在角度积分之前进行的吗?如果这样会不会损失陀螺仪的精度?

cshp138 发表于 2012-8-8 17:53:09

硬件上可以做个金属屏蔽;卡尔曼算法滤波。

红树林下的鱼 发表于 2012-8-8 20:13:03

cshp138 发表于 2012-8-8 17:53 static/image/common/back.gif
硬件上可以做个金属屏蔽;卡尔曼算法滤波。

不知道金属屏蔽有什么用?我试过把电路板从四轴上拿下来,在开电机,数据基本不会抖动。所以应该不会是电磁干扰,应该是机械振动导致的

20061002838 发表于 2012-8-8 23:53:29

电机转动时的机械振动干扰了传感器,主要是加速度计受到了干扰。
我用的是卡尔曼滤波,调试的时候电机一开,静止时滤波后的波形会有2-3度的跳动,加速度计和陀螺仪输出的数据都有干扰。我把程序里面传递给滤波函数的陀螺仪输出值改为0(我的传感器没有转动,理想情况下陀螺仪的输出就是0),滤波后的跳动还是跟之前一样,没有改善,于是推断跳动主要是加速度计造成的。随后我把每次采集到的加速度计数据做一次平均值滤波再参与卡尔曼滤波,这时候卡尔曼的输出波形就好了很多,静止时跳动在1度以内,这也印证了之前加速度计造成结果跳动的推断。
建议你在四元数之前先对加速度计数据做一次滤波。

清风阙月 发表于 2012-8-9 08:35:31

20061002838 发表于 2012-8-8 23:53 static/image/common/back.gif
电机转动时的机械振动干扰了传感器,主要是加速度计受到了干扰。
我用的是卡尔曼滤波,调试的时候电机一开 ...

我最近也在做加速度计和的陀螺仪的卡尔曼滤波但是我对这个滤波很不熟   你有啥资料能用来参考下吗??{:smile:}

fc23fcevff23 发表于 2012-8-9 10:03:36

xue_xi_zhong 发表于 2012-8-8 09:59 static/image/common/back.gif
电机转以后肯定有更大的误差,当然还得看你用什么算法,如果是直接积分的话十多度很正常,所以我们得用其它 ...

直接积分十多度?我带电机直接积分,5分钟内也最大也就5度,ADIS16405。

fc23fcevff23 发表于 2012-8-9 10:06:24

本帖最后由 fc23fcevff23 于 2012-8-9 10:08 编辑

红树林下的鱼 发表于 2012-8-8 17:15 static/image/common/back.gif
陀螺仪积分用的就是四元数,可是算出的角度还是抖动很大

我估计你是不是计算公式出了问题:例如误将角度当成弧度之类的,或者数据采集电路有问题。
总之,这么大的波动,我一直没碰到,无论是我以前用的ADRS650还是ADIS16405。

fc23fcevff23 发表于 2012-8-9 10:08:38

红树林下的鱼 发表于 2012-8-8 20:13 static/image/common/back.gif
不知道金属屏蔽有什么用?我试过把电路板从四轴上拿下来,在开电机,数据基本不会抖动。所以应该不会是电 ...

建议直接用个简单低通数字滤波器,对角速度和加速度都滤波,看看输出是否正常。这是最简单的办法,如果没有效果,说明不是滤波出了问题,那你要从别的地方找问题了。

20061002838 发表于 2012-8-9 10:10:55

清风阙月 发表于 2012-8-9 08:35 static/image/common/back.gif
我最近也在做加速度计和的陀螺仪的卡尔曼滤波但是我对这个滤波很不熟   你有啥资料能用来参考下吗??{ ...


这是我在网上找到的代码,测试过效果不错
对于卡尔曼滤波,我也只能说是一知半解,呵呵,一起学习
调用之前需要先初始化一下数据
void kalman_Init(void)
{
    KalmanParamX.angle = 0.0;
    KalmanParamX.q_bias = 0.0;

    KalmanParamX.dt = 0.009388;

    KalmanParamX.P = 1.0;
    KalmanParamX.P = 0.0;
    KalmanParamX.P = 0.0;
    KalmanParamX.P = 1.0;

    KalmanParamX.Q_angle = 0.001;
    KalmanParamX.Q_gyro = 0.0000015527;
    KalmanParamX.R_angle = 0.3;
}

afei276868586 发表于 2012-8-9 10:12:58

顶起,等待高手

xue_xi_zhong 发表于 2012-8-9 10:32:37

fc23fcevff23 发表于 2012-8-9 10:03 static/image/common/back.gif
直接积分十多度?我带电机直接积分,5分钟内也最大也就5度,ADIS16405。

五分钟直接积分你的误差都能这么小?你是如何做到的,另外你是一直固定四轴还是不断摆动也有如此的效果?

fc23fcevff23 发表于 2012-8-9 10:38:15

xue_xi_zhong 发表于 2012-8-9 10:32 static/image/common/back.gif
五分钟直接积分你的误差都能这么小?你是如何做到的,另外你是一直固定四轴还是不断摆动也有如此的效果? ...

直接积分,控制电机,程序很简单。没有PID,没有滤波,就为了验证一下买的芯片是不是正品!

xue_xi_zhong 发表于 2012-8-9 10:57:46

fc23fcevff23 发表于 2012-8-9 10:38 static/image/common/back.gif
直接积分,控制电机,程序很简单。没有PID,没有滤波,就为了验证一下买的芯片是不是正品! ...

想问一下你的中立点是怎么设置的,是每次开机设置一次吗,我老觉得这中立点不好设

fc23fcevff23 发表于 2012-8-9 10:59:13

xue_xi_zhong 发表于 2012-8-9 10:57 static/image/common/back.gif
想问一下你的中立点是怎么设置的,是每次开机设置一次吗,我老觉得这中立点不好设 ...

每次开机设置一次。

fc23fcevff23 发表于 2012-8-9 11:04:43

本帖最后由 fc23fcevff23 于 2012-8-9 11:07 编辑

xue_xi_zhong 发表于 2012-8-9 10:57 static/image/common/back.gif
想问一下你的中立点是怎么设置的,是每次开机设置一次吗,我老觉得这中立点不好设 ...

短信收到了,但是我没有权限回复。
我在这里回复吧:对不起,我没有QQ。我并没有什么特别的算法,就是直接梯形积分而已,完全没有别的。如果你跟我用的是一款芯片,那我觉得你的积分周期也许不准,或者漂移补偿也许有问题。另外,如果你传输模拟数据,你可以尝试用载波的方法传输数据,那么就可以几乎不受任何漂移的影响了。

另外,ADIS16405自带一些基本的低通滤波功能,我设置过这些滤波选项,这也许也是一个原因吧!

xue_xi_zhong 发表于 2012-8-9 11:12:49

我的四轴硬件是陀螺仪L3G4200D+加速度传感器LIS3DH,主控晶振50MHZ,软件是这样做的:利用定时中断每隔2ms定时采集陀螺仪和加速度的原始值,这期间共花去800US,在主函数中,不断检测是否采集完,如果采集完,就对陀螺仪的值转成变化角速度,转换过程是乘以这段时来的时间,然后经过四元数的运算得到陀螺仪的姿态角,而出现的情况是:这个姿态角在不开电机时在静止时误差很小,但是开电机后,就开始不断的跳变,就算用手固定四轴也没用,过一分钟大概都会有五六度的误差,有时会更大,另外我发现由于四元数是用浮点运算,花去了我大概1MS左右的时间,而加速度的值转换成角度那个sqrt()也很耗时,加起来运算过程就花了我不下3MS,所以导致运算一次,陀螺仪都采集了两次了,不知道兄台你是怎么做的?

xue_xi_zhong 发表于 2012-8-9 11:21:52

fc23fcevff23 发表于 2012-8-9 11:04 static/image/common/back.gif
短信收到了,但是我没有权限回复。
我在这里回复吧:对不起,我没有QQ。我并没有什么特别的算法,就是直 ...

没事,就是觉得有时聊的不方便,本来也不允许私下聊,大家不懂的一起共享知识嘛,我的是数据陀螺仪,用的是软件IIC接收信号,由于当时画板时没考虑好,硬件IIC没用上,所以也比较耗时,我的积分时间是通过定时器算出来了,就是算完一次姿态,就对积分时间清0,让定时器累加,等到下次运算到此,即为积分时间,所以积分时间应该没什么问题吧,我的四元数代码都从http://bbs.5imx.com/bbs/viewthread.php?tid=504301&extra=&page=1此处来的,我相信很多人的四元数都是通过他那里来的

boostchopper 发表于 2012-8-9 11:24:44

红树林下的鱼 发表于 2012-8-8 17:22 static/image/common/back.gif
图片的确是labview获取的,你说的滤波是在角度积分之前进行的吗?如果这样会不会损失陀螺仪的精度? ...

不会的。。。。
整个系统中陀螺仪的角速度的计算周期很快的,不知道你的周期是多少,我的积分周期是2ms,这么快的速度下,陀螺仪的角速度即使是有白噪声,也很快就自行抵消掉了,根本不用担心
关键是三轴加速度,这个受到震动的影响特别厉害,我的融合周期是200ms一次,期间是120个值拿来做均值,效果还好。

红树林下的鱼 发表于 2012-8-9 12:00:29

boostchopper 发表于 2012-8-8 11:01 static/image/common/back.gif
LZ看起来用的labview?
握个爪,我也是用的这个



您所说的:θ=arctan(X/sqrt(Y*Y+Z*Z))这个公式计算出来的角度应该是体坐标系xy平面与参考平面(水平面)的夹角,不是欧拉角。我用的是姿态四元数的方法,要计算的是欧拉角

fc23fcevff23 发表于 2012-8-9 12:08:51

xue_xi_zhong 发表于 2012-8-9 11:12 static/image/common/back.gif
我的四轴硬件是陀螺仪L3G4200D+加速度传感器LIS3DH,主控晶振50MHZ,软件是这样做的:利用定时中断每隔2ms定 ...

回复晚了,因为我是新手,所以每小时只能回复5次。

我一开始也是想用四元数,后来去找老师指导,老师也不是很懂,所以我就没有用四元数了。
因为当时学校组织参加比赛,所以时间忙,我就直接用了球坐标进行姿态解算了,这应该是最简单的办法了吧!
我的主处理器是DSP5402,主频100MHz。采样频率忘记了(大三时弄过,过去很久了),不高,反正没过1K。
我也是用的浮点运算,运算周期我是用示波器直接测量的,直到测出的周期与理论预想的周期相同为止,我记得是300Hz(最高可以跑到400多一点)。
这300HZ,我跟你一样,也是用计时器计算出来的。

关于加速度计:我直接对加速度进行两次积分,根本没法用(我当初还天真的以为可以由此算出位移的~~)。

总之,你可以试试直接用了球坐标进行姿态解算,不用加速度计融合,我觉得只要你调校的准确,5分钟内偏差肯定不会有10度那么大。
另外,加一个简单的低通数字滤波器吧,这很实用!

红树林下的鱼 发表于 2012-8-9 12:14:34

xue_xi_zhong 发表于 2012-8-9 11:12 static/image/common/back.gif
我的四轴硬件是陀螺仪L3G4200D+加速度传感器LIS3DH,主控晶振50MHZ,软件是这样做的:利用定时中断每隔2ms定 ...

兄弟,我用的陀螺仪和加速度计和你的是一样的,也是不开电机的时候数据很稳定,开电机之后角速度波动就很大,但是经过四元数积分计算出来的角度不会抖只是会漂的很快:



这是我测试的取消加速度校准陀螺仪这一步后,陀螺仪的角度变化,可以看出不会抖动了,但是会漂的很厉害

抖动的话加速度计的数据的确特别难看



这是我直接读取的加速度计的三轴的数据,特别吓人,在程序里我是把这些数据取了40次左右的平均,再用来计算角度的,可是角度仍然很抖:



这是加速度计算出的角度,特别抖。都不知道能不能用。
你应该也遇到过类似的问题吧,不知道你是怎么解决的?

红树林下的鱼 发表于 2012-8-9 12:19:53

boostchopper 发表于 2012-8-9 11:24 static/image/common/back.gif
不会的。。。。
整个系统中陀螺仪的角速度的计算周期很快的,不知道你的周期是多少,我的积分周期是2ms, ...

的确试过了,陀螺仪积分后不是会抖了,可是会漂的很快,必须要用其他传感器来校正,可是我加速度计测出的角度太不靠谱了,把它和陀螺仪融合感觉就是把不会抖动的角度给变抖了。

xue_xi_zhong 发表于 2012-8-9 12:22:55

红树林下的鱼 发表于 2012-8-9 12:14 static/image/common/back.gif
兄弟,我用的陀螺仪和加速度计和你的是一样的,也是不开电机的时候数据很稳定,开电机之后角速度波动就很 ...

呵呵没想到你的硬件竟然和我一样,要知道LIS3DH很少有人用哦,我现在是通过陀螺仪的零偏和400MS的加速度融合,但是也没达到我想要的效果,共同努力吧,另外能否共享一下你的上机位?我一直都是通过串口直接接收数据看的,不太方便,谢谢

红树林下的鱼 发表于 2012-8-9 12:23:02

fc23fcevff23 发表于 2012-8-9 12:08 static/image/common/back.gif
回复晚了,因为我是新手,所以每小时只能回复5次。

我一开始也是想用四元数,后来去找老师指导,老师也 ...

您是用的DSP做的处理器,浮点运算比我用的STM32快多了,STM32进行浮点运算特别慢,在程序里试过将一些变量改成浮点型来跑,结果整个运行周期增加了很多,数据采集就慢了。

红树林下的鱼 发表于 2012-8-9 12:27:45

xue_xi_zhong 发表于 2012-8-9 12:22 static/image/common/back.gif
呵呵没想到你的硬件竟然和我一样,要知道LIS3DH很少有人用哦,我现在是通过陀螺仪的零偏和400MS的加速度 ...

我之前加速度计用的是ADXL345的,后来换成了LIS3Dh,不过感觉还是没什么变化,数据都抖的没法看,之前我是取40次的加速度计的数据做平均,效果还是不太好,待会试试120次
这是我的上位机软件:



xue_xi_zhong 发表于 2012-8-9 12:31:05

红树林下的鱼 发表于 2012-8-9 12:23 static/image/common/back.gif
您是用的DSP做的处理器,浮点运算比我用的STM32快多了,STM32进行浮点运算特别慢,在程序里试过将一些变 ...

我现在觉得我最大的误差就是在这浮点运算上,跑得特别慢,我的主控用的是新唐的芯片,内部晶振最大只能达到50MHZ,你的STM32主频是多少的?这款LIS3DH加速度传感器我觉得确实很不好用,或者是我不会用吧,反正一开电机数据就感觉很乱很乱,只有大概采集100次以上平均有点接近真实值,所以为了这款加速度我郁闷了好久,早想换了,可是不想再改板而已

xue_xi_zhong 发表于 2012-8-9 12:34:17

红树林下的鱼 发表于 2012-8-9 12:27 static/image/common/back.gif
我之前加速度计用的是ADXL345的,后来换成了LIS3Dh,不过感觉还是没什么变化,数据都抖的没法看,之前我 ...

你的版本是11版本的,我是8.6的,看来得重新安装一个了,另外想问一下发送数据的格式是什么的

fc23fcevff23 发表于 2012-8-9 12:59:35

本帖最后由 fc23fcevff23 于 2012-8-9 13:05 编辑

红树林下的鱼 发表于 2012-8-9 12:23 static/image/common/back.gif
您是用的DSP做的处理器,浮点运算比我用的STM32快多了,STM32进行浮点运算特别慢,在程序里试过将一些变 ...

那你可以试着用数字序列实现运算,比如低通滤波之类的用数字序列会大大降低对处理器的要求。

另外,我表示你28楼的这数据完全不靠谱啊!
我用的是ADI公司推荐的USB工具来查看ADIS16405数据的(就是一个USB小板),也没有平均数值,但没见过你这么大的波动啊!我记得当时看起来就是一根近似的直线。

你是不是设置有误啊?你的加速度计输出值单位是什么?

红树林下的鱼 发表于 2012-8-9 15:13:50

fc23fcevff23 发表于 2012-8-9 12:59 static/image/common/back.gif
那你可以试着用数字序列实现运算,比如低通滤波之类的用数字序列会大大降低对处理器的要求。

另外,我表 ...

设置错误吗?不会吧,这是我设置加速度寄存器的代码:
IIC_WriteReg(ACCELERATE_ADDR,CTRL_REG1,0x77);                // CTRL_REG1            400Hz,三轴都使能
IIC_WriteReg(ACCELERATE_ADDR,CTRL_REG2,0x00);                         // CTRL_REG2           正常模式
IIC_WriteReg(ACCELERATE_ADDR,CTRL_REG3,0x00);                // CTRL_REG3           禁止Int1与Int2上的所有中断
IIC_WriteReg(ACCELERATE_ADDR,CTRL_REG4,0x00);               // CTRL_REG4           量程2g
IIC_WriteReg(ACCELERATE_ADDR,CTRL_REG5,0x40);                // CTRL_REG5           FIFO使能
加速度计是LIS3DH,这是它的数据手册


红树林下的鱼 发表于 2012-8-9 15:19:12

xue_xi_zhong 发表于 2012-8-9 12:34 static/image/common/back.gif
你的版本是11版本的,我是8.6的,看来得重新安装一个了,另外想问一下发送数据的格式是什么的 ...

从串口向电脑发送字节,比如你要发的是3个浮点数x,y,z。按下面的步骤处理,将得到的一个unsigned char型的数组通过串口发给电脑就可以了
x+=180;                          //上位机处理需要
y+=180;
z+=180;
Package='s';       
float2char(x,Package+1);
float2char(y,Package+6);
float2char(z,Package+11);
Package='e';                //加结束符

fc23fcevff23 发表于 2012-8-9 15:27:09

红树林下的鱼 发表于 2012-8-9 15:13 static/image/common/back.gif
设置错误吗?不会吧,这是我设置加速度寄存器的代码:
IIC_WriteReg(ACCELERATE_ADDR,CTRL_REG1,0x77);   ...

哦,对不起,我看错了。你是跟xue_xi_zhong用的是相同芯片!
我用的是ADIS16405,它有一个附带USB小板,可直接读取数据显示在电脑屏幕上,我当时是通过这个小板查看数据的。
至于你说的这一款芯片,我没用过,你可以参考数据手册上的精度标准,也可以用数据手册上推荐的通信代码。

xue_xi_zhong 发表于 2012-8-9 15:30:20

红树林下的鱼 发表于 2012-8-9 15:19 static/image/common/back.gif
从串口向电脑发送字节,比如你要发的是3个浮点数x,y,z。按下面的步骤处理,将得到的一个unsigned char型 ...

好的,谢谢

xue_xi_zhong 发表于 2012-8-9 15:33:33

fc23fcevff23 发表于 2012-8-9 15:27 static/image/common/back.gif
哦,对不起,我看错了。你是跟xue_xi_zhong用的是相同芯片!
我用的是ADIS16405,它有一个附带USB小板, ...

你用的传感器都是模拟的,我们用的是数据传感器,所以设置方面有所不同,另外想问一下你说的球系坐标怎么用?

fc23fcevff23 发表于 2012-8-9 15:36:32

xue_xi_zhong 发表于 2012-8-9 15:33 static/image/common/back.gif
你用的传感器都是模拟的,我们用的是数据传感器,所以设置方面有所不同,另外想问一下你说的球系坐标怎么 ...

我用的是全数字的,直接SPI通信。球坐标,这个不用我多说了吧?《高等数学》的向量几何讲的很清楚。

蓝海de梦 发表于 2012-8-9 21:03:56

红树林下的鱼 发表于 2012-8-9 12:14 static/image/common/back.gif
兄弟,我用的陀螺仪和加速度计和你的是一样的,也是不开电机的时候数据很稳定,开电机之后角速度波动就很 ...

我开始的陀螺仪L3G4200D四元数更新后解耦角度再传送回PC端也是漂的非常厉害,当初想可能是积分周期错误吧,就在更新四元数的时候关闭定时器,不是太理想,手边也没示波器,不知道你的这个问题解决没,但是我的程序如果更改积分周期再计算的话(改的很小)就正常了,不过改的那个积分周期跟我定时器设置的差很多,所以应该不对,

蓝海de梦 发表于 2012-8-9 21:06:32

对了,你开始用的那两个公式我之前也用过,有点问题,如果用那两个公式的话,解耦出的角度,转动一个轴会使另一个轴出现较大转动,但其实没有

红树林下的鱼 发表于 2012-8-9 21:06:40

xue_xi_zhong 发表于 2012-8-9 12:31 static/image/common/back.gif
我现在觉得我最大的误差就是在这浮点运算上,跑得特别慢,我的主控用的是新唐的芯片,内部晶振最大只能达 ...

你说你现在主要的问题是处理器处理浮点速度过慢,不知道你在PID控制里是如何使用角速度的?
我用陀螺仪测得的角速度抖动很大,不能直接用来做PID,否则连起飞都挺困难,可是一直没有找到好的处理陀螺仪角速度抖动的问题,要保证角速度的准确性又要保证实时性,不知道用什么方法好

红树林下的鱼 发表于 2012-8-9 21:41:27

蓝海de梦 发表于 2012-8-9 21:03 static/image/common/back.gif
我开始的陀螺仪L3G4200D四元数更新后解耦角度再传送回PC端也是漂的非常厉害,当初想可能是积分周期错误吧 ...

我的陀螺仪积分得到的角度也是会漂的很厉害,不知道是什么原因,如果是积分周期出错了话,那不开电机角度也应该会漂,可是我测试的是,不开电机,然后过很长时间,陀螺仪积分的角度漂的很小很小,几乎可以忽略,而且不开电机的情况下,摇动四轴,再回到水平面,角度依然漂的很小,所以应该不是积分周期的原因

philbar 发表于 2012-8-9 21:52:12

高级陀螺仪 - -
2b陀螺仪只能每次开机重订中点。

philbar 发表于 2012-8-9 21:54:06

你可以想想看为什么要陀螺仪+加速度计的方案?

如果是一个理想的环境
可以只用陀螺仪
或者只用加速度计来得到角度。

g921002 发表于 2012-8-9 22:38:27

數據要濾波是常識,至少濾波後頻寬要能符合系統表現。
一般來說,四軸的系統頻寬在100Hz以內是綽綽有餘,而且震動響應也通常高於這個頻率。如果取樣是1KHz,那數位濾波取0.1fc參數來做就好。
還有就是放置控制器的位置至少簡單的減震要做,降低機械的固有頻率在低頻產生而影像感測器。

默默七 发表于 2012-8-13 11:51:32

用加速度计得到角度的算法是什么,问题是不是在这?

xue_xi_zhong 发表于 2012-8-13 15:05:51

红树林下的鱼 发表于 2012-8-9 21:06 static/image/common/back.gif
你说你现在主要的问题是处理器处理浮点速度过慢,不知道你在PID控制里是如何使用角速度的?
我用陀螺仪测 ...

这两天没上网,后面你处理的怎么样了

红树林下的鱼 发表于 2012-8-19 15:39:10

xue_xi_zhong 发表于 2012-8-13 15:05 static/image/common/back.gif
这两天没上网,后面你处理的怎么样了

最近采用了FIR数字滤波器对采集的角速度做低通滤波,效果还不错,可以过滤掉很大一部分噪声

js200300953 发表于 2012-8-20 09:24:21

红树林下的鱼 发表于 2012-8-9 12:14 static/image/common/back.gif
兄弟,我用的陀螺仪和加速度计和你的是一样的,也是不开电机的时候数据很稳定,开电机之后角速度波动就很 ...

弱爆了,看我的加速度计,机架静置,0.2油门、0.5油门和0.8油门的原始值,横坐标是秒,纵坐标是m/s^2。

xue_xi_zhong 发表于 2012-8-20 15:27:34

红树林下的鱼 发表于 2012-8-19 15:39 static/image/common/back.gif
最近采用了FIR数字滤波器对采集的角速度做低通滤波,效果还不错,可以过滤掉很大一部分噪声 ...

后面我也发现是我电机有问题,后来换了后,陀螺仪在开电机的情况下基本不漂了,大概五分钟内3到4度的误差,现在最大的问题是加速度传感器,感觉没法用,一开电机就漂的严重,大概要对100组以上的数据平均才得到相对稳定的角度

honphylin 发表于 2012-8-24 10:45:12

MARK,持续关注中......

svon 发表于 2013-8-28 18:00:59

LZ现在找到什么方法滤波效果好吗,我现在也遇到同样的问题,现在不知道应该用什么滤波方法,LZ可以指导一下吗

hht594 发表于 2013-8-28 20:07:28

学习中……!

6091820503 发表于 2013-12-5 11:20:40

抖动问题确实很蛋疼,我采集的数据也是非常抖~~想积分位移。跟屎一样

chushibinsaobao 发表于 2013-12-11 17:14:10

亲,抖动应该是很正常的!但是我们不能单一相信陀螺仪和加速度计,它们是有测量误差的,所以需要数据融合,也就是滤波,现阶段求解姿态的方法有很多种,比如用加速度计和磁力计来修正陀螺仪,然后用一阶龙格库塔法求解四元数微分方程,还有更高端的方法就是采用卡尔曼滤波。亲可以好好看看大神们的贴子,不过我看到的实际编程应用到四轴飞控上的都是采用修正陀螺仪的办法,很少有采用滤波算法的。不知道为什么!!!!

flwave 发表于 2013-12-20 23:52:01

不是应该要用卡尔曼滤波或者互补滤波吗?

zxtotti17 发表于 2014-1-1 13:52:15

我也遇到了这样的问题,也是加完电机以后抖动很大,需要一个好的滤波,才能解决了这样的问题。

lidreamer 发表于 2014-3-30 03:25:45

滤波问题不是很好做啊!

LYY 发表于 2014-4-23 20:38:14

姿态解算好纠结{:sleepy:}

ttdosp 发表于 2014-11-24 10:45:43

纠结了好久了,进来又开搞了。。。
页: [1]
查看完整版本: 请教四轴中陀螺仪和加速度计的数据如何处理?谢谢