Perseus AHRS + 3D Visualization App/Source

A short video of the Perseus AHRS using a small 3D visualization app I wrote this afternoon:


Full blog article is here:

I've been working on the Perseus Autopilot for the past few weeks and unfortunately didn't find the time to post any updates on the Andromeda Blog. I'm in the process of writing about a few things about the AHRS that I've been building as part of the project and I should hopefully post that within the week.

Also in case it might be of use to anyone, I wrote a simple 3D visualizer for the demonstration above. It will read quaternion values from the serial port in the following format:

w x y z;

But you can re-write it to accept any format. You just need to write your own custom GetRotation function. It's developed in C# and uses WPF3D for the visuals so the codebase is very small. Unfortunately it limits it to windows only (sorry). The source include the entire VS2008 project and you can do whatever you want with it.

You can download the code from here:



Views: 297


Developer
Comment by John Arne Birkeland on August 5, 2010 at 8:11am
Nice work! Are you happy with the Analog Devices IMU cube?
Comment by Curt Olson on August 5, 2010 at 9:26am
I've been using the vectornav vn-100 here driving a 15-state kalman filter and have been pretty happy with the performance and results. I've also used the AD iSensor cube in a previous project. I haven't had them both at the same time so I can't directly compare the two, but my perception is that their performance and precision is roughly in the same ball park.

I like the fact that the VN-100 has a much slimmer vertical profile (about the same foot print as the cube.) I also like the fact that the VN-100 has a uart output option. The VN-100 doesn't have the dangly cable connection that the cube has. The VN-100 also has it's own built in AHRS kalman filter which you could optionally use in a pinch.

Which IMU is better probably depends on your application. They are both pretty good and right now I'm getting a lot of mileage out of the VN-100 (www.vectornav.com).

Regards,

Curt.
Comment by Fab - Arduino for Visual Studio on August 5, 2010 at 9:42am
Nice work but you can do this using google earth and 3D models, why just a 3D shape in space?
Comment by Nima K on August 5, 2010 at 2:48pm
@John: yeah I'm pretty happy with it. The magnetometers in the ADIS16400 have some pretty sever offsets but once you have them figured out it's pretty good. The gyros are absolutely incredible I must say.

@Curt: I've never had any experience with the VN-100 but it looks like a neat little package. Does your 15 state KF integrate GPS too? I'm doing the same thing except in a cascaded kalman filter. So 12 states overall divided between 2 kalman filters.

@Fab: I wanted something specific so I made it. It only took an hour or two, and if anyone wants to extend it now they can.
Comment by Felipe Jaramillo on August 9, 2010 at 10:05am
Hi Curt Olson,

I also have the VN-100 from Vectornav, but I have been having some problems with it, I was wondering if you could help me a bit with it. Are you using the default parameters of the kalman filter? or did you use your own?

The issue that Im having is the following. When I do, for example, only roll movements, the unit also measures some pitch, and a lot of yaw, which shouldnt happen.
Comment by Fab - Arduino for Visual Studio on August 9, 2010 at 10:06am
@Nima, it's very cool
Comment by Curt Olson on August 9, 2010 at 10:31am
Felipe: The vectornav by default doesn't know velocity or have gps information so it doesn't have any way to compensate for motion induced acceleration. There is an undocumented CMV string that returns the raw sensor data without any internal bias compensation. This is what I'm using, and I feed the raw data into our own 15-state kalman filter and do our own bias estimation.

I haven't explored the details of this, but I think I recall one of the vectornav engineers mentioning that there is a way you can send it the velocity so that it can account for that in it's internal kalman filter. Also the vectornav's filter is *very* tunable if you know a little bit about kalman filters and understand how the gains and parameters interact.
Comment by Felipe Jaramillo on August 9, 2010 at 10:58am
Curt Olson: Thanks a lot for your answer.

I have been trying to tune the kalman filter of the VN-100 and I havent been able to obtain a acceptable behaviour, at least good enough for the quadrotor Im building.

What you are saying is that you are using your own Kalman filter using the magnetometer, accelerometer and gyro raw data of the VN-100?

Is there any way you can share with me the Kalman filter you are using?

Thanks a lot
Comment by Curt Olson on August 9, 2010 at 11:11am
Hi Felipe, I am running a 15 state kalman filter. I haven't been given permission to share the actual C code, but the algorithm is published in a text book that includes matlab and octave versions of the filter. The cool thing about this particular filter (compared to some of the other filters I've seen people working on) is that it uses gps position and velocity information to converge to the "true" attitude of the aircraft. It currently doesn't incorporate magnetometers into the filter, it doesn't use airspeed to compensate for centripetal forces, it uses a more generic system model.

ISBN-13: 978-1-59693-329-3

Just to put in another plug for this algorithm (and algorithms that do the same sort of thing.) Knowing "true" heading allows to do things like accurately estimate the wind vector, accurately point a pan/tilt camera at a fixed gps coordinate (you need to know the true heading in the NED frame to compute the math.) Plotting the "true" heading on your ground station shows you accurately crabbing into the wind. I apologize for jumping in on another thread ... I just wanted to point out the vectornav as a possible alternative to the AD iSensor cube, and then got distracted answering a few questions about it.
Comment by Nima K on August 9, 2010 at 8:34pm
Curt,

No apology necessary. I am pursuing the same outcome myself. I have however taken a different route. I have a 7 state EKF that I have demonstrated above, which only calculates the attitude (it includes magnetometers, obviously). This attitude is corrected for centripetal acceleration.

Then there is another 5 state EKF which runs separately, and uses the GPS, attitude information and airspeed to provide a dead reckoning solution and also wind estimation.

I'm going to post these in a future update soon, as I am still putting the finishing touches on them. But I'd be interested to see your EKF in action if you wouldn't mind posting some info about it.

Comment

You need to be a member of DIY Drones to add comments!

Join DIY Drones

Contests

Season Two of the Trust Time Trial (T3) Contest has now begun. The third round was a reliablilty/aerial photography round for both planes and copters, which is now closed. Stay tuned for the next round, beginning soon.

A list of all T3 contests is here

 

© 2012   Created by Chris Anderson.

Badges  |  Report an Issue  |  Terms of Service