I'm building my own inertial navigation system --- one that isn't super complex, doesn't involve fancy filters, yet will provide plenty of accuracy. It's all about purposeful building... designing and building for what it WILL do, not what it MIGHT or could possibly be able to do.
With that said, I'm using the Razor - 6DOF Ultra-Thin IMU from SparkFun. So far so good! I've got a basic program written on my Arduino, which includes a complementary filter. I've been very impressed with it so far. Prior to beginning, I had done a lot of researching and video watching to see how others were going about such projects. There's some very talented people out there! Many of them reside here, on DIYDrones (and I'm sure you all know who you are!). There were a few avenues I considered going down in terms of filtering methods..... A Kalman filter of course is very nice, but not having a complete understanding of how it works, let alone any idea how it would be programmed, kept me looking. I love the DCM 'algorithm' Bill and Paul have developed. From my physics and calculus background I've got a great understanding of vectors and such. I still may go down that route. I had found several code examples of the DCM, but I couldn't get them to work quite right. And besides, part of this whole project, for me, is coming up with an even more simplistic, yet effective method. I don't need aerobatic capability. Just normal flyinig abilities. No need to get fancy.
I've also been developing some simple, yet useful and fun software for display the output data. My "Attitude Indicator" program is just that, a simple attitude indicator, which can read serial data from my Arduino (or any other source for that matter), in terms of Euler angles, and accurately display them.
I'd like to continue to expand this program into a complete Primary Display unit.
It's freely downloadable from my site, listed below. I encourage others to play with it and let me know what needs fixing/improving.
Next step for my INS is to incorporate a GPS, which I'm awaiting delivery of. I've chosen to go with a MT3329 based device. This particular unit is produced by 4D Systems and comes with a simple (I like simple) break-out board:
I'm documenting this entire project on my site, which I also have the attitude indicator program.
Site: NuclearProjects.com/ins
Jesse
Comments
Bryan,
The DCM is very awesome indeed! I am a fan of it, the theory makes sense to me, just not a big fan of matrix math. :-)
--------------------------------------------------------
Gordon,
I have not yet begun implementing correction factors. Sitting at my desk it works great, but beyond that, I can't say. I'm just waiting for my GPS to arrive. Once I get that in and going I'll be able to better test it out. I'll eventually need to fly it to really get some good work done!
Hi Tom,
Thank you for pointing out the distinction between AHRS and a true INS. I just had gone through my site recently to make sure I had kept IMU and INS terms from getting confused, so I too am a stickler for correct acronyms. I'll try to clarify...
What I have shown above and on my site at this time is just my progress thus far. I still need to incorporate a GPS into the mix. Once I do that, and eventually an additional airspeed indicator on the aircraft, I'll be using airspeed and GPS velocity to more accurately describe the aircraft's position.
So in time it will actually more resemble an INS than AHRS. Right now I do agree, it's AHRS... but as my title says, the "beginnings". :-)
This looks like a great project. I would love to see INS coding added to Arducopter as it provides better accuracy for position and altitude holding. Still use barometer and GPS for waypoints, but switch to INS on arrival.
Will be excellent for nav where GPS is not possible. Do you have an idea of the degree of precision yet? Can it correct for factors that affect INS, eg. coriolis effect.
So how is what you are making an INS? It sounds like you are making an AHRS (attitude heading reference system).
An INS computes position and velocity using the inertial sensors. An AHRS provides attitude only, which is what this sounds like.
Please correct me if I am wrong.
Tom
Jesse,
I've been playing around with an Arduino uno, sensors and geared DC motors to create an inverted pendulum. I just looked at your web page and your basic information on attitude sensor reading/conversion will be a big help. Searching the internet, I also had found that filter.pdf to be a big help and have gone the complementary filter route for sensor fusion. Unfortunately, my accelerometer data is not filtered enough and I'm getting a lot of noise; probably from my motor drivers.
Speaking of sensor fusion, I see you've referenced Bill's DCM approach. From personal experience with flying his Matrixpilot software and hardware, This approach works very well!
Thanks again for the info,
Bryan