THE MINDS-I SUPER ROVER CHASSIS
The chassis for my robot was constructed from the new MINDS-i
Two-in-One Super Rover Kit. This kit provides everything needed to build either
a 4×4 Super Crawler or, in my case, the alternate 6×6 Rover. Using their
patented system of interchangeable quick-lock construction elements I was able
to build this rover in a single day. Although I was building a predefined
design the kit enables users to create, modify and re-create robots of their
own design.
The build instructions are presented in large pictorial book.
There is no text, you just follow the pictures. The quick-lock system takes
about five minutes to learn. The kit includes a special screwdriver-like tool
for the easy insertion and removal of these quick-locks. There are several
different size locks to select from depending on the number of beams that you
wish to connect. Besides size, the locks also fall into one of two family
types. There are locks for fixed joints and there are locks for pivoting
joints.
The wheels are powered through differentials, one for each of
the three sets of wheels. The differential is a device that employs a set of
gears that transmit torque and rotation through three shafts. Each of the
differentials receives input rotation on the centerline shaft from the motor.
This input rotation is then transmitted to the wheels via two output shafts.
When cornering, the inner wheel needs to travel a shorter distance than the
outer wheel so the differential also allows the wheels to rotate at different
speeds.
In addition to the sophisticated differential/suspension system,
the rover sports a four-wheel steering system. Both the front and rear sets of
wheels are steered by a servo. This allows the front and rear wheels to be
turned independent of each other. The front and rear servos are connected to
the microcontroller (more on this later) through a Servo Reverser. When a turn
command is sent from the microcontroller the Reverser will flip the signal for
the rear wheels and turn them opposite of the front. This reversing action
allows for a tight turning radius. Plus it just looks cool.
For the microcontroller I choose to use the incredibly popular
Arduino platform. For those not familiar with this new addition to the world of
microcontrollers, the Arduino is an open-source microcontroller and is based on
an easy-to-use hardware circuit board and software development environment. Its
intended for use by artists, designers, hobbyists, and anyone who is interested
in creating interactive objects or environments. Equipped with 13 digital I/O
pins and 5 analog input pins the Arduino can sense the environment by receiving
input from a variety of sensors and in turn can affect its surroundings by
controlling lights, motors, and other actuators.
For software the Arduino is programmed in a simple programming
language called Wiring (and its derivative called Processing). Anyone who is
familiar with C, C++, C# or Java will recognize the lineage of this language.
It is an object-orientated (OO) language and supports crucial OO features such
as inheritance and polymorphism. But in keeping with its non-techie (and
sometimes overly artsy) philosophy a software program written for the Arduino
is referred to as a sketch.
For this rover I placed the Arduino in a 6 x 8in. project box
enclosure and attached it to the front end using some extra quicklocks and
beams. To simplify interfacing to the Arduino I used an SBGVS I/O Shield from
Solarbotics. This I/O shield allows you to connect up to 18 peripherals to the
Arduino using the popular Ground/Voltage/Signal interface and is perfect for
connecting servo like devices. This shield comes as a kit but only takes about
15 minutes to build.
The Arduino, electronics and the steering servos are all powered
by a dedicated 7.2 volt 2800 mAh battery.
To receive commands and eventually send telemetry data my rover
uses an XBee Pro RF module. The XBee modules provide two modes of
communication. The first is a simple serial method of transmit/receive and the
second is an advanced framed mode. XBees can be configured through a PC utility
or directly from the microcontroller. These modules can communicate point to
point, from one point to a PC, or in a mesh network.
As you may know all my prior robots use the XBee in the simple
serial mode with my own communications protocol. All transmitted and received
packets start with a three character header and end with an ASCII Return
character. The first character of the header is always an > indicating a
send operation and the second character is the Network ID such as R for robot.
The third is the destination device (robot) ID. The special character # is used
to specify a broadcast to all devices. Data following the three character
header is device dependent.
SENSORS
Forward and rear object detection is performed by two Parallax
Ping ultrasonic sensors. One Ping is mounted on the project box just in front
of the video camera. The other is rear facing and mounted on a small project
box attached to the back of the rover just above the rear wheels. This project
box is part of the mounting system that holds the Navigation Dome. The Pings
connect to the Arduino via the I/O shield.
The Navigation Dome sits high above the rover mounted on a 19in.
piece of ¾in. PVC pipe. The dome itself is a 6in. plastic bowl from IKEA. It
is mounted with the bowls lid facing down and attached to the top of the PVC
pipe. The bowl is somewhat transparent with a frosted interior and is water
tight. The lid also serves as the platform for the mounting of various
electronics.
This dome has two purposes. One is to provide navigation data to
the main Arduino controller and the other is for visual signaling. Inside the
dome is a Prototino (Arduino compatible) microcontroller from SpikenzieLabs. It
is connected to an extra bright RGB LED array, a HMC6352 Compass Module, and a
Hitec HM-55 servo. The Prototino receives commands and sends back responses to
the main Arduino controller via a three wire serial cable and a very simple
communication protocol.
The main reason for the navigation dome is to collect and relay
position information back to the main Arduino controller. In the future I may
want to use this platform to compete in RoboMagellan competitions. The dome
currently contains an electronic compass to determine the direction of the
rover and will eventually be equipped with a GPS module for more advanced
navigation such as those needed to succeed in a RoboMagellan competition.
At this point my Super Rover is configured for telepresence
operation. While sitting in the comfort of my home I can drive the robot
through my back and side yards and around the house. Using my Remote Robot
Control Console (Robot Issue 27) I can drive the robot while watching the live
video feed on the monitor.
For protection the rover is equipped with two Parallax Ping
sensors. These Pings are used to override any remote commands in the unlikely
event of an obstacle. In other words, avoid a crash! While driving forward the
robot uses the forward Ping to detect obstacles that are directly ahead in its
path. If the Ping returns a distance less than 24 inches, an obstacle is
assumed and the robot is stopped. The same is true when the robot is in
reverse. The rear Ping will detect obstacles and stop the robot if an obstacle
is within two feet.
The robot has four preset speeds programmed into the Arduino
software. The lowest is a Crawl speed which is ideal for driving the rover
indoors. Slow and Fast speeds are used for normal outdoor driving. Finally
there is a Ludicrous speed for when you really want to impress your neighbors.
Since the video camera has a limited field of view the software
will pivot it into the direction of the current turn using the pan servo. This
greatly enhances drivability especially at the higher speeds.
FUTURE WORK
As mentioned I intend to add a GPS module as well as additional obstacle
avoidance sensors. This rover has proven to be an amazingly versatile and
robust platform and I look forward to expanding it.
No comments:
Post a Comment
leave your opinion