rpng / kalibr_allan

IMU Allan standard deviation charts for use with Kalibr and inertial kalman filters.
592 stars 214 forks source link

gyroscope_random_walk is NaN #12

Closed YanhaoZhang closed 5 years ago

YanhaoZhang commented 5 years ago

Thank yo so much to update your code. This code works good except the result of gyroscope_random_walk is NaN. May I ask you the reason of it or any hint? I used xsens mti-100 to collect data for 2 hours. Here is my result. Thank you so much. image

goldbattle commented 5 years ago

How does the plot look? It might be that it can't fit the line to the right half of the plot. That is what I would investigate first.

YanhaoZhang commented 5 years ago

Many thanks for your prompt reply. You are right the plot does not show the fit line for gyroscope_random_walk. Here is the result. image

I checked the allan function (by doing '_checkdata1 = allan(data1,tau);') it seems all elements in m are 0 (line 72 in function allan). I guess this makes D equals to NaN. May I ask you for any advice? I also attached the data I used. The mat file was generated by bagconvert. Thank you so much. https://studentutsedu-my.sharepoint.com/:u:/g/personal/12950426_student_uts_edu_au/EWUvRDDGFkdOiBfz9E8wziIBrPG-6Hb8dltZ20l_DxJivw?e=lZpFDH

How does the plot look? It might be that it can't fit the line to the right half of the plot. That is what I would investigate first.

goldbattle commented 5 years ago

If i remember correctly, the script tries to find the minimum of the curve, and the RIGHT part of the plot should be your white noise, while the right is your random walk. I assume it is finding that large spike at the end, so you might need to cut off your data or figure out why it is having that large spike. https://github.com/rpng/kalibr_allan/blob/master/matlab/functions/gen_chart.m#L50-L53

It will try to fit a positive 1/2 slope, so the NaN in the y-intercept hints that it isn't able to fit that, or doesn't have data to do it?

On Tue, Apr 2, 2019 at 9:40 PM Yanhao Zhang notifications@github.com wrote:

Many thanks for your prompt reply. You are right the plot does not show the fit line for gyroscope_random_walk. Here is the result. [image: image] https://user-images.githubusercontent.com/36495922/55446451-73dcf400-560b-11e9-8978-f6d0763e4712.png

I checked the allan function (by doing 'check_data1 = allan(data1,tau);') it seems all elements in m are 0 (line 72 in function allan). I guess this makes D equals to NaN. May I ask you for any advice? I also attached the data I used. The mat file was generated by bagconvert. Thank you so much.

https://studentutsedu-my.sharepoint.com/:u:/g/personal/12950426_student_uts_edu_au/EWUvRDDGFkdOiBfz9E8wziIBrPG-6Hb8dltZ20l_DxJivw?e=lZpFDH http://url

How does the plot look? It might be that it can't fit the line to the right half of the plot. That is what I would investigate first.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rpng/kalibr_allan/issues/12#issuecomment-479290777, or mute the thread https://github.com/notifications/unsubscribe-auth/ACHp4hjF79OoX9kMKZLCY6kqNjjhc2x6ks5vdAangaJpZM4cX8oA .

goldbattle commented 5 years ago

I would try setting the minid to something that you know, for example the halfway of the tau vector size could be a starting point. Hopefully that helps. Checkout this issue for why we fit the lines: https://github.com/rpng/kalibr_allan/issues/8

YanhaoZhang commented 5 years ago

Many thanks for your help. I will try all your suggestions :)

wwtinwhu commented 5 years ago

Many thanks for your prompt reply. You are right the plot does not show the fit line for gyroscope_random_walk. Here is the result. image

I checked the allan function (by doing '_checkdata1 = allan(data1,tau);') it seems all elements in m are 0 (line 72 in function allan). I guess this makes D equals to NaN. May I ask you for any advice? I also attached the data I used. The mat file was generated by bagconvert. Thank you so much. https://studentutsedu-my.sharepoint.com/:u:/g/personal/12950426_student_uts_edu_au/EWUvRDDGFkdOiBfz9E8wziIBrPG-6Hb8dltZ20l_DxJivw?e=lZpFDH

How does the plot look? It might be that it can't fit the line to the right half of the plot. That is what I would investigate first.

Hello, I have the same problem as you. Do you figure out?Thank you very much!

goldbattle commented 5 years ago

See my comment here: https://github.com/rpng/kalibr_allan/issues/12#issuecomment-479292727 Since you have those large spikes at the end the code will not correctly find the minimum of the curve. You can try hard coding it to look at everything after 10^1 for example.

wwtinwhu commented 5 years ago

See my comment here: #12 (comment) Since you have those large spikes at the end the code will not correctly find the minimum of the curve. You can try hard coding it to look at everything after 10^1 for example.

hello, thank for your reply. I have a question about the code there https://github.com/rpng/kalibr_allan/blob/master/matlab/functions/gen_chart.m#L50-L53, I think it should not find the min of sigavg, but find the min of the difference between the slope(-1/2) and cuver slope. You can check this website by matlab which is different from you as I say above. https://www.mathworks.com/help/nav/ug/inertial-sensor-noise-analysis-using-allan-variance.html#d117e525. This is worth discussing. Thanks.