Intel Linux Security Robot

SCI School of Computing & Informatics

Under the Direction of Dr. Yinong Chen, Arizona State University

Sponsored by Intel Corp.

Design

Primary System

Software Design

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

 

Components

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)

.