Return to Robotics Tutorials
Build your own Robot Remote Control
Unless a robot is tethered, most robots need some form of remote control. There are many easy options available to control a robot remotely. This article compares a few ways robots can be controlled.
Comparison of Robot Remote Controllers
When building a robot controller, there are countless options available. Here are a few that I have explored:
- Infra-Red (IR) - The cheapest option
overall is to implement an IR transmitter / receiver LED
pair. These IR modules typically incorporate a modulation
scheme that helps block out ambient IR light (eg. overhead
fluorescent lights, sunlight). From eBay, you can find these
transmitter / receiver pairs for approximately $3. A
convenient membrane control pad (transmitter) is usually
included. Most beginner robotic kits include an IR sensor.
- The downside is the limited line-of-sight range (eg. 10-30 feet) and no proportional control.
- Wii Nunchuk - The cheapest proportional
control solution of all is the wired Wii Nunchuk controller
("Wiichuk"). For about U$4 from eBay, you get a handheld
I2C-based controller containing a proportional joystick, a
3-axis accelerometer and a couple buttons. The form factor
is well-suited for one-handed operation.
- The integrated accelerometer is great for robot arm control
- Need to add a WiiChuck adapter to interface with the proprietary connector.
- Smartphone with WiFi - Given the ease of adding WiFi support to a robot (especially for ones based on Raspberry Pi), it is tempting to create a controller that leverages your smartphone (iPhone or Android) as the control input. While it is easy to get going (assuming your robot has integrated WiFi), this approach has some significant disadvantages to consider.
- WiFi range is often very limited, need to create a WiFi network / access point.
- No tactile feedback on the control inputs. For example: drawing two joysticks on a smartphone display can work well if you are watching where your fingers are placed, but trying to navigate the controls without watching leads to incorrect positioning over the visual buttons, leading to incorrect input.
- Frequent connection issues: I frequently found it difficult to connect / reconnect the transmitter to receiver ("pair" them) without a lot of resets and luck. I have tested three different models with fresh batteries, so I tend to believe this to be a common issue.
- Large controller dead-zone: These thumbstick controllers tend to have a large dead-zone which masks any directional input until the stick is moved a moderate distance from the center-point.
- Limited thumbstick range: After moving out of the controller deadzone, there is very little range left in the thumbstick for proportional input before the maximum stick limits are reached. Therefore, it is very hard to get precise robot motor control from the dual-axis thumbsticks. To make matters worse, a differential drive robot (depending on drive algorithm) needs to have balanced left and right throttle input to drive straight. Unless a special differential drive algorithm is used, these controllers will make driving the robot straight very difficult.
Turnigy 9X Transmitter
- When compared to the PS2 Controllers, the Radio Control transmitters provide a much more usable control input range, often with little deadzone.
- Many transmitter / receiver pairs can operate in excess of a mile range. I purchased a 9-channel Turnigy TGY-9X for $49 and found it worked very well for robot control, though it can be a challenge to repurpose some of the additional channels for your own use (as they are intended for plane / heli controls). You may need to be creative in how the additional channels are mapped into your specific robot control needs.
- Most RC receivers (such as Turnigy 9X8Cv2) provide a set of PWM output signals. These outputs are convenient if you are driving a servo motor directly (as you would in a RC airplane or helicopter), but most robots will require further CPU processing before passing on the control to a motor driver circuit. In that case you will need a way of sampling the PWM signals into a form that can be read by the Raspberry Pi, Arduino or other robot processor. I explained how you can convert the RC PWM signals into a usable control value on another page.
Custom ZigBee Controller
- ZigBee is an easy-to-use communications protocol that generally offers low-power consumption and low data rate (< 250kbps) operations. Though most modules are low-range (eg. < 300'), some of the higher-power models (eg. 60mW) can work at ranges over a mile.
- With a custom controller, you can select the appropriate combination of joysticks (gimbals) and switches that suit your robot. An onboard microcontroller samples the control inputs and sends the data across the ZigBee network to the robot.
- The big advantage of this approach is that you can provide two-way communication with the robot (commonly described as telemetry data). By seeing information from the robot on the controller, the user has far greater awareness of what the robot is doing and thinking!