Replies

  • Hi Khalid,

    I've been working with a FreeIMU V3 for some time trying to get a reasonable scaling on the sensor axis(using micro.net). I eventually thought my IMU was faulty. I then downloaded MultiWII software and had a look at all the drivers developed in the project. I hooked up my FreeIMU, modified the configuration to look for my IMU on the I2C port and dumped the program on a Arduiono Mini ATmega328, hooked up the IMU and powered up the system. MultiWII has a GUI that allows calibration of the sensors and a nice visual tool as well. The source is easy to read and, I would imagine, well tested. They have done a great job. I have multiple 'low cost' IMU's im using in prototyping and the MultiWII guy(s) have taken away a lot of the development pain with their sensor drivers.

    Have a look at their methodology - I'm sure you will find your answers there.

    Good luck,

    Antonie

    • I added this line to FreeIMU.cpp :

      accgyro.setFullScaleAccelRange(MPU60X0_ACCEL_FS_4); 

      The idea was to set the accel to +/- 4g, so that It would match how the ArduIMU 1.9.8 sets the accels.  I then used FreeIMU to initialize an MPU6050 using i2c instead of MPU6000 and spi.  I used the FreeIMU: my3IMU.getRawValues(raw_values) to replace the MPU6000_read().  I had to play with the sensor orientation and sensor signs in the ArduIMU sketch but it works. 

      I did it to see if I could use the DCM algorithm on a different board than ArduIMU and I can.  FreeIMU helped simplify it for me at least.

         

  • Please help!!! I really need to obtain those values!!

    • Khalid, I loaded the FreeIMUraw.pde and took a look.  I'd say it depends on how FreeIMU sets up the sensors so I took a look in the library MPU60X0.cpp file and the header file.  FreeIMU.cpp is using the

      #define MPU60X0_GYRO_FS_2000        0x03

      from the MPU60X0.h file to set the gyro at +/- 2000 degrees/sec

      I haven't been able to find how FreeIMU sets the accel but I'd guess it's a default and looking at the raw output it looks like +/- 2g.  That's based on the raw numbers that are about 18-21 so it'd be 2 * 9.8 m/s/s.

       

      • Okay, do I need to scale the values I get from getValue()? The values for the accelerometer are in the order of 1000s

        • Okay, after some digging in the source code, just like you suggested, I found that they set the full-scale range to 0, and according to the datasheet this corresponds to 16,384 LSB/g. So, I divided the values that I get by 16,384 and multiplied them by 9.81. The readings, as expected, are correct. I'm getting ~9.5 m/s^2 for z-axis when I hold the IMU horizontally. 

          Now, the question is do I need to do the same for gyro readings? how do I check If they are correct or not?

          • I found this line. 

            values[i] = ((float) accgyroval[i]) / 16.4f; // NOTE: this depends on the sensitivity chosen

            16.4f is the same resolution indicated by the datasheet for +/-2000 deg/s. I conjecture that the readings for the gyro are already scaled and they need no scaling from my side of code. Correct me if i'm wrong!

            • Good job!  I found this comment in the MPU60X0.cpp

               * FS_SEL | Full Scale Range   | LSB Sensitivity  * -------+--------------------+----------------
               * 0      | +/- 250 degrees/s | 131 LSB/deg/s
               * 1      | +/- 500 degrees/s | 65.5 LSB/deg/s
               * 2      | +/- 1000 degrees/s | 32.8 LSB/deg/s
               * 3      | +/- 2000 degrees/s | 16.4 LSB/deg/s

              Looks like 16.4f applies to the gyros too. 

        • What happens if you divide the accel values by 4096?  Do they then look like +/- 2g values?

          • If I divide one of the values by 4096, I get values between -4 and 4. What does that mean?

This reply was deleted.

Activity

DIY Robocars via Twitter
Oct 23
DIY Robocars via Twitter
RT @_JonMyer: 🏎 We need your help in naming my #AWS DeepRacer Underground Track 🏎 @davidfsmith's track is going to be referred to as 𝗔𝗪𝗦 𝗗…
Oct 22
DIY Robocars via Twitter
RT @gclue_akira: 仕事もおわったし、電脳化にとらい #マリオカートハック https://t.co/4IU90hCLgm
Oct 22
DIY Robocars via Twitter
This is the hashtag to follow all the people in Japan who are hacking the new Nintendo Mario Kart with the real AR… https://twitter.com/i/web/status/1319281354664677376
Oct 22
DIY Robocars via Twitter
RT @gclue_akira: @chr1sa @diyrobocars jupyter mario https://t.co/P0oHdjlCRq
Oct 22
DIY Robocars via Twitter
RT @_JonMyer: 🚨Our 1st AWS DeepRacer Community Race is Underway on http://twitch.tv/aws 🚨 Join us to find out which member of your commu…
Oct 20
DIY Robocars via Twitter
Oct 19
DIY Robocars via Twitter
RT @BackyardRobotcs: After an admittedly long wait, the new Tinymovr R3.3 motor controller is now available https://tinymovr.com 🥳
Oct 19
DIY Robocars via Twitter
RT @_JonMyer: 🏎 1 hr left before the #AWS #DeepRacer Community 🏎 Top 5 Race tomorrow LIVE on Twitch 1st Place = $50 Amazon GC or AWS Credit…
Oct 19
DIY Robocars via Twitter
Oct 16
DIY Robocars via Twitter
Oct 15
DIY Robocars via Twitter
Oct 14
DIY Robocars via Twitter
RT @davidfsmith: Race virtually with The AWS DeepRacer Community Race and then join us on the track to see how your times compare on the ph…
Oct 14
DIY Robocars via Twitter
Oct 14
Hiroki Tanaka liked Hiroki Tanaka's profile
Oct 13
DIY Robocars via Twitter
RT @breadcentric: It's now!
Oct 13
More…