Skip to content
Cory Walker edited this page Oct 4, 2015 · 5 revisions

This page will ideally serve as a starting point for new members to learn about the robot.

Hardware

As always, we tend to borrow the same basic hardware design from previous years, but modify many elements to fit the current year's challenge. This year, we decided to heavily utilize VEX parts to get us making progress as fast as possible.

Wheel base

Our wheel base currently uses VEX mecanum wheels with VEX motors.

Loader

Our loader, which is currently in development, will allow us to grab a whole section of blocks at once and take them to their destination.

Arm

We are using a Lynxmotion AL5B fitted with a vacuum cup to place blocks from the loader's hopper to the location in which they will count for points.

Electronics

The robot is currently powered by a 7.2V NIMH battery fed through an adjustable switching power supply set to 5V. The battery voltage can be checked through a button on this power supply. Any voltage less than 7.2V might indicate a need for a battery charge/replacement. Many high power devices are directly connected to the battery, while the logic devices are generally on the 5V rail. The main logic device is the Beaglebone Black. It serves as the main processor for the robot and is accessible through WiFi. The BBB connects through USB to many secondary devices and processors, which will be outlined below:

Teensy++ 2.0

The Teensy++ 2.0 currently controls the wheel motors only. It sends PWM and direction signals to the onboard Rover 5 motor controller.

*If the encoder wires get disconnected then the teensy will block and won't respond to serial.

*Teensy not appearing on startup procedure: Unplug teensy (while BBB running). Unplug and replug encoder power wires. Replug teensy.

Arduino Mega

The Arduino Mega is outfitted with a shield that breaks out every pin into a 3-pin header with power, ground, and signal. This means that we can easily connect a multitude of servos and sensors without any PCB work. This micro has been used for running the robotic arm that will be mounted soon.

Optical sensors

Currently one optical sensor is attached to the robot, allowing for tracking of small movements (without rotation) similar to how computer mice work.

Software

Currently the software is organized into a few main sections. Analogizing to a human, we can simplify these sections by naming them after parts of the body.

Head

The head is the software that will run on the BBB, effectively the brain of the robot. It can take care of all the high level operations of the robot, as it is the easiest to change and work with. Currently this part is written in Python, which has its pros and cons, but tends to work well in robotics. It is nice to be able to open up a Python shell and run the same commands that are used in the main program for testing and debugging. Python also offers a great logging module that helps us analyze problems that occurred in previous runs.

Spine

The spine section of the software is essentially the software that runs on the microcontrollers such as the Teensy and the Arduino. These micros implement a simple serial interface that accept ASCII-based commands with arguments. Examples of such commands are:

  • Return the state of a certain limit switch.
  • Set a certain motor's power to 128 out of 256.
  • Set a servo's position to 58.

Just like an actual spine, these commands simply relay information to and from various parts external to the main processor. They should not really do any processing besides parsing the command, and they probably should not take any time to execute or include any delays.

Because these micros implement a similar and standard command response protocol, the same code can be used for each one and they can also be easily debugged with a command like the following:

picocom /dev/mega -b 115200 --echo