Intel Linux Security Robot

SCI School of Computing & Informatics

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

Sponsored by Intel Corp.

Implementation

The software implementation order was began with an easy to use robot to terminal communication system, followed by the development of concurrent design drivers for the sensors and robot actuators, GUI components,  designing a manual control method for the robot and finally, an intelligent AI that would include features such as autonomous patrolling and mapping.

Originally, the team was provided with a primitive driver software that was used as a starting point. However, after several iterations of code development, both the driver software and the original modular AI was phased out with a more abstracted approach,

During the first semester, the modular AI comprised of several modules running concurrently that would usurp control of the robot on interrupt. However, it was difficult to write high level logic at such an abstract level, so this semester, the logic was re-abstracted in tiers relating its low level functionality rather than abstracting its high level module based functionality. 

Notable development milestones include the modular GUI design in late March, the higher level abstraction of the motor hardware, the object oriented approach of the hardware drivers achieved in early April, and the completion of a better, more responsive autonomous robot intelligence and mapping capability developed in late November. 

The most challenging software problems we encountered were those concerning network and inter-method communication via the marshalling, parsing, and encoding of information in byte arrays. Serialization techniques were used to overcome this issue; objects that extend the message class are sent and received to relay information. To facilitate this multithreaded message handling, a universal method capable of accepting any object that extended the message class and eliminate all thread blocking problems was written. On the receiving end of the networking code, one byte of information from the parent class Message, encased in a case statement and processed in another method.

Reusability Assessment

In terms of software development, object oriented methods were presented and implemented in two locations. Namely, the networking code and the I2C driver code depended on a method of serializing objects to send information and deserializing objects to receive information. As a result, any object that would extend the developed Message class could be serialized and then be sent over the network, and then easily processed with a switch statement. The total amount of code to write to send a new type of message would be the constructor and member variables of a new class, and an extra line to a switch statement passing the message to a new method. The I2C software made writing drivers for additionally I2C devices easy by having all the necessary boilerplate software in a parent class, and all the important functionality of a particular device in the child class.

ScheduleGantt Chart

 

 

 

 

 

Gantt Chart

Review

Date Completed/Scheduled

Requirements Document

10/11/08

Detailed Design and Implementation Plan

10/11/08

Business Plan

12/10/08

Test Plan and Test Results

12/9/08

Users Guide and other User Documentation

12/9/08

Documentation Milestones

 

Documentation

A comprehensive JAVADOC coding standard was maintained as documentation of the robot and client API.