新手上路
- 积分
- 22
- 金钱
- 22
- 注册时间
- 2018-5-4
- 在线时间
- 0 小时
|
5金钱
我把官方給的範例程序移植到STM32F0上,目前已移植完成,可以正常使用。
其中在init中
inv_enable_vector_compass_cal();
inv_enable_magnetic_disturbance();
如果不使用這兩個函式,它就只會使用6軸(沒有磁力計)的功能計算roll, pitch, yaw,
而只使用6軸的話,sensor晃動角度太大,yaw的角度就會出現誤差,可能是陀螺儀在計算上造成的。
但我需要的功能是會一直晃動sensor的,而yaw角在一個方位是0度,在晃動後回到同一個方位還是要0度。
所以我需要磁力計的功能,在加入上面兩個函式後,手冊上寫說要做八字校正,一直到sensor認為有足夠的數據,才會啟用磁力計,
這樣的功能我也可以正常使用,但是有兩個問題
1. 我怎麼知道什麼時候校正好了?
2. 要校正多久?
第一個問題我已解決了,使用inv_get_sensor_type_euler(data,&accuracy,×tamp) 的時候,回傳的accuracy變數如果是3,代表已做好校正。
但是第二個問題我解決不了,我在同一個位置做校正,校正完成的時間都不同,不管是在磁干擾大小的地方都一樣,有時候很快校正完成,但是大多都是要校正很久,校正到手都酸了還不一定好。
想請教一下有沒有人有這樣的問題,或是有沒有其他方式可以達到我想到的功能(紅字)。
謝謝。
|
最佳答案
查看完整内容[请看2#楼]
成功了,原來我使用官方的例程,他用中斷跟計算Timer來抓一次九軸數據,校正需要花很長的時間。用原子哥的例程,不用中斷跟Timer一下就校正好了,但是,雖然accuracy回傳3代表校正好,實際上還是要多畫幾次八字精度才更高,且sensor穩定的情況yaw還是會有1~2度的漂移,不過這在加一個平均就好了,功能已達到我想到的了,謝謝。
|