1. Aircraft Configuration
I am working with a hybrid VTOL drone that combines a fixed-wing aircraft and quadcopter configuration. The aircraft uses a tailsitter VTOL configuration.
The aircraft has the following characteristics:
- Hybrid VTOL/fixed-wing configuration.
- Quadrotor motor arrangement for VTOL operation.
- The motors are mounted in an angular/tilted rotor configuration rather than being perfectly vertical.
- The fixed-wing configuration does not use conventional aerodynamic control surfaces such as ailerons, elevator, or rudder.
- The aircraft uses a full-lift body configuration, meaning the body/airframe itself generates the aerodynamic lift.
- Control during fixed-wing flight is therefore expected to be achieved primarily through differential motor thrust / motor control, rather than conventional control surfaces.
I have attached an image of the aircraft/motor configuration for reference.
2. ArduPilot Configuration
We are using:
- Vehicle: ArduPlane
- Firmware: 4.6.3
- Firmware Hash:
3fc7011a - Configuration: Tailsitter VTOL
For VTOL takeoff, we are currently using:
QLOITERQSTABILIZE
Both of these modes are currently working correctly, and the aircraft is able to perform VTOL takeoff and stabilization without major issues.
3. Problem During Transition to Fixed-Wing Mode
The main problem occurs when transitioning from VTOL mode to fixed-wing flight.
When we change the flight mode to:
FBWAFBWB
the aircraft does not respond correctly to RC control inputs.
For example, we have tried providing:
- Roll input
- Pitch input
- Yaw input
However, the aircraft does not respond as expected in fixed-wing mode.
Since the aircraft does not have conventional control surfaces, we are expecting the flight controller to control the aircraft through the available motor outputs/differential thrust.
At the moment, this control does not appear to be working correctly in FBWA or FBWB.
4. Unexpected Yaw Behavior
There is also another issue that we noticed during testing.
When the aircraft is in FBWB mode, we are observing a yaw-rate response even when there is no yaw RC input.
In other words, the aircraft appears to be generating yaw-rate commands or yaw motion without an intentional pilot yaw command.
We would like to understand whether this behavior is related to:
- The tailsitter configuration
- The motor tilt angle
- The
Q_TRIM_PITCHsetting - The
Q_TAILSIT_ANGLEsetting - The lack of conventional control surfaces
- The motor mixing/output configuration
- Or another ArduPlane parameter/configuration issue.
5. Current Motor Tilt / VTOL Configuration
Because of the physical motor mounting angle, we have had to compensate for the motor orientation during VTOL operation.
For VTOL operation, we currently use:
Q_TRIM_PITCH = -50
The reason for this value is the physical motor tilt angle.
During VTOL takeoff, the motors initially operate according to the VTOL configuration. As the aircraft transitions, the motors are expected to rotate/align toward the fixed-wing thrust direction.
Due to the motor mounting angle, the aircraft naturally tends to pitch upward slightly during the VTOL phase, so Q_TRIM_PITCH was adjusted to compensate for this behavior.
6. Fixed-Wing/Tailsitter Angle Configuration
For the fixed-wing configuration, we are currently using:
Q_TAILSIT_ANGLE = 30
The intention of this setting is to compensate for the physical geometry of the aircraft during the transition to fixed-wing flight.
When the aircraft reaches the fixed-wing orientation, the aircraft should become approximately level.
With the current mechanical configuration, the front motor moves downward during the transition, while the aircraft body rotates toward the normal fixed-wing flight attitude.
Therefore, we selected Q_TAILSIT_ANGLE = 30 based on the required physical orientation of the aircraft.
7. Expected Behavior
Our expected flight sequence is:
- Start the aircraft in VTOL configuration.
- Perform takeoff using
QSTABILIZEorQLOITER. - Once the aircraft is safely airborne, initiate the transition to fixed-wing flight.
- The motors should change from the VTOL orientation/thrust configuration toward the fixed-wing configuration.
- The aircraft should settle into the correct fixed-wing attitude.
- In
FBWAorFBWB, the aircraft should respond to pilot RC inputs. - Roll, pitch, and yaw commands should produce the appropriate differential thrust/control response.
- There should not be an unexpected yaw-rate command when there is no yaw RC input.
8. Actual Behavior
The current behavior is:
QSTABILIZEworks correctly.QLOITERworks correctly.- The aircraft can perform VTOL takeoff.
- After changing to
FBWAorFBWB, the aircraft does not respond correctly to RC inputs. - Roll and pitch inputs do not produce the expected aircraft response.
- Yaw input also does not appear to produce the expected response.
- In
FBWB, we observe yaw-rate behavior even when there is no intentional yaw input. - The aircraft has no conventional aileron/elevator/rudder control surfaces, so we need the appropriate motor-based control/mixing strategy for fixed-wing flight.
9. Questions / Assistance Required
We would appreciate guidance on the correct ArduPilot configuration for this type of aircraft.
Specifically, we would like to know:
-
Can ArduPlane 4.6.3 control a tailsitter fixed-wing aircraft that has no conventional control surfaces and relies entirely on differential motor thrust?
-
If this configuration is supported, which parameters are required to configure the motor outputs correctly for roll, pitch, and yaw control in
FBWA/FBWB? -
Is there a specific motor mixing/output configuration required for a quad-style motor arrangement to provide fixed-wing roll, pitch, and yaw control?
-
Could
Q_TRIM_PITCH = -50be causing incorrect behavior during the transition or after entering fixed-wing mode? -
Is
Q_TAILSIT_ANGLE = 30the correct parameter/value for our mechanical configuration, or should this parameter be determined differently based on the actual aircraft geometry? -
Could the unexpected yaw-rate behavior in
FBWBbe caused by incorrect attitude estimation, motor mixing, tailsitter transition configuration, or yaw controller configuration? -
Are there any specific parameters that should be checked in the SERVO/MOTOR output functions to ensure that RC roll/pitch/yaw commands are actually being converted into the appropriate differential motor outputs?
-
Is
FBWA/FBWBthe correct fixed-wing flight mode for this type of control-surface-less full-lift-body aircraft, or is another ArduPilot configuration/mode required?
10. Flight Test Data
I have also attached the flight test log/data from the aircraft.
The log should provide information about:
- RC input commands
- Desired roll/pitch/yaw
- Actual roll/pitch/yaw
- Yaw rate
- Motor outputs
- Flight-mode changes
- VTOL-to-fixed-wing transition
- Attitude response
In particular, we would appreciate it if someone could review the log around the point where the aircraft changes from QSTABILIZE/QLOITER into FBWA/FBWB and determine why the RC inputs are not producing the expected motor/control response.
Summary
The aircraft is a tailsitter hybrid VTOL with a quadrotor motor arrangement and no conventional fixed-wing control surfaces. VTOL operation is currently working well in QSTABILIZE and QLOITER.
The main issue is that after transitioning to FBWA/FBWB, the aircraft does not respond correctly to RC roll, pitch, or yaw commands. Additionally, we observe an unexpected yaw-rate response in FBWB without an intentional yaw input.
The aircraft’s motor geometry is also non-standard because the motors are mounted at an angle. We are currently compensating for this using:
Q_TRIM_PITCH = -50Q_TAILSIT_ANGLE = 30
We would like guidance on the correct ArduPlane tailsitter parameters, motor mixing/output functions, and fixed-wing control configuration for this type of full-lift-body aircraft.
The attached aircraft image and flight-test log are provided for reference.
Here is log Link: Log file
