|
From: Jon S. B. <jon...@co...> - 2010-01-02 06:06:40
|
Hi Dave and Jon, I have another potential usage case that might benefit from something similar. Let me state up front this isn't fully thought out! I do quite a bit of UAV work these days. Typically we use inertial sensors (gyros and accelerometers) in combination with gps to estimate the current location and attitude of the vehicle. Gps arrives at a slower rate than the inertial data. Given an initial state (location, velocity, attitude) we can estimate our new location, velocity vector and attitude moving forward in time based on the inertial data alone, and sometime in the future (i.e. once a second) we receive a gps reading and that combined with a few tricks allows us to correct our location, velocity, and attitude estimate. What we think might be interesting to investigate is to build up a flight dynamics model of our vehicle and use that in real time (with knowledge of the control surface locations) to provide another way to estimate our location, velocity, and attitude as time progresses. The results of crunching the equations of motion could be used to help constrain potential errors, the results could be rolled into the kalman filter along with everything else, we could compute an attitude estimate at a higher rate than the sampling rate of our inertial sensors. I think in basic theory, what I would like to do is similar to what Dave is proposing ... the idea of running the equations of motion and keeping the pipeline full of good data, but slaving the position, velocity vector and attitude to some external reference and being able to update/reset these basic location/attitude state values without blowing everything up internally. I know Dave is talking about executing the inverse of the EOM, but I'm not able to turn my head inside out on a holiday. :-) Curt. -- Curtis Olson: http://baron.flightgear.org/~curt/ Curt, It sounds like what you want is the ability to set (or reset) the state vector for a simulated vehicle model at will. At that time you could fly out the model for as long as desired. There are a few functions calls in JSBSim that could be helpful, but I don't think they have been applied exactly to what you want to do, yet. FGFDMExec::RunIC() // Requires the FGFDMExec::IC structure to be populated. FGState::Initialize(FGInitialCondition *FGIC) FGPropagate::Initialize(FGInitialCondition *FGIC) Jon |