How to make IMU sensors insusceptible to surrounding electronics?


I am using two IMU sensors to perform the same tests and they are: ADIS16360 and ADIS16362.

I attached my IMU sensor on a robot arm to take some data and the gyroscope measurements were always out of calibration after one or two trials. I took the data with EVAL-ADIS board. The robot's control box is about 2 feet below the arm on which the sensor was attached to. I currently have my sensor wrapped in layers of aluminum foil but that wasn't helping either. Is there something I can do to prevent this?



  • 0
    •  Analog Employees 
    on Jun 6, 2014 12:28 AM
    Thank you for your post, Dao.
    We will be happy to help. Can we start with getting just a little more information?
    1. Can you explain the motion in physical terms that we can translate into an expected gyroscope output response?
    2. How much error are you observing?
    3. How do you have the devices configured? Specifically, what are the values in these registers: SMPL_PRD, SENS_AVG, MSC_CTRL
    4. Are you collecting data synchronously, based on the data ready signal or are you reading the data in a manner that is a synchronous with respect to the sensor sampling?
    5. If you are reading the data asynchronously, how often are you reading the data?
    6. Are you using any post processing on the data? If so, can you explain that signal processing?
    7. Would it be possible to post an example set of data, which illustrates this conclusion?
    8. Could you also post a small data file that provides data for each sensor output, while the device is laying flat on the table

    Best regards,
  • Hi Mark,

    Thanks for responding!

    1. I performed three separate tests and they're all rotational motion approximately 90 degrees at constant rate about every IMU axis. So I rotate about X-axis first for the first test, then about Y-axis for second test, and finally about Z-axis for the last test.

    2. At the end of the motion where all gyro readings should be approximately zero, the error observed was fluctuating from +/- 1 to +/- 2 deg/sec, sometimes higher. The error was more predominant in X and Z axes and only in gyro measurements.

    3. The current values in the registers: (a)SMPL_PRD: 0001  (b)SENS_AVG: 0406  (c)MSC_CTRL: 0006.

    4 & 5. I took some data in the default settings in 'Data Capture'. I am aware that there are seven different sampling rates according to the datasheet, so I did vary the SMPL_PRD from 0001 to 0007, but that didn't seem to help either. I guess how do I know if I am collecting data synchronously from the default setting? Are there internal delays? And what did you mean by data ready signal?

    6. I am using the raw data as they were.

    7 & 8. Most definitely! The data that illustrates the error is in the 'textfile', and the other is in excel.

    I suppose one last question I would like to ask is that is it required that I null-calibrate the sensor when it's plugged in for use for the first time? I am actually doing that otherwise there's always a constant offset in gyro readings. Here's the procedure I follow: In IMU evaluation program -> Register Access -> Click AutoNull under 'GLOB_CMD' register selection.

    Thank you for your time,

  • I almost forgot the measurements in the '.txt' file were not labelled, I simply copied the measurements from the spreadsheet to a text file for analysis in Matlab.

    Anyway, here are the column information for the data:

    Column:      1                2              3              4               5               6             7

                 Samples     X_Gyro     Y_Gyro      Z_Gyro     X_Grav      Y_Grav     Z_Grav



  • 0
    •  Analog Employees 
    on Jun 6, 2014 4:19 PM

    Thank you for sharing this data.  I already have a pretty busy day ahead of me, but I will try to take a look as soon as possible.  If you are using the EVAL-ADIS, then you are likely reading the data synchronous with the data production (using data ready).



  • 0
    •  Analog Employees 
    on Jun 6, 2014 4:25 PM

    In reviewing your register definitions, I noticed that you were using SENS_AVG = 0x0406, which is understandable but we have found the 14-bits might not be enough resolution to capture the output of the 65-tap filters.  You might want to consider trying this with 0x0402 and then perform some averaging in your processing. We supported another discussion on this topic a little while ago.  Click on this link for additional information:

    Re: A Question about your noise characteristic definitions