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.
What 'copter ?
ESC's calibrated properly?
I mean, there are hundreds of Tri's, Quads, hexas and Octo's flying.
Some more successful than others, but flying.
You need to hook up with someone near you, that is flying successfully, to look your setup over.
Vincent: we'll need to understand a bit better what's unique about your setup. We've now got hundreds of people flying fine with 2.3/2.4, so we'll need to zero in on what you're doing differently. I'm sure you've written this elsewhere in this thread, but can you repeat:
1) Have you calibrated your ESCs?
2) Does it pass the motors and hand test (ie, everything hooked up right)?
3) Have you double-checked props orientations and right-side up, etc?
4) Is there anything unusual about your frame (very big, or very small etc)
5) Are you going through the whole MP setup process, including RC calibration and leveling?
1) ESC's are calibrated
2) Motors pass the hand test
3) Props all correct.
4) -Main frame is a X650 with Tigermotors MT2814-710KV with turnigy plush 30A ESC and using APC 10 x 4,7
-Test frame is MK50 with KDA 20-22L with the same ESC's and props.
5)yes, but for test reasons I don't use GPS and sonar not Xbee
I've done the setup procedure probably a thousand times woth Arduino and MP with previous versions. The only weird thing is when I load v49, where I had very good stab, it flies just fine.
Vincent, you have my same motors... soon see them in action on my heavy X8.
10x4.7 is too little for this motors and your quad!
You must use "12x3.8 APC SF" for aggressive flight or "13x6.5 APC E" (i use this one in the video) for high paypload and smooth flight.
About the timing of the esc i suggest "low", lose power but gains in stability.
Please can you record a video of takeoff and hovering with your quad (TigerMotors)?
Vincent, I don't have the ppm upgrade and 2.4 flew ok on my hexa.
Have you tried playing with the stab_D parameter ? It seems this one could be rather critical.
Something else : you've used the same type of esc. Are you sure they can handle the 400hz update rate ? Try putting #define INSTANT_PWM ENABLED in your apm_config.h
I see now you have the turnigy plush esc's. they should handle the 400hz just fine.
Well, I just did what you proposed ;-)
When I hold the quad firm and level in my hand and give like 50% THR, you can feel the motors changing speed resulting in wanting to fly in random directions.
I also lowered rate D to 0,002 with no improvements.
@Marco, I flew the X650 quad with v49 and apc 10 x 4.7 without problems. Ok hover was allmost 60% THR but was very stable. I also used bigger props and resulted in more lift at lesser THR.
Ok, just to remind me:
I connect quad through arduino and start CLI. 3 x enter, go into setup and send command "reset" followed by yes. Then I type "erase".
When Eepromis erased I close CLI and go to arduino. I open the 2.4 arducopter file and define quad and aslo X mode. ThneI load it to the quad.
It compiles succesfully.
After the upload I go back to CLI setup and level the quad followed by the command level.
I then send the command compass on and followed by declination.
I switch in radio and send radio in CLI to calibrate. This also goes fine.
Sonar, battery, ..... I leave for what it is because I don't need it for stable flight.
I then go to MP and check if HUD followes the movement of the quad. All good so far.
I plug in battery and hand test if the directions of the TX transfers to the quad.
Then when I give more thr it starts with the strage behaviour.
some extra info
I upload with ardiuno 22 relax and use two eurgle 9x transmitters one with eurgle RX and the other with frysky.
Vincent, out of curiosity, why are you using the CLI? All the setup can (and should) be done with the MP. Please try that.
will try ...
The reason I use arduino is because I need to define the sparkfun compaas I use on one of the IMU's.
Loaded the code with arduino and then did setup in MP
Will try 2.3 with MP
Tried 2.3 through MP and loads fine and flies fine but with the twitch.
Guess I'll have to wait until 2.4 comes in MP
Have you soldered your motor connectors? Sometimes what people see as a twitch is bullet connectors with poor connections. At any rate, ArduCopter 2.4 should be out in the MP within the next 24 hours so you can test it soon.