For the communication, we used one arduino to receive the information from two joysticks and transmit that data via xbee radio. We strapped a receiving xbee/arduino onto each wheelchair and used this data to control the wheelchair.
We wanted to maintain as much of the original controls as possible. To do this we wired into the controller's joystick. The joysticks on these wheelchairs are understandably more advanced and accurate than a normal gaming joystick. They work off of a hall effect principle and have four sensors embedded in them. Here is the joystick's datasheet
which explains the pinout, seen in the image above.
We cut the 8 stranded ribbon cable connecting the joystick to the controller on the wheelchair. On the transmitting end, we wired up the joystick following the pinout diagram so Arduino received two analog inputs (forward / backwards, left / right).
The wheelchairs will not start if it does not sense that the joystick is connected and in a neutral position. To do this, we needed to mimic the joystick signals with an Arduino. It turned out this was rather tricky to do for the position switches. We ended up wiring the control board to a voltage divider, which we controlled using relays. The relays were wired in parallel with resistors in the voltage divider so that they shorted out the resistor when closed. Using two relays wired in this configuration, we could mimic 3 different joystick positions from the center junction of the voltage divider. These corresponded to the neutral position and two extreme positions on either side of neutral. This circuit was repeated twice: one for forward, neutral, back, and another for left, neutral, right.
This worked because we only wanted the wheelchair to move in one of four directions and did not care too much about the intermediary values. The wheelchair has some built-in functionality to prevent sudden stops and starts, so this was not a problem.
Here is the receive code: