Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

error of mat file for Accelerometer and gyroscope #3

Open
lishuwei0424 opened this issue Jun 27, 2019 · 12 comments
Open

error of mat file for Accelerometer and gyroscope #3

lishuwei0424 opened this issue Jun 27, 2019 · 12 comments

Comments

@lishuwei0424
Copy link

Hi,thank you for works,when I am use for this project IMU calibration,I makes error.
I make data for IMU,Then,./test_imu_calib test_data/acc_data.mat test_data/gryo_data.mat

2019-06-27 19-34-40屏幕截图

thank you very much

@pxc2017
Copy link

pxc2017 commented Sep 15, 2020

应该是mat保存的方式不对,我也有这个错误,然后直接将自己的数据粘贴到他的mat文件中替换就行,但我想问一下需要对imu数据做什么样前处理?他给的例子数据都是3万多,而且算出来的bias都很大,是需要做什么转换吗?

@bigship
Copy link

bigship commented Sep 16, 2020

@pxc2017 我也对他例子里的数据有疑问,感觉不像是正常获取到的sensor数据。用自己采集的数据跑,residual算出来的结果又非常之大, 我也感觉应该是和什么参数的设置或者和数据预处理有关。
看他test_imu_calib.cpp代码,在校准数据之前他用了

init_acc_calib.setBias( Vector3d(32768, 32768, 32768) );
init_gyro_calib.setScale( Vector3d(1.0/6258.0, 1.0/6258.0, 1.0/6258.0) );

为什么是这样的预设值?

@pxc2017
Copy link

pxc2017 commented Sep 17, 2020

@bigship 数值3万多那不是角速度或加速度,而是16位带符号数作为陀螺仪测量数据输出,即数据类型是int16,需要根据传感器的量程转换计算,加速度计也一样。可以参考博客https://blog.csdn.net/lgcjlu/article/details/88536094
另外这个有大佬上传了能直接使用bag文件的版本,https://github.com/Neil-Oyoung/imu_tk
可以直接使用加速度和角速度

@bigship
Copy link

bigship commented Sep 17, 2020

@pxc2017 原来如此,太感谢了。我现在用的传感器测量输出的结果就是加速度和角速度本身,和他这个测量数据不一样。所以应该就不用做转换了。我再看看后面这个版本的代码。

@leonshaw06
Copy link

@bigship 数值3万多那不是角速度或加速度,而是16位带符号数作为陀螺仪测量数据输出,即数据类型是int16,需要根据传感器的量程转换计算,加速度计也一样。可以参考博客https://blog.csdn.net/lgcjlu/article/details/88536094
另外这个有大佬上传了能直接使用bag文件的版本,https://github.com/Neil-Oyoung/imu_tk
可以直接使用加速度和角速度

请问他这个版本的校准程序,输入的加速度的单位是m/s2吗,还是重力加速度g,比如0.001g?非常感谢。

@lin-pengchen
Copy link

@pxc2017 @bigship 你好,想请教一下,我用了ros封装的那个imu_tk,但是每次标定出来的陀螺仪数据都差别很大,加速度计倒是每次都几乎一致,尝试拿标定的内参去做融合效果也很差,一直找不到原因,请问录制imu数据bag的流程有哪些细节需要注意吗?

@bigship
Copy link

bigship commented Aug 2, 2021

@pxc2017 @bigship 你好,想请教一下,我用了ros封装的那个imu_tk,但是每次标定出来的陀螺仪数据都差别很大,加速度计倒是每次都几乎一致,尝试拿标定的内参去做融合效果也很差,一直找不到原因,请问录制imu数据bag的流程有哪些细节需要注意吗?

要保证有足够多的运动区间,按照他的实现是不能少于11个interval。而且运动的时间不能太短,至少要1秒(采样率100Hz的话),而且从静止到运动和从运动到静止的过程中最好有明显的加速和减速趋势。

至于实际效果,我得到的结果也不好。感觉这个实现是特别针对于作者所用的那个IMU,你换其他的IMU传感器,效果就不一定那么好了。

@lin-pengchen
Copy link

@bigship 谢谢解答!这些点我都有注意到,而且他校正陀螺仪迭代次数只设置了50次,这还是比较难收敛的,但是即使修改了迭代次数,收敛了效果也依旧不佳

@bigship
Copy link

bigship commented Aug 2, 2021

@bigship 谢谢解答!这些点我都有注意到,而且他校正陀螺仪迭代次数只设置了50次,这还是比较难收敛的,但是即使修改了迭代次数,收敛了效果也依旧不佳

你陀螺仪的数据单位是角度/s (deg/s)吗?试试把角度/s先转成弧度/s (rad /s),收敛的问题应该可以解决。但是实测校准后的数据并没有变的更好,所以我才觉得是不是和测试的IMU本身有关。

@lin-pengchen
Copy link

@bigship 谢谢解答!这些点我都有注意到,而且他校正陀螺仪迭代次数只设置了50次,这还是比较难收敛的,但是即使修改了迭代次数,收敛了效果也依旧不佳

你陀螺仪的数据单位是角度/s (deg/s)吗?试试把角度/s先转成弧度/s (rad /s),收敛的问题应该可以解决。但是实测校准后的数据并没有变的更好,所以我才觉得是不是和测试的IMU本身有关。

的确是deg/s,晚点试试转换

@scott198510
Copy link

scott198510 commented Sep 24, 2021

@lin-pengchen @bigship @这个我必须回答一下 这个地方最好是改成rad/s,如果你看看他这个方法对应的原始论文,校准时候所用的优化计算选取的初值,6258.0这个就是根据IMU中陀螺仪的量程设置的,如果你改成deg/s那么校准的初值必须作需要更改,实际上我觉得他这个6258.0应该是设置有误,准确一点 应该是4172.0才更加合适((2**15-1)/(450*math.pi/180)),我查了这个系列传感器的陀螺仪full range 应该是450deg/s而不是他认为的600deg/s,不过使用这两个值计算结果差异不大,也就是只要不出现数量级的差异,应该对陀螺仪校准参数是影响不大的,如果是deg与rad搞混那应该差异会比较大。

@mehtivakili
Copy link

@scott198510 how did you extract these ranges from input data mentioned in this repo mat.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants