Hi Droners. I've implemented V-tail mixing support in ArduPlane 2.68. I chose 2.68 rather than 2.70 as I am not using the PX4 board. Previously, if you were using a V-Tail model you have to use an external V-tail mixer. If you've tried an external V-tail mixer you will know they can be laggy and sometimes unreliable. Hence, I roll up a first pass of the V-tail firmware.
At present it's implemented as a couple of pre-processor directives that you set in APM_Config.h. I'd like to make it more future-proof by making it a config parameter that can be tuned via the MissionPlanner. However, I'd like to get it out so that other people who might want to use V-Tail mixing can test it.
To implement it, I de-mix the V-tail mixing in the read_radio() function and re-mix it in the set_servos() function. This means that internally, the APM thinks you have a regular elevator/rudder tail. It also means that if the APM should crash, the PPM hardware should pass your signal through to the servos.
I've flown it in one model, 3 flights. It performed flawlessly in MANUAL, STABILIZE, FBW_A and RTL modes, the only modes I used. However, it would be great if more people can test and extend the V-tail mixing. I have one more V-tail model I'm repairing and will remove the V-Tail mixer and use this new firmware.
To test it, please apply the provided patch (VEE_TAIL.patch) to ArduPlane 2.68:
cd ArduPlane-2.68/ArduPlane
patch -u < ../../SourceCode-ArduPlane2.68/Vee-Tail-0.1.patch
If you are uncomfortable using the patch command, I've included a .zip file of the modified files. Unzip these into a clean ArduPlane-2.68/ArduPlane directory and you should be able to compile V-Tail mixing. If you use the patch, V-Tail mixing will be enabled in your APM_Config.h. It's not enabled if you use the .zip file, to avoid overwriting whatever configuration you've already set.
Instructions for use are in APM_Config.h.reference (and copied below). Going forward, I'd like to see this pushed upstream to the main codebase. In the mean time, let's test it a bit more.
//////////////////////////////////////////////////////////////////////////////
// VEE_TAIL_INPUT OPTIONAL
// VEE_TAIL_OUTPUT OPTIONAL
// VEE_TAIL_REVERSE_YAW OPTIONAL
// VEE_TAIL_PITCH_SERVOS_OPPOSITE OPTIONAL
//
// V-Tail mixing options.
// *NOTE*: do not confuse with elevon mixing (set with g.mix_mode), which is sometimes called V-tail mixing on the forums and knowledge base.
// Set any of these options to ENABLED to enable them.
//
// Enable VEE_TAIL_INPUT to de-mix V-Tail mixing, as programmed in your RC radio.
// This enables the AP software to interpret the 2-channel V-tail mixing as separate elevator and rudder channels.
//#define VEE_TAIL_INPUT ENABLED
//
// Enable VEE_TAIL_OUTPUT to re-mix V-Tail mixing.
// Usually VEE_TAIL_INPUT and VEE_TAIL_OUTPUT are enabled together, unless you are testing V-tail mixing.
// In theory, if the APM crashes, the hardware multiplexer should pass through your radio's V-tail mixing as manual control.
//#define VEE_TAIL_OUTPUT ENABLED
//
// Enable one, or both of these next two options to get your V-Tail mixing to work the correct direction.
// VEE_TAIL_REVERSE_YAW will reverse the yaw de-mixing (and subsequent re-mixing) direction.
// Set VEE_TAIL_PITCH_SERVOS_OPPOSITE if the tail servos rotate in opposite directions for pitch control.
// Leave it unset if both servos turn in the same direction. For example:
//
// ____ ____ FRONT
// __|__ | | __|__ /|\
// (o O | | O o) | Servos turn opposite for pitch: set
// ----- | | ----- | VEE_TAIL_PITCH_SERVOS_OPPOSITE ENABLED
// | | | | |
// |___| |___| \|/
// BACK
// ____ ____ FRONT
// __|__ | __|__ | /|\
// (o O | (o O | | Servos turn same for pitch: unset
// ----- | ----- | | VEE_TAIL_PITCH_SERVOS_OPPOSITE ENABLED
// | | | | |
// |___| |___| \|/
// BACK
//
// Getting the correct order of these last 2 settings may require some trial and error. Here is the order of steps I suggest:
// 1) Set up V-tail mixing in your radio, and test it in your model WITHOUT the AMP (just regular control).
// 2) Hook up the APM as recommended in the manual.
// 3) Compile the firmware with VEE_TAIL_INPUT and VEE_TAIL_OUTPUT.
// 4) Test V-tail mixing in APM after it boots up. Make sure you are in MANUAL mode.
// 5) If yaw and pitch are reversed, set VEE_TAIL_PITCH_SERVOS_OPPOSITE and rebuild.
// 6) If V-tail yaw is reversed, set VEE_TAIL_REVERSE_YAW and rebuild.
// 7) If neither of these changes works, you may need to reverse the tail servos on the OUTPUT side of the APM and go back to step 4.
// 8) Once MANUAL mode is working as expected, try STABILIZE mode. Pick up the model and pitch up/down to ensure the tailplanes are going the correct direction.
// 9) Good luck, and please post your results on the forum!
//
//#define VEE_TAIL_REVERSE_YAW ENABLED
//#define VEE_TAIL_PITCH_SERVOS_OPPOSITE ENABLED
Replies
Great work with the Vtail code. I just installed it and it seems to work well in manual mode and stable.
Will the Vee-Tail patch work for the new 2.74 release?
Can you also create a Vee-Tail Zip with the new 2.74 firmware?
Thanks in advance,
Rov