This is a simulation I'm working on to improve the Loiter control laws and discover optimal gains. I have identical code from Arducopter running in Flash as OO Javascript so I can ensure the behavior is the same as the real thing. I tested the MTEK GPS to find the actual latency and accuracy and then modeled it in code. This allows me to test PIDs and other coding ideas to see how the copter will behave in real life. The copter itself is a simple physics equation and should be fairly accurate. To better tune the SIM, I can compare AC Flash Logs from real flights side-by-side with the SIM flights which also output the same text based logs.
I've already found many areas for improvement in the Loiter code which i've just checked in to the GIT repository.
Hopefully this tool will serve as a great PID introduction as well. I know I've learned a lot by comparing plots with small changes in the gains.
Jason
Comments
All is very awesome and all, but what if I have a 10kg Quad running twin 20 volt batteries with 1000Wat motors and a 4kg scientific camera. I feel you need to include these variables because alot of people create their own styles and is very hard to test those PID's across the APM.
Regards
Thanks Ryan. I'll try it.
And you can tweak it if you want by doing something like this:
SOG_estimate = SOG_now + K*(SOG_now - SOG_old);
Where K is some gain typically 1 or less and always positive.
Jason, That's not exactly what you want to do. You don't want to derive a separate state from the gps measurements. You want to smooth the ones you already have! So Speed would output a smoothed speed and position x&y would output a smoothed x&y position.
Speed over ground = SOG
SOG_estimate = SOG_now + (SOG_now - SOG_old);
I've got another 2-3days work to finalize it.
Daniel,
I''m pretty far on a second version that includes the stability routines. It will also do navigation and include the Nav PIDs.
Hello Jason
If we had more:
-choice: Kv motor-choice: propeller-choice or configuration X+-choice weight-choice: distance between axis motors
we would have the perfect tools!
Bravo is already great
Regards Daniel
I see the mission planner
lotier P-I-Imax.
as integral values if I do not agree with the mission planer?
Thanks! It's cool^_^
Ryan,
I added in a basic speed estimator:
It's pretty noisy. The red is the real speed, green is the GPS speed with latency. The blue is the adjusted speed.
Here is the code:
speed_input = (g_gps.longitude - last_longitude) / dt;
sensor_speed.x = speed_input + (speed_input - speed_old) * gain;
speed_old = speed_input