PX4 / PX4-Autopilot

PX4 Autopilot Software
https://px4.io
BSD 3-Clause "New" or "Revised" License
8.17k stars 13.36k forks source link

Main (ESC) lower PWM Limits change with transition to FW #18312

Open taileron opened 2 years ago

taileron commented 2 years ago

Describe the bug Vtol Tiltrotor e.g. Convergence Airframe lowest pwm change to disarmed in FW Mode differential thrust is no longer applicable in this way

To Reproduce Steps to reproduce the behavior: start with proper lower limits transition to FW proper lower limit is gone

proper lower limit should be 1118us (min pwm) changes to 1000uS (disarmed pwm) Presumably this happens when the limit shift from Mot OFF ID=3 starts for motor 3 that need to be off in FW, since in PixRacer #15155 where this shutdown does not work the correct limits are fully preserved.

Expected behavior same lower limits for MC and FW

Log Files and Screenshots MC device: /dev/pwm_output0 channel 1: 1000 us (alternative rate: 400 Hz failsafe: 0, disarmed: 1000 us, min: 1118 us, max: 1943 us, trim: 0.00) channel 2: 1000 us (alternative rate: 400 Hz failsafe: 0, disarmed: 1000 us, min: 1118 us, max: 1943 us, trim: 0.00) channel 3: 1000 us (alternative rate: 400 Hz failsafe: 0, disarmed: 1000 us, min: 1118 us, max: 1943 us, trim: 0.00) channel 4: 2000 us (alternative rate: 400 Hz failsafe: 2000, disarmed: 2000 us, min: 976 us, max: 2011 us, trim: 0.00) channel 5: 1983 us (default rate: 50 Hz failsafe: 1985, disarmed: 1985 us, min: 650 us, max: 2450 us, trim: 0.00) channel 6: 1028 us (default rate: 50 Hz failsafe: 1030, disarmed: 1030 us, min: 650 us, max: 2450 us, trim: 0.00) channel 7: 1500 us (default rate: 50 Hz failsafe: 1500, disarmed: 1500 us, min: 800 us, max: 2200 us, trim: 0.00) channel 8: 1500 us (default rate: 50 Hz failsafe: 1500, disarmed: 1500 us, min: 800 us, max: 2200 us, trim: 0.00) FW device: /dev/pwm_output0 channel 1: 1000 us (alternative rate: 400 Hz failsafe: 0, disarmed: 1000 us, min: 1000 us, max: 1943 us, trim: 0.00) channel 2: 1000 us (alternative rate: 400 Hz failsafe: 0, disarmed: 1000 us, min: 1000 us, max: 1943 us, trim: 0.00) channel 3: 1000 us (alternative rate: 400 Hz failsafe: 0, disarmed: 1000 us, min: 1000 us, max: 1000 us, trim: 0.00) channel 4: 2000 us (alternative rate: 400 Hz failsafe: 2000, disarmed: 2000 us, min: 976 us, max: 2011 us, trim: 0.00) channel 5: 1217 us (default rate: 50 Hz failsafe: 1985, disarmed: 1985 us, min: 650 us, max: 2450 us, trim: 0.00) channel 6: 1983 us (default rate: 50 Hz failsafe: 1030, disarmed: 1030 us, min: 650 us, max: 2450 us, trim: 0.00) channel 7: 1575 us (default rate: 50 Hz failsafe: 1500, disarmed: 1500 us, min: 800 us, max: 2200 us, trim: 0.00) channel 8: 1121 us (default rate: 50 Hz failsafe: 1500, disarmed: 1500 us, min: 800 us, max: 2200 us, trim: 0.00)

taileron commented 2 years ago

vtol_type.cpp line 333 why is PWM_DEFAULT_MIN used there instead of the correct individual lower limit?

VT_MOT_ID = 0 would also set the correct lower limits in fw I just don't know if there will be other side effects.