UAVCAN Disables servo PWM output

Dear all,

When I enable the UAVCAN for VTOL ESCs, the PX4 stops outputting PWM to servos. I verified this with an oscilloscope. However, it can still output PWM temporarily, if motor test commands from the Qgroundcontrol is sent.

When the UAVCAN_ENABLE = 3, SERVO_OUTPUT_RAW message at the MAVLink inspector is like below. Obviously it is sending all surface values from the UAVCAN. However I need surface 1, 2, 3, 4 as PWM while 5,6,7,8 are UAVCAN.

May someone guide me on this issue about which part of the source code I need to do such modification?

  • In Fixed Wing Mode

  • In Multirotor Mode

  • When UAVCAN_ENABLE = 0 (The values are PWM microseconds)

Surface mapping is:

  • Servo_1: Aileron
  • Servo_2: Left Ruddervator
  • Servo_3: Forward propulsion ESC
  • Servo_4: Right Ruddervator
  • Servo_5: Front Right VTOL ESC
  • Servo_6: Rear Left VTOL ESC
  • Servo_7: Front Left VTOL ESC
  • Servo_8: Rear Right VTOL ESC

Yes this is how it works. We also fought it. In the end, I solved it by having ESC controlled via RCPWM output and telemetry data via UAVCAN.

You can find more posts discussing this issue.

It would be ideal to have a separate mixer for UAVCAN and a separate mixer for PWM.