Primary System

Software/Hardware Component Relationships
The
software design is an implementation of the Java client-server
model. The server side terminal machine relays commands and data to
the client robot machine. The primary software components comprised
of RobotLogic, Bot, AI, and MovementLogic classes.
RobotLogic is the entry point for the logic of the robot. It starts
all the primary threads and connects the robot to the GUI console.
Bot is the main entry point for the GUI application that begins the
networking thread.
The
RobotLogic class connects to a TCP welcome socket and creates a
thread to handle communication, while the Bot class is the server
GUI that allows the end user to see the values returned by the robot
and monitor what the robot is doing. Once the connection is
established, the end user interfaces with the base server computer
to designate a mode, which essentially sets the thread to a specific
function.
For a detailed description of the software components, please see the JAVADOC documentation. The Arduino board code expects a TTY request and returns a response for the corresponding sensor. It takes the incoming byte, passes it to a case statement, and either reads the analog data returned from the sonar sensor, or completes an I2C transaction with the compass. From there, data is returned to the TTY device.
The root class for all AI function, AI.java, runs on the client/robot and controls Null Spark’s mode of operation. A thread is set for each mode, but locks are set so that only one mode can be operational at any time. For communication and synchronization, a message indicating the mode is sent back to the base server machine so that the data can be correctly analyzed. Modes of operation will include manual roam, autonomous roam, autonomous stealth with mapping, password protection mode, and fire detection mode.
The AI WallFollower algorithm is a basic wall-following algorithm set to follow the first wall it sees. The map is kept in a BufferedImage BRG Bitmap format and updated via the server. Every couple seconds, the AI WallFollower process check each of the three sonar distances to check for corner cases. If these are not immediately satisfied, the algorithm takes snapshots and pixelcounts of the frontal left section, the frontal right section, and the exact front of the robot to determine which direction the robot should turn.
Primary
software design focused on the autonomous wall following and mapping
algorithms. The AI class
invokes the MovementLogic class to track the robot's location on a
map and determine the movement, and turn angle the robot should use
to travel. Threshold and boundary values were set to prevent it from
coming too close to detected obstacles or walls. MovementLogic.java
will spawn an Arduino thread, a ServerUpdate thread, an XYupdate
thread, and an AngleUpdate thread. Each of these threads will run
continuously set on locks. The Arduino thread contains calls to the
sonar and compass get commands to determine distances from obstacles
and angles. XYupdate and AngleUpdate will be running continuously to
update the position on the map and the angle from which the distance
to the next point is calculated. From these values, the
wall-following algorithm will check for special cases, specify a
course of action and call the ServerUpdate class to update the
position base server machine GUI.
Arduino
interface code accommodates the new hardware implementation of a
compass sensor, 3 sonar sensors, and 1 photovoltaic sensor. Rather
than relying on values returned by the IR range finder, Null Spark
will base its decisions on the three sonar readings.
Hardware
The robot chassis was designed in 3D Studio Max and assembled from a heat molded clear poly-acrylic material. A three-layer octagonal shape with a square-shaped wheel layout was used, allowing the robot to turn exactly 90 degrees when desired. Holes were drilled to allow for hardware ventilation and redesign.

Null Spark Robot Body
Primary
System Components
Chassis
(Agrideck: Custom)
Motor
Set
(MOTOR-SET-RD01)
Omni-Directional Metal Caster
(ROB-00320)
Motherboard
(Intel D945GCLF2 i945GC Mini-ITX motherboard w/ Atom 330)
RAM (1GB
DDR400)
Wireless
Card (TN651-G)
Hard
Drive (ST380815AS
80G SATA HARD DRIVE)
Power
Supply (M2-ATX,
160w, 6v-24v wide input Intelligent DC-DC PC Power Supply)
12 Volt
Battery
3 Sonar
Sensors
I2C (Devantech
USB-I2C)
Arduino
Board (DEV-00666)
Motor
Driver (MD23
- Dual 12Volt 3Amp H Bridge Motor Drive)
Secondary System Components
Webcam
Themopile Array (TPA81)
.