Beaglebone
The most important part of the robot hardware is its central processing unit. For our robots, we employed a relatively newer platform known as the BeagleBone [1]. BeagleBone is an ARM Linux based platform powered by AM3359 superscalar processor capable of clock speeds up to 720 Mhz. It has a number of general purpose input output (GPIO) pins for interfacing a number of modules. It also has dedicated Enhanced High Resolution Pulse Width Modulation Channels (EHRPWMs) which make it ideal for controlling multiple motors.
The basic functions of the BeagleBone that we are using are:
- UART for Wireless Linkages
- Independent PWM channels: 4 for wheels, 1 for dribbler, 1 for boost circuit.
- Pin-outs for setting Motor directions
- Input capture modules for sensing motors encoders feedback
- Sensing feedback from IR sensor
- Support for implementation of Kicker and Chipper Module
- Support for implementation of Dribbler Module
Motor Control
For our design, Maxon EC 45 Brushless DC motors were selected as wheel motor and Maxon EC 16 as dribbler motor, whereas L6235 is used to drive these motors. The L6235 IC includes all the circuitry needed to drive a three-phase BLDC motor including a three-phase DMOS Bridge, a constant off time PWM Current Controller and the decoding logic for single ended hall sensors that generates the required sequence for the power stage.
Feedback control is also implemented using US Digital E4P optical encoders attached separately with each wheel motor with a custom made back-extended shaft. These encoders provide roughly 1440 pulses per revolution. Each module takes 3 inputs for each motor; PWM, Direction and Brake. Each robot contains a total of five L6235 modules, four for the wheel motors and one for the dribbler motor.
Pulses generated by the encoders are fed to Beaglebone which helps in determining the speed of the motor. As per setpoint, PID loop is implemented by Beaglebone by providing required output PWM to L6235. Data received wirelessly contains global velocities as Vx(x-coordinate of velocity vector), Vy(y-coordinate of velocity vector) and W(angular velocity vector). These velocities are first converted into individual wheel velocities by our velocity translational matrix calculated from our robot's mechanical structure.These velocities determine the speed and direction of each motor as required by movement of robot.
Feedback control is also implemented using US Digital E4P optical encoders attached separately with each wheel motor with a custom made back-extended shaft. These encoders provide roughly 1440 pulses per revolution. Each module takes 3 inputs for each motor; PWM, Direction and Brake. Each robot contains a total of five L6235 modules, four for the wheel motors and one for the dribbler motor.
Pulses generated by the encoders are fed to Beaglebone which helps in determining the speed of the motor. As per setpoint, PID loop is implemented by Beaglebone by providing required output PWM to L6235. Data received wirelessly contains global velocities as Vx(x-coordinate of velocity vector), Vy(y-coordinate of velocity vector) and W(angular velocity vector). These velocities are first converted into individual wheel velocities by our velocity translational matrix calculated from our robot's mechanical structure.These velocities determine the speed and direction of each motor as required by movement of robot.
Wireless Communication
For wireless communication between the robots and the AI server, Zigbee (802.15.4) based XBee Series 2 modules have been used due to their efficiency and ease of use. These modules are 3.3V logic devices. Since BeagleBone is also a 3.3V device so interfacing both the modules becomes very easy. The modules are configured in API(Application Programming Interface) mode in a point-to-multipoint topology in order to transmit and receive an entire frame of data. This frame consists of fields containing the information regarding motion control, kicking system, dribbling system.
Currently we are employing one way transmission from the AI server to the robot, but we also plan to send the status of robot battery and control parameters from robot to AI server for features such as online debugging in future.
Currently we are employing one way transmission from the AI server to the robot, but we also plan to send the status of robot battery and control parameters from robot to AI server for features such as online debugging in future.