Sei sulla pagina 1di 22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

Varesano.net

Home

About

Topics

Projects

Socialize

Contact

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing


FreeIMU is an ongoing research project which aims to design Open Hardware 9/10 DOM/DOF Inertial Measurement Units as well as easy to use Orientation and Motion Sensing libraries, built on top of the Arduino platform. The goal of the FreeIMU Framework is to simplify the development of projects based upon the most powerful and new consumer grade inertial, magnetic and pressure sensors.

Search

Stickers

The main application of FreeIMU is orientation sensing: by reading the data from the various sensors is possible to compute precisely the orientation of FreeIMU in the space. Recent boards also feature an high resolution barometer allowing to precisely track the device altitude. This can be useful in many applications: human-computer interaction device prototyping, flying machines, robots, human movement tracking and everywhere orientation sensing is a key aspect. As FreeIMU breakout the sensors interrupt pins, it's also possible to detect per axis single and double taps, free fall as well as activity or inactivity. This makes FreeIMU a very good choice for Human-Computer devices prototyping. Interrupts pins are also very useful if you are into interrupt based reading of the sensors, useful to develop high frequency interrupt based sensor reading.

Video presentation of FreeIMU

Popular content
All time:
Installing Flash Player Plugin on Firefox without having Administrator Access or Premissions h264 videos on Flash: cool example Disable related videos on a embedded Youtube player FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing Multiple forums for Organic Groups: my patch committed Older video presentations: FreeIMU v0.3, FreeIMU v0.1 and 0.2. Serial RS232 connections in Python Why No One should Drink and Drive -

A true Open Hardware project


www.varesano.net/projects/hardware/FreeIMU

The Destiny of Jacqueline Saburido


1/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

FreeIMU is a true Open hardware, released under the CC-BY-SA. You are free, actually encouraged, to use it for any purpose, to study and modify its designs, to make your own copies of FreeIMU and even sell your own FreeIMU based hardware. But, you will have to share your designs based on FreeIMU keeping attribution and sharing them using the same libre license. On FreeIMU repository (see development section below) and from the downloads on this page, you have access to everything you need to build your own FreeIMU board. You have access to the schematics, the PCB designs and even the bill of material so that you can build your own FreeIMU. Moreover, FreeIMU has been designed using KiCAD, an excellent libre PCB design software, so you don't have to rely on proprietary software to study or modify FreeIMU.

An homebrew DIY breakout board for the ITG3200 gyroscope: tested with Arduino and Processing About My first 6 DOF IMU Sensors Fusion Implementation: ADXL345, ITG3200, Arduino and Processing

Recent comments
Femtoduino on 1S Lipo 3,7V 10 hours 57 min ago Your driveway may be corroded, 16 hours 40 min ago Manual Installation of Flash Plugin for recent Versions of FF 2 days 17 hours ago

Getting FreeIMU
An assembled, tested and ready to use FreeIMU board can be bought from: Viacopter.eu FreeIMU v0.4 (available!) SDModel.it FreeIMU v0.4 (available!) Flyduino.net FreeIMU v0.4 (sold out) The FreeIMUs boards bought from the above shops financially support the project. The boards have been produced and assembled in Italy by reasonably paid workers in a safe environment in respect with European and Italian laws.

very good guide how to use 1 week 6 hours ago very good tutorial how to use 1 week 7 hours ago condoglianze 1 week 6 days ago Launchpad Project 1 week 6 days ago Wow! It is good to know a new 2 weeks 1 day ago I have encountered about 3

Build your own FreeIMU


If you have SMD soldering experience (or if you are up for experimentation) you can build your own FreeIMU. From the downloads below you have access to all the designs needed to have your FreeIMU PCB manufactured. You can get cheap PCB with awesome quality from Dorkbot PDX and order the various components needed from you favorite electronic distributor: the Bill of Materials (BOM) files will tell you exactly which components you'll need for your FreeIMU. The are various ways of soldering the board. If you only need a couple of boards done, tack flux, solder wire and hot air reflow station are enough to build your boards (Remember not to use hot air over the pressure sensor). See this video for good instructions. In case you are building more units, an SMD stencil with solder paste is the suggested method. In case you need help, just post a comment below.

2 weeks 4 days ago IAR Embedded Workbench 3 weeks 1 day ago

Advertising

FreeIMU versions
v0.4 v0.3.5_MS v0.3.5_BMP v0.3.5 v0.3-v0.3.1 v0.2 v0.1

FreeIMU version 0.4

www.varesano.net/projects/hardware/FreeIMU

2/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

FreeIMU v0.4 features the MPU6050 gyroscope+accelerometer, the HMC5883L magnetometer and the MS5611-01BA high resolution altimeter. The magnetometer is attached to the AUX I2C bus of the MPU6050 thus allowing it to be read directly by the MPU6050. Connecting FreeIMU 0.4 to Arduino FreeIMU v0.4.1 Schematics FreeIMU v0.4 MPU6050 and MS5611 I2C addresses FreeIMU v0.4.1 KiCAD sources FreeIMU v0.4.1 Gerbers FreeIMU v0.4r3 BOM

FreeIMU library
FreeIMU can be easily used on Arduino compatible boards using the Arduino FreeIMU library which implements sensor fusion MARG orientation filter enabling you to do easy and straightforward orientation sensing. FreeIMU library - 2012/11/22 Use Arduino 1.0.1 IDE or later version. Install the libraries as explained in the Arduino Libraries Reference section Contributed Libraries . The FreeIMU library now supports all the versions up to v0.4. By default it's configured to be used on v0.4. In order to use on different boards, open the file FreeIMU.h and uncomment the correct version of your board. The FreeIMU library also supports the following 3rd parties boards: Sparkfun IMU Digital Combo Board - 6 Degrees of Freedom ITG3200/ADXL345 SEN-10121 Sparkfun 9 Degrees of Freedom - Razor IMU SEN-10736 Sparkfun 9 Degrees of Freedom - Sensor Stick SEN-10724 Sparkfun 9 Degrees of Freedom - Sensor Stick SEN-10183 DIYDrones ArduIMU+ V3 Generic MPU6050 Breakout boards (eg: GY-521, SEN-11028 and other MPU6050 wich have the MPU6050 AD0 pin connected to GND.) Note for FreeIMU v0.1 and 0.2 users: from April 2011 the default magnetometer configuration is for HMC5883L. In order to use the library with HMC5843 (v0.1 and v0.2) edit the file HMC58X3.h and uncomment the line #define ISHMC5843.
www.varesano.net/projects/hardware/FreeIMU 3/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

FreeIMU Processing Programs The FreeIMU library comes with Processing visualization demos. In order to use them, Download and install Processing. Copy the folders within the processing folder of the FreeIMU library archive into your Processing sketchbook. Remember to change the Serial port address in the Processing code to match the address used by arduino on your system.

Ports to Other platforms


FreeIMU library on PIC 24 microcontroller by Hari Nair hair.nair@gmail.com. Author notes: 1.
assumes a 6MHz crystal is attached and x4PLL internally, so Fosc = (6x4)/2 = 12 Mhz 2. trivial to use the internal FRC oscillator, instead of FNOSC_PRIPLL in the configuration words, use FNOSC_FRCPLL. This will give you Fosc = (8x4)/2 = 16MHz, but of course with less precision. 3. transmits ascii quaternion data at 38400baud. This does slow down the sampling rate. Without the quaternion print, the code completes in less than 10mS, so the sampling rate is exactly 100Hz as set by the timer.

FreeIMU library on NXP LPC1343 Cortex m3 processor by Hari Nair hair.nair@gmail.com. More details and possibility to contact the author on the FreeIMU community development forum. Have you ported the FreeIMU library to other platforms? Please let me know and I'll list your work here!

Calibration
A calibration GUI application is available. The software is currently in alpha state, however many people are already using it. The calibration, when properly executed, drastically improve the orientation sensing performance of the FreeIMU framework. If you are experiencing drifting or inconsistent results, your sensors may need to be calibrated using the Calibration GUI.

Community
There is now a FreeIMU Community website, which has been set up to become the central point of interaction between users of the FreeIMU framework. This is the place where you can get help, join others in developing new features, discuss IMUs applications and much more. Previously we used FreeIMU answers on Launchpad as well as comments on Fabio's website for supporting users, however we decided to create an ad-hoc website to facilitate information gathering and collaboration between people.

Development, Bug Reports and Suggestions


Development of FreeIMU boards and libraries can be followed on FreeIMU project page on Launchpad which also hosts our software and hardware repository. Suggestions or bug reports can be made on the FreeIMU Community, in the development forum.Previously bug reports were posted on the Launchpad bug reporting interface but that's not used anymore. FreeIMU repository holds all the various library sources as well as design files and schematics. Everything is revisioned meaning that all the changes are logged and annotated. The contents of the repository are available using Bazaar (bzr) with the command:
b z rc ol p : f r e e i m u

Never used bzr before? Not a big deal, it's very similar to git, svn or others. You may wanna have
www.varesano.net/projects/hardware/FreeIMU 4/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

a look at the cheatsheet to have an overview of the commands available or read more documentation on bzr. Alternatively, in case you have problems setting up bzr on your system, you can simply get the latest repository contents from here. The resulting file is a .tar.gz archive which can be opened with the excellent 7zip under Windows. Mac and Linux users shouldn't have problems opening such files. The files on the repository can also browsed from a browser here. A list of recent changes is available here.

FreeIMU users videos


Here some videos made by FreeIMU users on their projects using FreeIMU. rtsdrums flies like crazy with FreeIMU on his quadcopter.. check out the triple flip!

Warthox testing indoor FreeIMU v0.4r3 on one of his quadcopters.

Warthox stress test FreeIMU v0.3.5_MS on one of his quadcopters.

www.varesano.net/projects/hardware/FreeIMU

5/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

Chris uses FreeIMU on his VTOL EDF Tricopter powered by the MultiWii software.

Danilo Del Console uses FreeIMU in a 2 wheels self balancing robot.

Francesco Ferrara uses FreeIMU for a camera stabilization system.

www.varesano.net/projects/hardware/FreeIMU

6/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

Francesco Ferrara with his super fast implementation of the AHRS algorithm capable of displaying the rotating cube at 333Hz with FreeIMU! Great work!

Marchino65 with his first test with FreeIMU and the FreeIMU library on Arduino. The cube is spinning pretty good!

Francesco Ferrara in his first flight with FreeIMU on his very young quadcopter project called Simplo.

www.varesano.net/projects/hardware/FreeIMU

7/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

231051 reads

MPU9150
Submitted by Anonymous (not verified) on Sat, 2013-04-27 09:37.

Hi Fabio, I have the MPU9150 breakout board, trying to get the roll pitch yaw program working as we are doing a design project to make a UAV. Problem is when uploading the rollpitchyaw program it gives the errors: MPU60X0.h: No such file or directory and MPU60X0 does not name a type. All the libraries are in the right place, there is #include I2Cdev.h and 6050.h. I have also gone into FreeIMU.h and uncommented the Gen 6050 breakout. Can't figure out what's wrong, thanks for your help! reply

MPU-9150
Submitted by Diego (not verified) on Wed, 2013-04-03 23:58.

Hi Fabio, did you think using the MPU-9150 in the future? thx Diego reply

Plot library for Arduino / Processing


Submitted by Gustavo (not verified) on Fri, 2013-03-15 00:38.

Hi everyone and thank you Versano for writing this great library. I've been experimenting with my IMU for a couple of months while trying to build a quadcopter from scratch. I have noticed that it was quite complicated to analyze Roll, Pitch, Yaw, roll rate, distance from ground, automatic corrections, etc so I decided to create This Plotting library for Arduino + Processing. The main difference with other libraries I've found out there is that you can plot multiple series on multiple viewports using different Min and Max values on each viewport. I hope this will help many of you and I'd love to get your feedback. reply
www.varesano.net/projects/hardware/FreeIMU 8/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

So sad!
Submitted by philip_xu (not verified) on Fri, 2013-01-25 03:52.

I'm feeling so sad when I knew Fabio has gone. He gave us lots of help, and didn't want any returns, even I didn't ask any question to him, didn't post any reply before, but I read a lot, and knew him a perfect guy. Right now, It seems there's no one hosting the website anymore as spam letters growing. And I'm afraid the website will be shut down months or years later, then Fabio will be lost forever. So, can anyone give some help to continue hosting the website? I know its possible that no one knows Fabio's account name and password, and I still wish someone, his friend, his student or his family, could contact us to continue hosting this, at least, to delete the spam letters. reply

Where can I find FreeIMU???


Submitted by AMG (not verified) on Thu, 2013-01-17 22:37.

Hi, Im interested in FreeIMU v0.4, but ive just seen the tragic new about Fabio. So, what can we do now? I have seen another board in ebay: http://www.ebay.es/itm/10DOF-IMU-MS5611-HMC5883L-MPU6050-Sensor-module-/... It is significantly cheaper, and has the same sensors. The pins are the same, only one is different, in this module is DRDY instead INTM. What do yo think? Could be this board compatible with FreeIMU libraries? If anyone knows where I can find another solution, please let me know. Thanks! reply

Validity of the measures


Submitted by Hector (not verified) on Mon, 2013-01-07 17:09.

Fabio, I was taking a look at the code and I didn't understand why does it invalidates a measurement if one of the axis is zeroed. I guess it should only invalidate a measurement if all axis are zeroed, right? This is being done to both magnetometer and accelerometer measurements and I was wondering if it isn't throwing away good measures this way. reply

sad news for all of us...


Submitted by Anonymous (not verified) on Wed, 2013-01-16 00:31.

Fabio has passed away,my condolences to his family. look here for more info http://www.multiwii.com/forum/viewtopic.php? f=8&t=649&start=1550#p28428 Re: GPS integration Postby Sharkcopter Fri Dec 28, 2012 10:43 pm I am very saddened to tell you that Fabio Varesano, the manufacturer of FreeImu died on
www.varesano.net/projects/hardware/FreeIMU 9/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

Christmas Day. He was only 27 years of age. This morning we attended his funeral. I remember him as a friend with a great desire to try and help others. Sharkcopter Posts: 21 Joined: Fri Feb 24, 2012 3:12 pm reply

RIP Fabio! Gohai


Submitted by Anonymous (not verified) on Thu, 2013-01-17 06:16.

RIP Fabio! Gohai reply

Ignore yaw for better roll/pitch?


Submitted by Arnold (not verified) on Thu, 2012-12-27 22:07.

Hello Fabio, I'm using the FreeIMU v4 after calibration with the tool you've created. The results are much better now but I'm still getting some drift. I was thinking, since I have no use for Yaw measurements - is it possible to ignore the Yaw and get better results for pitch and roll? Thank you for your excellent work! reply

LIbrary update
Submitted by tussh13 (not verified) on Sun, 2012-12-09 18:26.

Fabio have you updated the library ? Is the current version on this page the one from bazaar ? reply

FreeIMU 0.3.5_BMP for sale


Submitted by Javi (not verified) on Sun, 2012-12-09 16:35.

My email for contacting me it is on my website. reply

C303 value different on schematic vs bill of materials


Submitted by Paul Stoffregen (not verified) on Thu, 2012-12-06 15:05.

I just soldered a FreeIMU board, for testing with Teensy 3.0. At least one user reported an issue with 16 vs 32 bit integer pointers in the code. I'll investigate soon. While soldering, I noticed C303 is shown as 2.2 nF on the schematic, but 10 nF on the bill of materials. Maybe it doesn't matter, but thought it might be helpful to mention? reply

Hey Paul, nice to see you


www.varesano.net/projects/hardware/FreeIMU 10/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

Submitted by fabio on Thu, 2012-12-06 18:32.

Hey Paul, nice to see you around here! Big fan of your work!

While soldering, I noticed C303 is shown as 2.2 nF on the schematic, but 10 nF on the bill of materials. Maybe it doesn't matter, but thought it might be helpful to mention? It will work with both of them.. however, we are currently using 2.2nF in the FreeIMU boards that we produce. Specifically, it's PN: 08051C222KAT2A Digikey: 478-1354-1-ND. I fixed the BOM to avoid confusion.

I just soldered a FreeIMU board, for testing with Teensy 3.0. At least one user reported an issue with 16 vs 32 bit integer pointers in the code. I'll investigate soon. Awesome! The Teensy 3.0 looks like an excellent platform for running the complex FreeIMU library math! It would be great if you could share your ported code, I'm sure people would enjoy it ;-) For any further questions or if you need my help during the porting, jump to the FreeIMU community! reply

Port on atXmega
Submitted by mataor (not verified) on Wed, 2012-11-28 20:36.

Hi Fabio Sorry for bad english - I'll use the Google translator Now I'm busy porting your code atmega128a3. Faced with such a problem: at standard
#d e f i n et w o K p D e f( 2 . 0 f*0 . 5 f )//2*p r o p o r t i o n a lg a i n #d e f i n et w o K i D e f( 2 . 0 f*0 . 1 f )//2*i n t e g r a lg a i n

watch drift YAW / - 13grad, PITCH / -1, ROLL / -2 for 1-2 minutes with decreasing
#d e f i n et w o K i D e f( 2 . 0 f*0 . 0 1 f )//2*i n t e g r a lg a n

The situation is getting better, but the problem does not disappear. The cycle time for my 32MHz CPU frequency is obtained: my3IMU.getQ (q) ~ 2095-2111 microseconds my3IMU.getYawPitchRoll (ypr) ~ 2537-2550 microseconds Thank God now though such a result is available (all day I suffer with constant drift in all directions), but it would be better - IMU is going to introduce a code of my port on MultiWii atxmega reply

FreeIMU Output Question


Submitted by Josh (not verified) on Wed, 2012-11-28 16:20.

www.varesano.net/projects/hardware/FreeIMU

11/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

So for my senior design group we are building a thrust vectoring system for a rocket motor during flight. We are using the FreeIMU to read the flight path of the vehicle and will send any corrections to the vanes in the rocket exhaust. I am an Aerospace Engineer so I have very little experience with electronics and coding them. My main question is what does the FreeIMU output the sensor data as? Is it in that quaternion or as something else? If its in the quaternion, how does one convert this into the raw values so that yaw, pitch and roll can be found? I appreciate any help. I have a little programming background in Matlab and Fortran but I am just lost when I look at your processing code to get the yaw, pitch, roll values from the FreeIMU. We are using an Arduino Uno R3 as our board which will be controlling 4 servos which will rotate the vanes in the rocket exhaust. Thanks, Josh reply

Hey Josh, may I ask you to


Submitted by fabio on Wed, 2012-11-28 16:34.

Hey Josh, may I ask you to post your question on the new FreeIMU Community website? http://freeimu.varesano.net/ reply

Lawn Bowling
Submitted by SHOGUN (not verified) on Wed, 2012-11-28 03:24.

Fabio, Greetings from Vancouver Island Canada. Lawn bowling is quite popular in Canada. I would like to instrument a lawn bowling ball with the FreeIMU that you are/have developed. There is quite a bit of skill involved with lawn bowling,ie. smooth release, no bounces, no wobble, correct speed etc. The bowling balls are about 5"in diameter and are weight "biased"to curve either right or left, depending on the release orientation. I would like to use the FreeIMU on a Arduino nano board with bluetooth or zigbee wireless communications with a laptop. I would like to show the ball's trajectory, speed, curve, deceleration, calculate and show the lawn "speed", wobble, bounces etc. This would be agreat tool for training people. The final instrument package would need to be small to fit inside a bowling ball. I think Software devolpment would be difficult. Do you think it can be done? Any suggestions would be appreciated. Regards Shaughan reply

It's not an easy development


Submitted by fabio on Wed, 2012-11-28 09:31.

www.varesano.net/projects/hardware/FreeIMU

12/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

It's not an easy development but an IMU can surely be helpful for this kind of training. I can ensure you that the math involved won't be easy and probably results won't be as good as you hope. The rolling path and speed can be tracked quite precisely, see my PALLA project, however it will be pretty hard to track the ball in the air during the launch... I would suggest you to get a FreeIMU an doing some tests and see how it works before going more serious with the project. Please join the community at http://freeimu.varesano.net/ reply

my free IMU doesn't seem to zork right!! help please


Submitted by ISMA (not verified) on Mon, 2012-11-19 23:44.

Hi, I am using the arduIMU v3 from dydrone. I am trying to read roll pitch and yaw but it looks like it is displaying a bunch of wrong data that do not have anything to do with roll pitch or yaw, no matter how I vary the positions of my board. actually even when I don't move the board at all the values for yaw keep increasing until they reach a certain value and then go down again. and same thing happens for the roll and the pitch. what could be a possible reason for the readings that I am getting? and what would be a fix for that. thanks reply

Trouble compiling MS5611BA_Altitude sketch


Submitted by Rick Eis (not verified) on Fri, 2012-11-16 01:46.

Hi Fab, I'm wanting to implement the work you have done with the MS5611 into my OSD system for my model aircraft. I'm trying to run your MS5611BA_Altitude sketch and am having trouble compiling it on a Arduino UNO. These are the errors I'm getting (see below) ~ Can you or maybe someone else help? Thank you in advance, Rick MS561101BA_altitude:36: error: 'MS561101BA' does not name a type MS561101BA_altitude.pde: In function 'void setup()': MS561101BA_altitude:51: error: 'baro' was not declared in this scope MS561101BA_altitude:51: error: 'MS561101BA_ADDR_CSB_LOW' was not declared in this scope MS561101BA_altitude:56: error: 'MS561101BA_OSR_4096' was not declared in this scope MS561101BA_altitude.pde: In function 'void loop()': MS561101BA_altitude:62: error: 'baro' was not declared in this scope MS561101BA_altitude:62: error: 'MS561101BA_OSR_4096' was not declared in this scope reply

Compiling fine here. You have


Submitted by fabio on Fri, 2012-11-16 12:10.

www.varesano.net/projects/hardware/FreeIMU

13/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

Compiling fine here. You have to install the library to your Arduino library folder before being able to compile that program. The FreeIMU library section above includes instructions and references on how to do so. Also have a look to the INSTALL.txt file in the distribution. reply

MS5611-01BA03
Submitted by Rick Eis (not verified) on Sat, 2012-11-17 01:40.

Thanks Fab, Got it compiled no errors :) I'm using this MS5611 board from these folks http://www.csgshop.com/product.php?id_product=96 It looks like it is a MS5611-01BA03 Is there something I need to modify in the code to see some type of output in the serial monitor? Right now I am not seeing anything. I feel like I'm getting close and am looking forward to seeing some numbers :) Thanks again, Rick reply

Basic questions
Submitted by Anonymous (not verified) on Wed, 2012-11-14 17:48.

I'm very new to using sensors and have some basic questions to see if FreeIMU (or ArduIMU) would be suitable for the application I have in mind. I'm hoping to be able to measure the change (in degrees) of the yew and pitch during a short forward movement (about 6-12 inches over about 0.1 to 1.0 seconds) parallel to the x-axis of the device. I'd need to determine the start and end of the forward movement (the end may be abrupt - a collision). Also, the device may be oriented in different rolls during this movement and would need the same yew and pitch result regardless of its roll orientation (it could be laying flat, upside down or on its side during the movement). I think this application of the device is a simple case and issues regarding 'drift', calibration, etc. may not come into play. Do you agree? Would FreeIMU be suitable? Would a simpler device, such as only an accelerometer/gyroscope, be sufficient for my needs? Thanks in advice for your comments. reply

More detail about the application


Submitted by slach (not verified) on Thu, 2012-11-15 03:31.

Appreciate the comments thus far. Let me try to explain the application better. The device would be a training aid attached to the butt end of a pool (billiards) cue, the x-axis parallel with the cue but it may oriented on the top,
www.varesano.net/projects/hardware/FreeIMU 14/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

side, etc. of the cue stick. When a player shoots the cue tip is paused near the ball (the 'set'), the cue is drawn back and stops momentarily (the 'pause') then stroked forward to strike the ball (the 'finish'). The player's objective is to keep the cue movements straight along it's axis, so the tip finishes at the same place as it was at the set and with minimal lateral (yaw) variation during the stroke (pitch changes during the stroke are normal and acceptable). On a very hard forward stroke the cue may be moving up to about 25 mph, though only for about 6 to 12 inches. Can an IMU (or hopefully a device with fewer sensors) be able to measure the straightness of the stroke? Can some of the difficult programming you are using for more typical IMU applications be avoided? I'm a novice and only familiar with C and Java programming. I'm hoping to get some guidance before buying things I don't need and going down the wrong paths when experimenting. Thanks again for any comments. reply

If the device is stationary


Submitted by Osman Eralp (not verified) on Wed, 2012-11-14 23:11.

If the device is stationary for a short period of time, such as one second, at the beginning and end of the movement, I think you could use only an accelerometer. The problem with accelerometers is they are noisy. That is why accelerometers are combined with gyros: the combination reduces noise. But if your device is stationary, you can take a few hundred readings from just an accelerometer, average the readings, and get reasonable results. Of course, a complete IMU such as the FreeIMU will give more accurate results, but you might not need that level of accuracy. reply

No, you can't do what the


Submitted by fabio on Thu, 2012-11-15 01:08.

No, you can't do what the original poster asks only with an accelerometer. He wants to measure the changes in degrees on the yaw and pitch during forward motions. Unfortunately, you can't measure yaw from an accelerometer only. You need a complete IMU for that. I wouldn't say that this is a simple application tough. Depending on how fast the motion is, you may get good or bad results. You may wanna do some tests and see how it goes. reply

Get FreeIMU refactored to be more portable on other platform


Submitted by Guz (not verified) on Sat, 2012-11-10 08:50.

Hi Fabio, I'm using FreeIMU 0.4 with Arduino for a while. Now I'm porting the FreeIMU library to an ARM platform (Energy Micro). I'm modifing the sensor driver to always use the I2CDev lib. Since your code is C++ with only stadard types, I want to only have I2CDev to get modified
www.varesano.net/projects/hardware/FreeIMU 15/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

(concentrate I2C implementation) Could you integrate my modifications ? Always using I2CDev lib enable to get only I2CDev be modified to handle Arduino and EFM32 platform. Regards, reply

Hi Guz, thanks for using


Submitted by fabio on Sun, 2012-11-11 01:39.

Hi Guz, thanks for using FreeIMU and for willing to help. Unifying the I2C access routines is something that the FreeIMU library badly needs. It's been on my todo list for quite some time, but still not been able to do so. So, any help you could give would be much appreciated. However, I always found i2cdevlib unreasonably bloated.. too many functions, calling too many subfuctions.. we are using microcontrollers, not writing Java webapps. I would suggest you to have a look at the i2c implementation used by the MultiWii project (lines 150 to 260 from http://code.google.com/p/multiwii/source/browse/trunk/MultiWii/Sensors.ino ) .. this looks to me as very efficient and elegant. Probably, I would have simply wrapped that code into a CPP object and go with that. Interested in hearing your thoughts. reply

Hi, So I'll look that code


Submitted by Guz (not verified) on Sun, 2012-11-11 10:39.

Hi, So I'll look that code and port it into a C++ class. I'll try to make that class portable from Arudion to EFM32 platform. I'll port drivers to use it and to be generic (any platform). Regards. reply

Thanks! I appreciate it.


Submitted by fabio on Sun, 2012-11-11 11:04.

Thanks! I appreciate it. Please use the latest code from the repository as starting point. reply

Ok, Unfortunelately, I'm


Submitted by Guz (not verified) on Sun, 2012-11-11 19:27.

Ok, Unfortunelately, I'm using windows so get the latest version from launchpad isn't easy.
www.varesano.net/projects/hardware/FreeIMU 16/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

Could you please send me a Zip with latest sources. I'll modify them and post back to you these. Regards, reply

Just use the 2012/11/06


Submitted by fabio on Mon, 2012-11-12 11:49.

Just use the 2012/11/06 version of the library. I didn't make any changes to it in the last week. Thanks for your help. reply

the free IMU library sets the g range +-2 or +- 4 or..?


Submitted by tussh13 (not verified) on Sun, 2012-11-04 10:55.

getting the real world acceleration :) just need to know the g range now reply

If you are using a FreeIMU


Submitted by fabio on Tue, 2012-11-06 12:05.

If you are using a FreeIMU v0.4, then the default range for the accelerometer is +-2G .. if you want to change this, you can call accgyro.setFullScaleAccelRange(X) where X can be MPU6050_ACCEL_FS_2, MPU6050_ACCEL_FS_4, MPU6050_ACCEL_FS_8, MPU6050_ACCEL_FS_16 respectively for +-2, +-4, +-8 and +-16 G. reply

Acceleration in g's + Kalman Filter


Submitted by tussh13 (not verified) on Sun, 2012-10-28 18:16.

Hi, I know how to apply kalman filter to an ANALOG ACCELEROMETER read all about it from starlino and instructables. How do I use it in a DIGITAL ACC....I need to get real world acceleration in G's for my project... what more should be done to the raw values from ADXL345 to get Kalman filtered values Fabio please help.....have been trying this for a week now reply

Add Kalman to this may be but how????????????????????


Submitted by tussh13 (not verified) on Sun, 2012-10-28 18:58.

float S=0.0078;//scale factor to convert from raw acc data to g rawAcc[0]*=S; rawAcc[1]*=S; rawAcc[2]*=S; float[] g= { 0.0, 0.0, 0.0
www.varesano.net/projects/hardware/FreeIMU 17/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

}; g[0] = 2 * (q[1] * q[3] - q[0] * q[2]); g[1] = 2 * (q[0] * q[1] + q[2] * q[3]); g[2] = q[0] * q[0] - q[1] * q[1] - q[2] * q[2] + q[3] * q[3]; float[] dynAcc= { rawAcc[0] - g[0], rawAcc[1] - g[1], rawAcc[2] - g[2] }; } Now that values I'm getting are: quaternion= [0] 0.048809517 [1] -0.4581384 [2] 0.8866772 [3] 0.03911991 rawAccleration (now in g I hope); [0] -0.1248 [1] 0.038999997 [2] -0.9906 dynamic acceleration= [0] -0.0023987591 [1] 0.014349561 [2] 0.0015745759 reply

Add Kalman to this may be but how????????????????????


Submitted by tussh13 (not verified) on Sun, 2012-10-28 18:57.

https://answers.launchpad.net/freeimu/+question/178946 reply

MPU6050 DMP
Submitted by fabian (not verified) on Fri, 2012-10-26 21:47.

Hi Fabio, I was curious if you've tried using the DMP of the MPU6050 directly? I was wondering if you'd get better fusion of the acc, gyro, mag that way. Or perhaps both DMP and Mahony's DCM? Thanks! reply

MPU9150
Submitted by fabian (not verified) on Sat, 2012-10-27 19:23.

Actually, I just realized that the MPU6050 is not capable of fusing data from an external magno. Lame, bad marketing. But the 9150 should be capable of doing that and it has a magno integrated as well. So I'm hoping their DMP can do some pretty stable fusion (temperature bias integrated too!) Do you have any plans to integrate MPU9150 into a v5 FreeIMU? I'd love to get one ASAP.
www.varesano.net/projects/hardware/FreeIMU 18/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

Thanks! reply

I haven't been able to source


Submitted by fabio on Sat, 2012-10-27 23:14.

I haven't been able to source the MPU9150 anywhere yet.. if you see it around let me know. Personally, I'm not a big fan of DMP.. slow and obscure.. the algorithms used on the FreeIMU are better and allows you to reach much faster frequencies.. I guess the DMP is phones/tablets stuff for lazy programmers. reply

True. The only thing I'm


Submitted by fabian (not verified) on Sun, 2012-10-28 07:25.

True. The only thing I'm concerned is how the variation in temperature is going to affect the sensors readings. I thought the DMP would take that into the account. Or is it the other way around and the raw data is already adjusted for temperature variation? BTW, I just got the FreeIMU v403 three days ago, worked right out of the box, love it. reply

Thanks, we appreciate it.


Submitted by fabio on Sun, 2012-10-28 09:27.

Thanks, we appreciate it. Sensor biases are affected by temperature.. so when you calibrate at say 20 deg and use the sensor at 35 deg, you will see that it will get mostly uncalibrated. We worked a bit on this a lot of time ago, but that code never went into the FreeIMU library.. if you wanna have a look see http://code.google.com/p/itg3200driver/issues/detail?id=9 reply

No Pullups on AUX SDA/SCL?


Submitted by Matt Williamson (not verified) on Wed, 2012-10-24 23:50.

Hi there. I was just checking out the schematics of the 0.4.1 IMU and I don't see any sign of pullup resistors on the MPU6050 AUX I2C for the Mag. Does the MPU have pullups built in? reply

Pullups are not required for


Submitted by fabio on Sun, 2012-10-28 23:37.

Pullups are not required for tha aux i2c of the mpu. See it's datasheet. reply

First person game using sensors

www.varesano.net/projects/hardware/FreeIMU

19/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

Submitted by Edgaras (not verified) on Wed, 2012-10-24 14:56.

Hello fabio, I'm interested in your second video (FreeIMU v0.1 and 0.2:) from 7:23 where you talk about first person kinda game :). Maybe you have a sample code of it and could share it with us? Or maybe you know some webpages that writes something about it, how to look around in the virtual environment using sensor data? Thank You in advance By the way your blog gives me inspiration, keep up the good work Regards, Edgaras reply

Check this out


Submitted by fabio on Wed, 2012-10-24 21:24.

Check this out http://magma-software.blogspot.it/ they are using FreeIMU to augment a helmet screen. That software I showed sucks pretty much.. so I'm not going to publish but if you really want it just get in touch by mail and I'll send you a copy. reply

Acceleration in g's
Submitted by tussh13 (not verified) on Tue, 2012-10-23 22:00.

I want to get acceleration in g's from my free IMU ie dynamic acceleration...pointers? reply

On the repository, you have


Submitted by fabio on Tue, 2012-10-23 22:25.

On the repository, you have calibration code which will allow you to return data in G by default. Then, you simply have to do this http://www.varesano.net/blog/fabio/simple-gravitycompensation-9-dom-imus reply

How to download libary.zip until revision 15 from Launchpad.net


Submitted by Ronnie (not verified) on Mon, 2012-10-15 10:33.

Dear Fabio, Firstly, i admire your excellent work!! Secondly, i was wondering how or when to download your latest library(until rev.15) from launchpad.net? (http://bazaar.launchpad.net/~fabio-varesano/freeimu/trunk/files) Last, is the 9DOF IMU you deliver really drift-free @ all axes after calibration? We want to accurately measure roll-angles for a duration of 8 hours non stop. with kind regards, Ronnie (Netherlands)
www.varesano.net/projects/hardware/FreeIMU 20/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

reply

Ops Ronnie, sorry I lost your


Submitted by fabio on Sat, 2012-11-10 12:09.

Ops Ronnie, sorry I lost your message! Some days ago I updated the downloadable library from this page so there's no need to download the library from bzr currently. However, if you want to do this in the future, you have to install bzr for your operating system. The only angle which may be affected by drift is yaw, pitch and roll aren't. With a properly calibrated IMU, I'm able to get very stable estimation with a drift below 2 degrees on yaw. See this video. reply

next

last

Post new comment


Your name: *
Anonymous

E-mail: *
The content of this field is kept private and will not be shown publicly.

Your website:
If you have a personal or company website insert its address in the form http://www.example.com/ .

Comment Title:

Comment: *

Web page addresses and e-mail addresses turn into links automatically. Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre> <small> <del> <img> <h2> <h3> <h4> <b> <video> <sub> <sup> Lines and paragraphs break automatically. Images can be added to this post. You may use [inline:xx] tags to display uploaded files or images inline. You may insert videos with [video:URL] Each email address will be obfuscated in a human readable fashion or (if JavaScript is enabled) replaced with a spamproof clickable link.

More information about formatting options


www.varesano.net/projects/hardware/FreeIMU 21/22

23/07/13

FreeIMU: an Open Hardware Framework for Orientation and Motion Sensing | Varesano.net

Notify me when new comments are posted All comments


Send Preview

Replies to my comment

Copyright 2007-2013 Fabio Varesano - Some rights reserved. Privacy Policy

www.varesano.net/projects/hardware/FreeIMU

22/22

Potrebbero piacerti anche