This gallery demonstrates the various configurations of the vision based robot control system. I integrated this system with the robot built by our team for the ATMAE national robot competition in 2011.
There are three primary communication topologies the robot control system was designed for use with:
- USB 2.0
- 802.11 Wireless
- 802.15 Wireless
Details on each topology are discussed below.
This topology implements a direct connection using a USB 2.0 Full Speed between the 18F control board and a computer. Both the control board and computer run a complementary set of Custom-Class USB drivers that were created solely for this application. This configuration has the highest speed of the aforementioned topologies and the most reliability due to it being a wired connection. I have spent the majority of my time developing the Custom Class Driver’s and GUI for this interface. A brief description of the operation of this system is as follows:
- Click the icon for the Robot Control Center program. This will immediately launch the robot’s GUI and establishes a connection with the Robot Control board over USB in a background thread. At the same time this program launches Roborealm and configures it for the robot system (For example camera’s, navigation variables, routines…It’s the same process you would undergo if manually setting up the vision system). The GUI sets up another background thread for continuous extraction of vision data from Roborealm.
- Roborealm process camera data and updates various navigation variables created within its respective API.
- As data becomes available the robot control system program parses navigation variables from the Roborealm API server and post processes them into meaningful robot control commands (background thread). This thread returns the post processed results as variables stored in various data structures within the main “parent” thread of the robot control center program. This data is also used to update various portions of the robot control center GUI.
- If full autonomous control is enabled, the robot control center main thread enables the USB thread to send drive commands using vision data exclusively. The GUI is also updated showing the navigation commands that are being sent to the control board over USB.
- If manual control is enabled, the robot control center thread enables the USB thread to send drive commands relative to which assigned keys are pressed on the keyboard exclusively. The GUI is also updated showing the navigation keys being pressed.
- If debugging is enabled, the robot control center thread enables the USB thread to send drive commands relative to status of the various debugging elements integrated within the GUI.
- The USB communication thread issues a command telling the robot control board to send data reporting the status of analog/peripheral being monitored it (for example, is a switch pressed?).
- The firmware on the robot control board parses the navigation commands received over USB and use them to issue the direction and speed outputs to each channel on the motor driver board (Up to 8 motors can be controlled by this board). The speed control is the most sophisticated of these routines as it allows for complete pulse width and pulse frequency to be set dynamically from USB data.
- The firmware on the robot control board acquires the state of analog/peripheral devices interfaced with the board and sends them to computer over USB where they are also updated on the GUI/processed.
This topology implements an embedded server with a wireless internet connection using an attached wireless antenna transceiver module over SPI. When this hardware is used the internal USB hardware cannot be used due to memory/processor power of the control board’s MCU. Manual control of the board is facilitated using a web browser to access the control board as an embedded server that host a web page with various motor control system status aspects being reported in real time to it. Currently I have not integrated Roborealm with this interface.
Description In Progress….
- 18F4550 Robot Control Board with USB 2.0 & 802.11/802.15 wireless enabled
- 4-Ch Bidirectional DC Motor Driver Board
- 802.11 A/B/G Wireless Communication Daughter Board
- 802.15.4 Wireless Communication Daughter Board
Documents & Source Code