Jason is travelling this week, so I'll take the helm for the next software release post.
UPDATE: the motor remapping thing was confusing everyone, so we took that out and returned to the regular motor mapping. That means that APM 2 users with Hexas and Octos should wait for the next version. APM 1 users should be fine with any frame.
NOTE: Hexa and Octo users: there have been motor mapping changes that may affect you. Please don't upgrade until we can update the documentation to reflect the changes. This should happen by the end of the day today (Feb 1).
ArduCopter 2.3 is now available in the Mission Planner. This is the next revision of the ArduCopter 2.2B6 code, which is perhaps the most tested code we've ever released (1288 comments in the thread!) and certainly in my experience the best code, too.
The default PIDs are optimized for a 3DR/Jdrones quad with 850 motors and 10" props. If you're using more powerful motors/props, start by turning down Rate Roll P (default is 0.14, so start by turning it down to 0.1. In general tune PIDs in 25% steps).
Now that we've got solid code out there, we can turn to collecting suggested gains for standard frames, and a better guide to how to tune PIDs for your unique setups.
Here are Jason's note on the latest changes (mostly from 2.2B6)
A dampening term called STAB_D has been refined. A D term for all of the Rate based control loops has been added based on Igor's work. Landing for Baro and Sonar has been refined based on JLN's work. A slightly new approach to Loiter and Navigation is being used to try and linearize the pitch and roll for rate control. It tends to use lower gains, yet has a more assertive response in the air.
STAB_D : This is the gyro accretion dampener. This can remove small wobbles during sharp changes in angle commands. Making this too high can have a negative effect in performance and add a memory effect that can cause temporary loss in control. The in flight tuning is ranged so you are just below that effect.
If you haven't noticed before the control loops are in two stages. The first is a PI stage that converts some sort of position or angle error into a desired rate. These generally do not need to be tuned. They are more of a user preference on how fast you want the copter to perform a motion.
The second stage is the actual PID loop that needs to be tuned for the copter. This converts the desired rate into a motor command of some sort. I added a D term based on Igor's recommendation to the PI's for each rate controller. These should show up soon in the mission planner for the release. I cannot give you a concrete answer for how to tune the D terms, because they each depend on their function such as alt hold or loiter, etc.
Still, the absolute most important term is always the Rate_P term for each loop. Start tuning here.
The default PIDs are in the what flies great for a stock jDrones/3DR Quad with the purple motors in X mode.
Note the Mission Planner does not yet highlight these D terms on the main tuning page (it will soon), but you can find them and modify them on in the Parameters list.
Autolanding should now work well (see video above) and the Tri servo issue is now resolved.
The code should now compile with Arduino 1.0 (thank, Randy!), but remember that you need to use the "relaxpatch" version of Arduino in our downloads section.
[Update: we've reverted the below. See update at the top of the post]
Important for Octo users:
We've changed some of the motor orders for some more exotic airframes. We'll be updating the docs on the Wiki in a day or two to reflect this. Pat Hickey explains:
As before, the hexa plus APM2 motor setup has changed from the ordering [1, 2, 3, 4, 5, 6] to [ 5, 6, 1, 2, 3, 4 ].
The Octa V layout for APM2 is:6 42 58 13 7Motors 1 through 4 spin clockwise, and 5 through 8 spin counterclockwise.
Bit of a gale blowing here after work, grrr.
Loaded the latest using MP onto a 1280 board, stock quad.
Flew it in the lounge in STAB mode, no funnies picked up.
This looks to be a promising start, I know I have pitched in before on the subject of motor response and it's effect on PID settings. But I have been seeing a few post recently about motors stopping in mid flight for no apparent reason. This continues to happen due to the ESC timing being set to low advance. Even the so called magical DJI suffers from the same problem. It should be Medium or High IMHO. The way to test it is to hold the model at a little below hover power and give it a good shake. If a motor stops your timing is wrong. Also snap the throttle open a few times from idle.
Denny, can you explain *exactly* what the timing setting does? I've always wondered.
I am not the best person to answer that question but basically a three phase motor is also a dynamo which sends a pulse back to the ESC telling it that it is time to change the phase. The timing of when that happens is crucial to the motors efficiency. As all motors are not wound the same there is a provision made to adjust that timing. this is also affected by the frequency that the controller sends it's signal to speed up or slow down. I am sure others can expand on that.
In practical terms If it is under advanced then it will stop working and let out a squeal if it receives a fast signal change. If it is over advanced it will overheat and waste energy. Without the right timing the motor will not respond correctly and PID tuning will be a waste of time.
I always tend to set-up my motors on a test stand to evaluate the settings before proceeding with installation in the model.
To expand a little on that. Prop combination affects response and motor Kv. needs to be matched to the rpm that the prop. will run at when delivering the required amount of lift. If the Kv. is too low then the motor will run out of breath before it reaches the lift that is possible from that wattage. If it is too high then the motor will overheat .
I flew 2.3 as per AMP on my quad inside (standard GUAI 300 quad, no sonar, 2200 mAh 3-cel battery)
I tune rate_***_D parameters as per Igor's instructions. It is very stable flying inside. Here are my settings:
So reset to defaults and it also flies nice insdie, but not as responsive and solid.
I took it outside for a spin. About 4 Bft winds were blowing and it flew well, I tried altitude hold at appr 6 meteres and that went fine too.
Loiter doesn't, as soon as I flick the switch it starts to drift away with the winds without any apparent counter reaction. However I doubt this is related to this particular software version as I have until now never managed to get a good loiter.
Gerrit, and you fly with rate r/p D set to zero?
And RATE roll & pitch P at zero? That seems scary to me!
I gave the 2.3 version a try today, but it really did not work at all for me, maybe something has happened to my hw, it just seems wacko!
First I just downloaded by MP, edited my params (no erase/reset, think that was done automatically), and tried to handheld. It was not stable at all and tried to flip forward in pitch, no resistance to stabilize. Saved a version of the params.
Then reloaded and did erase/reset in CLI, went through config and recalibrated radio level etc. Tried a handhold in stabilize and this was worse than ever. Really hard doward pitch, and after some time abrupt changes in motorspeeds and inclination as if it were flying an auto mission, almost lost the copter.
I diffed the params and noticed that there were a couple of diffs that puzzled me. In the first try the RATE_RLL_P and RATE_PIT_P were set to 0 ???
In the second try (after going through a full setup) they were both set to 0.14, but that made the test even worse!
Dont know what to search for here, but I enclose the log if anyone cares to have a look.
PS, a documentation for the logs would have been fine too!
Hope this has nothing to do with motor reversals, I have a quad in x.
you describe my experience.
puzzled as well and not so hapy about the reorganized attitude controller.
Which part? the copter being wacko :)
Or the diffs in RATE_P?