Setup
● Frame:custom 3D-printed ducted Quad X, ~1.5 kg AUW, motor-to-motor diagonal 330 mm.
● FC:Pixhawk 6C, ArduCopter 4.6.3, FRAME_CLASS=1 (Quad), FRAME_TYPE=1 (X).
● Motors:T-Motor Velox 2207 2550 KV .
● Props: HQProp 5.1×4.1×3 (5").
● ESC:HAKRC BLHeli_S 40A 4-in-1. Motors are on main outputs 1–4 (via the IOMCU) — DShot and BLHeli pass-through do not work on these outputs on this board, so ESC-side direction reversal isn’t availabl e.
● Battery: 4S.
● Control:no RC radio and no GPS — flown from a Raspberry Pi over MAVLink using RC_CHANNELS_OVERRIDE in STABILIZE (indoor autonomous project).Tests are captive / very low over foam.
What already works
● Motor position mapping verified correctwith a hand-tilt reaction test (armed, props off): pitching/rolling the frame makes the FC increase exactly the correct low-side motors on all four ax es.
● Mapping:SERVO1_FUNCTION=35 (Motor3), SERVO2=33 (Motor1), SERVO3=34 (Motor2), SERVO4=36 (Motor4)— physical outputs OUT1=front-left, OUT2=front-right, OUT3=rear-left, OUT4=rear-ri ght.
● Full 6-position accel cal (level 0/0 at rest), vibrations low (VibeXYZ < 20, no clipp ing).
● Set for 5" props:MOT_THST_EXPO=0.20,INS_GYRO_FILTER =80.
● It no longer flips on takeoff (that was an earlier motor-mapping error, now fixed).
The problem
On every takeoff the vehicle enters an uncontrolled yaw spin (~250–480 °/s); roll and pitch remain cont rollable.
Log analysis (why I think yaw is inverted)
InRATEdurin g the spin:
● Actual yaw rateYis negative and growing (e.g. −28 → −96 → −193 → −215 °/s).
● Desired yaw rateYDesis positive (the controller is trying to count er the spin).
● Controller outputYOutis positive (correcting direction) and not saturat ed (~0.4–0.7).
So the yaw controller outputs a correction in the right direction, yet the yaw rate accelerates the wrong way — the yaw response to the FC’s command is inverted (positive feedback). Roll/pitch are unaffected. This points to the motor rotation convention being mirrored relative to what ArduCopter’s Quad X expects (all four motors turning the other way — a valid 2+2 quad but oppos ite chirality) .
My question
Given that position/thrust mapping is correct (roll/pitch good), the props currently produce lift with the present rotation (so simply reversing motors would make them push down), and the motors are on IOMCU outputs with no DShot/BLHeli pass-through — what is the cleanest fix?
1. Reverse all four motors’ rotation (swap 2 of 3 wires each) and fit opposite-handed props on all four — i.e. rebuild to the correct ro tation convention?
2. Is there a parameter / frame-type approach to tell ArduCopter the rotation is mirrored (a “props-out” convention) so I don’t have to rework all f our motors + props?
3. Anything specific to the Pixhawk 6C IOMCU outputs I should know (e.g. moving motors to FMU/AUX outputs to enable DShot + software reversal)?
Dataflash log attached (log_115). Thanks!
log_115_UnknownDate.bin (1004.2 KB)