ArduPilot / ardupilot

ArduPlane, ArduCopter, ArduRover, ArduSub source
http://ardupilot.org/
GNU General Public License v3.0
10.95k stars 17.47k forks source link

Allow servos to have mixed output types #10465

Open magicrub opened 5 years ago

magicrub commented 5 years ago

MOT_PWM_TYPE controls PWM signal type to different motors. This includes DShot, "RC PWM", and brushless PWM (duty cycle). We don't have a way to map, for example, brushless PWM signal to an aileron or ICE starter or Gripper. We need to de-couple PWM type to servo function. Problems we need to watch out for is you can damage a traditional servo if you send brushed/duty PWM when it expects normal/RC PWM pulses. This is especially bad because even if we configured it correctly, the configuration is hardware dependant so one configuration may work on one autopilot HW, but will kill servos if same settings are used on another HW.

For example, here's the map for a Cube. There's 3 PWM groups which are tied to timer mappings. Right now there is no source code to be timer-aware, that is abstracted out in the HAL for a just-works solution but with limited visibility. That needs to be exposed to detect improper configuration.

IamPete1 commented 5 years ago

Also consider that for rovers you might want to use brushed with relay function to allow reversing, then you need to associate two pins to each function.

magicrub commented 5 years ago

This will be a better solution for https://github.com/ArduPilot/ardupilot/issues/8632