我用openimu300采集传感器六轴数据,使用spi按照在线手册发送0x3E得到六轴数据,其中陀螺仪数据手册给出的是64LSB/dps,于是把得到的原始陀螺仪数据除以64得到以deg/s为单位的角速率,但是我在把此数据和标准INS程序使用串口采集到的陀螺仪数据对比,他们似乎有一个1.5倍的差距,这是为什么呢?
spi与uart陀螺仪数据不一致
@Li-YiFan 感谢回复,经过我们的测试似乎对于OPENIMU300ZA 100LSB/dps能和原始INS程序的gyro匹配,并且发现在INS程序中有相应参数(UserMessagingSPI.c中344行)
但是后续车载测试中,使用SPI采集到的Acc和Gyro数据会有许多并不超过你们INS程序handleOverRange的波动数据,出现融合点大大超前实际定位点
现在acc和gyro都已经是25Hz低通滤波100Hz采集频率
@Wangguotong 对的,代码中是这个API GetSpiRateScaleFactor 得到scalar factor,目前代码在更新,您用的INS是什么版本? SPI 需要使用data ready 线的下降沿作为采集数据的时间点。
@Li-YiFan 我使用的是1.1.0版本INS程序。
看到您的data ready下降沿触发采集之前考虑过只是我们在Linux上GPIO下降沿触发不太好写,于是直接用定时器10ms采集,以为采集到到即使不是最新的数据也可能是上一次的旧数据影响不大,原来是会产生如此多的坏数据的。
然后
1.如果使用下降沿触发中断采集那么我用它当作系统200Hz的基准时间是否可以?
2.如果我使用Linux定时器自行定时然后检测是否为低电平,在下降沿下降之后的低电平期间采集是否也可以?(或许传输期间又遇到上升沿)
3.如果使用串口的话使用最高460800直接接收到的数据也都是完好可用的吧?(你们在线数据手册好多和代码不吻合的地方比如数据手册的openimu300zi的gyro 500dps然而代码400dps;The default factory axis setting for the OpenIMU300ZI for SPI interface is (-Uy, -Ux, -Uz),我们spi读取似乎就是+ + +方向之类的)
@Wangguotong 您好。1.如果使用下降沿触发中断采集那么我用它当作系统200Hz的基准时间是否可以?
您系统的基准时间要求精度是多少呢,drdy的时间精度我们暂时没数据,您可以尝试下
2.如果我使用Linux定时器自行定时然后检测是否为低电平,在下降沿下降之后的低电平期间采集是否也可以?(或许传输期间又遇到上升沿)
可以的
3.如果使用串口的话使用最高460800直接接收到的数据也都是完好可用的吧?(你们在线数据手册好多和代码不吻合的地方比如数据手册的openimu300zi的gyro 500dps然而代码400dps;The default factory axis setting for the OpenIMU300ZI for SPI interface is (-Uy, -Ux, -Uz),我们spi读取似乎就是+ + +方向之类的)
使用串口最高到230400 dps,
感谢您的指出,您可以升级使用我们最新固件进行测试。
算法问题也可以单独帖子提出。