Depending on what it is, you could also consider TV remote style infrared LEDs and receivers (with automatic filtering for 38KHz, or similar, modulated signals) if your application is, in practice, always within line-of-sight.
As for the errors you talk of, how about putting some checksums on the messages to be sent, so any corrupted ones will be ignored, and then transmitting the messages multiple times. This way you get a good chance of one of them getting through uncorrupted,and any which are corrupted aren't acted upon. Also look up about hamming distances, there are ways to send self-correcting messages in far less bytes than you'd expect, so even if all your messages were corrupted by 1 bit, the receievr might be ableto recover the meaning. This checksumming and/or error correction can apply to messages sent over RF, IR, sound, visible light or even along wires.
You will need a microcontroller (arduino device or equivalent) on both the sending (reads joystick, transmits RF data) and receiving (reads in arriving RF data, operates motor accordingly) ends, each running a different program you'll write.