SparkFun Forums 

Where electronics enthusiasts find answers.

Have a good idea for a new product for SFE or Olimex? Let us know!
By pquimby
#140995
Every single RC-based autonomy project has had the same fundamental safety problem. Since prototypes (and sometimes full production systems) can suddenly stop working properly, how do you design a safe RC system with autonomy? Most systems use a heartbeat signal from an RC system, so that if the RC signal goes away, the vehicle falls out of the sky. Additionally, most systems have a switch that controls whether the RC radio signals are fed into the vehicle or the autonomy signals are fed into the vehicle. Since this challenge is the same for nearly every UAV, ground robot, etc, I figure it deserves to be standardized so that people are more inclined to have a safe and effective backup system in their amateur projects.

The basic challenge goes like this:
  • Every vehicle takes 3-6 RC signals to fly it. (Throttle, Elevators, Rudder, Ailerons, Pitch, etc. depending on fixed or rotary wing flight of various sorts.)
  • These signals usually come from a standard RC radio. (Which puts out a GROUND, HIGH, SIGNAL header for each signal that you then connect to gyros, servos, ESC's, and other fancy things.)
  • An autonomy project usually generates a separate set of signals from an onboard computer.
  • The operator wants to be able to use an extra channel on their RC radio (like a flaps switch) to multiplex the inputs to the RC vehicle between the radio signals and the autonomy signals.
  • The microprocessor that analyzes the extra RC channel to decide which set of signals to send to the vehicle should NEVER be the same microprocessor as is used in the autonomy system.
A solution looks like this and uses two sets of muxes and a microprocessor:
  • An 8-line 2-input mux (or realistically two 4-line 2-input muxes) can take these radio signals and autonomy signals and select between them.
  • The selector line should be determined by reading the autonomy channel from the RC radio. If the value is HIGH, then the mux should select the autonomy signals.
  • A second mux (or another two muxes) should be used to select between either a set of failsafe signals generated by the microprocessor, or the previously determined signals from the radio/autonomy. The failsafe signals should all be 0's. This second mux is controlled by a line from the microprocessor which is analyzing the RC signals. If the microprocessor cannot count a valid number of pulses in the RC signals, then it should pass the failsafe signals through the system. This ensures that the vehicle will drop out of the sky in the event of a loss of radio contact.

UPDATE: I have since found a partial solution to this project. Multiplexing a set of 4 2-input RC inputs with a 5th channel as the selector has been done via this board: http://www.pololu.com/catalog/product/721 for $20.

UPDATE: I have since found a partial solution to this project. The validation of the signal can be done with this board, but it outputs a single digital line rather than the PWM signal needed to multiplex with the previous board. http://www.pololu.com/catalog/product/752

One could design my ideal system by feeding the throttle line into the validation board, which would be fed into a microprocessor. The microprocessor would be looping on the validation input, and outputting a PWM control signal to a 2-layer set of the mux board mentioned above. The first layer would multiplex the autonomy and radio signals, using the 5th channel, into the "control" signals. The "control" signal is then multiplexed with a set of 0 PWM signals generated by the microprocessor, using the microprocessor generated PWM control signal.