Super Rover - Engineering Seminar


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 Super Rover has a six-wheel drive system each having its own independent suspension providing 2.5 inches of travel. The suspension system is ideal for navigation in the chaotic outdoor environment. The chassis provides ample space and carrying capacity to incorporate microcontrollers, sensors, cameras and other electronics.
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.
The standard configuration Arduino allows the use of hardware plug-ins called shields which extends the capability of the Arduino. They include shields designed for displays, measurement, motor and servo control as well as generic shields for prototyping.
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.
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.
For visual signaling the rover can communicate its current state by lighting various combinations of LEDs to create different colors. As an example, the rover turns on the green LED when moving forward, blue when in reverse, and red to indicate an error. Also used in visual communication is a bright red flag that is attached to the HM-55 servo. It is primarily used to indicate the current speed and direction of the rover by its position.
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.
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