Parts List:
- Support Material
- Linear Actuator
- Made with rack and pinion
- DC Motors and Encoders (for measuring position)
- EasyVR
- 1 Mbed
- H bridges
- A claw or claw-like end effector
- Distance Sensor
Speech:
Voice recognition was accomplished using the
Veear EasyVR
module.
The EasyVR is a multi-purpose speech recognition module and was chosen
among other speech recognition software because of its effective speech
recognition, its user-friendly GUI, and mbed support. The EasyVR
contains flash memory in which the trained speech words are stored
along with their corresponding return character when recognized
succesfully. EasyVR commander is a program available for free on the
Veear website and is used to train and store recognizeable words on the
easyVR flash memory.
Processing (mbed):
The
mbed uses the EasyVR as an input, once speech is recognized it recieves
a unique character from the EasyVR module based on the wordset
stored in flash memory. The mbed can then use this character to trigger
events programmed in the mbed code, such as turning on an LED. The mbed
after the recognization of four "coordinate" characters then outputs a
string of these character to the pc. An
overview of mbed and EasyVR implementation can be found on the
resources page.
The mbed code used
for the implementation of the EasyVR can be downloaded here.
Game Tracking
& Coordinates:
An open source
chess program, chess at nite, was used to
dictate the game, recognizing illegal moves, maintaining a users turn,
and keeping track of the status of the board. Coordinates are given
based on a regulary numbered chess board, using a letter and number for
the source as well as the destination. The claws location at the
beginning of the game starts at absolute zero. Then as the game
progresses ticks, or slight rotations of the motor encoder, are
calculated based on a set number of ticks for each chess square moved.
This allows a dynamic calculation of distance based on the claws
current position on the board.
Motor Commands (mbed):
The X and Y axis motors have
encoder
attachments (I2C devices). They are polled in an interrupt routine for
position. Motor input is speed controlled by PI. This needs adjustment
as occasionally we will see the motor overshoot multiple times. Once
the motor is in an acceptable range, it goes into an "adjusting mode",
which is movement at a much lower speed to move closer to desired
position. The Z axis is determined by a distance sensor and once all
axis are positioned, a piece may be removed or placed by releasing or
closing the claw.
The mbed code used for the
implementation of the motors can be downloaded here.