Friday, October 19, 2012

Overview: Command and Control

Oh boy, has this gone through some changes since my first post!

Initially, I had planned to implement a control system using packetized data transmitted via amateur radio frequencies.  While it is possible to pull off such an arrangement, I have come to realize that it isn't entirely practical for a rover of this type and size.

Point-to-point data transmission on the ham frequencies is usually accomplished through the AX.25 "packet radio" protocol, with a data rate of 1200 or 9600 bps, on frequencies of 144 MHz and up.  These transmission speeds, combined with the size, weight, and power requirements of the radios involved make this a less-than-ideal solution for this project.

Once I decided against the packet radio solution, I spent a bit of time working out a system that used a couple of Arduino microcontroller boards connected via XBee wireless modules.  I did in fact manage to get a basic control system cobbled together, but it was far from ideal.  It was relatively slow, had fairly high processor requirements, took a lot of tweaking to get the timing right between the transmitter and receiver, and didn't cope well if you weren't constantly checking and reading the Arduino's serial receive buffer.  It also had an unfortunate tendency to develop transient glitches after it had been running for a while.  It didn't really take too long to figure out that this wasn't going to work.  The XBee modules also apparently have some provision for directly transmitting analog values, but I didn't examine that option too closely because...

I finally got smart, stopped re-inventing the wheel, and took a look at what other rover and drone builders were doing to handle the control functions.

To make a long story shorter, I ended up settling on using a 5-channel radio designed for aircraft use, transmitting on the 2.4 GHz band.  Older analog R/C radio sets were very specific about which frequency sets were to be used for which type of models (ground or air operation); modern 2.4 GHz digital radios are far more adaptable and less prone to interference, so it no longer matters what you use a given radio for.  As with the mobility base, the off-the-shelf solution is proving to be a far more viable solution, which is easier to use and has better performance overall.  Just the robustness of the link and ease of implementation make it a winner.

I will still be using amateur radio on the rover - the onboard video downlink will use the 440 MHz ATV frequencies, and I will probably be sending some telemetry back wrapped up in AX.25 packets as well.  The XBee modules will also find a use, providing a reliable data channel for control signals that won't be sent via the R/C transmitter.  This will still see a good bit of use, since the goal of the roverbot is for it to primarily be an autonomous rover, with manual drive being just one relatively minor mode of operation.

In the next post, I'll talk a little bit about the onboard logic, the way it's configured now, and where it might be going as things get more complex.

No comments:

Post a Comment