Aschni
August 9, 2025, 10:10am
1
I have a twin-engine plane without rudder.
For heading control I want to use the difference in engine thrust.
But PX4 doesn't support this easily.
I have an idea to turn on the steering servo and mix its signal into the motor control PWM.
I'm looking for an idea on how to implement this.
Thanks for any help
Unfortunately for fixed-wing PX4 not supporting differential thrust yet. You can check Ardupilot for implementation.
Also you can check this PR for PX4
main ← pr-allocation-vtol-mc-motors-in-fw-main
opened 11:55AM - 10 Jun 24 UTC
### Solved Problem
- Feature: use MC motors in VTOL fixed-wing flight in case o… f servo failure
- Clean up differential thrust vs. servo torque generation for fixed-wing vehicles
### Solution
[summary TBD, see commit messages for details]
TODOs:
- [ ] fix interface to rate controllers for actuator saturation (current idea is to set control_allocator.unallocated_torque to NAN if allocation instance doesn't have any effectiveness, to 0 if not saturated and to -1/1 if saturated
- [ ] unit tests for normalization/allocation
Followups:
- [ ] enable differential thrust for planes (enable it by moving motors to matrix 0, servos to matrix 1 also for planes?)
- [ ] remove tilt servos from effectiveness in fixed-wing flight (VTOL tiltrotor)
- [ ] introduce ability to switch off certain motors in forward flight (VTOL tailsitter, tiltrotor), additionally could be based on thrust requirement (switch off certain motors if running on low thrust setting)
### Changelog Entry
For release notes:
```
Feature: Control Allocation: Differential thrust vs control surfaces, servo failsafe mode
```
### Alternatives
### Test coverage
An older version of this PR was tested extensively on a Standard VTOL, including single aileron failures (remove one aileron from effectiveness), and double aileron failure (remove both and fall back to differential thrust). See attached video.
### Context
Screen recording from flight with induced double aileron failure on a Standard VTOL. After the failure is injected the ailerons are locked at zero and a service running on an onboard computer detectes the system failure by monitoring the system response (not part of PX4). it then sends a message to notify PX4 about the failure (see [this additional testing commit](https://github.com/PX4/PX4-Autopilot/commit/619812cbdd071bdf5141b5e09711784fb73498e6)), and PX4 reacts by removing the failed servos from effectiveness.
https://github.com/PX4/PX4-Autopilot/assets/26798987/84f131a1-cd6f-4f9d-a2fd-5b3f60dceb2b
The fallback to differential thrust in case of servo failure can be simulated in SITL by putting https://github.com/PX4/PX4-Autopilot/commit/619812cbdd071bdf5141b5e09711784fb73498e6 on top of this PR.
Aschni
August 13, 2025, 1:51pm
3
Thanks for your answer!
However, I think these methods are too complicated.
I believe that the option of mixing the signal from the rudder to the motors will be simpler.
It seems that PX4 does support differenial thrust in fixedwing aircraft. But QGC does not have GUI ROTOR configuration. Edit CA_ROTOR0_PX and other rotors’ position. Thrust output will be different when moving the rudder stick.
system
Closed
September 17, 2025, 8:10pm
5
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.