Robot IO Controllers

The IO controllers are the real workhorses of the robotics framework, where the bulk of the functionality exists. You can add as many different IO controllers as you need to a given simulation. Each IO controller is built to interface with a particular type of hardware control system. A few different general IO controllers are available for use already. However, if you need to interface with some hardware that does not currently have an IO controller already available for it then you will need to use the SDK to create a new interface for it. 

Each IO controller has a separate thread for doing IO processing. It then transmits information back and forth between the main simulation loop and that IO communications thread that interfaces with the real hardware. Each IO controller can contain robot part interfaces that do the actual work of talking to each individual part of the real robot. For example, you may have an Arduino controller that has a digital input part interface. Each IO controller will have properties that specify how you open communications to that controller, and any settings needed for that particular system. Below is a list of the currently available IO controllers. Please see their descriptions for details on how to use them.

  • Dynamixel USB: This uses the Dynamixel USB interface to allow you to control Dynamixel servo motors directly from the simulated motors.
  • Firmata: This communicates with an Arduino microcontroller board to allow you to control motors and read sensors. It also works with the Arbotix board to allow you to control Dynamixel motors.
  • XBeeCommander: This reads in serial data from the XBee Commander remote control to allow you to use stimulate neurons directly so you can control you simulations and real robots.