Layer 0 - obstacle avoidance of SUBSUMPTION Architecture

PROJECT : It was required to build a system on chip using the following components
1.An open core from www.opencores.org
2.A custom block implementing a functionality
3.A memory which is generated by a memory generator built by professor Garrett Rose.

I read through different topics but my interest in robotics kicked in when I read a paper on subsumption architecture described in the paper “A Robust Control System for Mobile Robots” by the famous H.A. Brooks from the AI lab at MIT.

INTRODUCTION
Subsumption architecture is a layered architecture for building control systems for robots. The
 control system is composed of number of individual layers. Each layer performs a function independent
 of the other layers. For example consider a robot composed of the following layers

Layer 0: Obstacle avoidance
Layer 1: Wandering
Layer 2: moving towards an object of interest

Layer 0 is the lower most layer, There is a processor just for this layer that receives input from the sensors and avoids any obstacles. It performs only this job
Layer 1 is wandering where it moves in any direction, It communicates with the layer 0 in specifying
the direction. Layer 0 performs obstacle avoidance
Layer 2 is made of cameras etc that provide information on the object of interest. It detects the location
of the object of interest and generates a direction and commincates it to the wandering layer.

It seemed like a pretty good idea to implement a single layer on system on chip because of time considerations. Layer0 is obviously the layer to be implemented because
1.All other layers are built on top of this layer.
2.It requires a micro-controller which can be obtained from opencores.org.
3.It requires a data/instruction memory.
4.It requires a custom block for controlling the motor. 
5.Time is only a month.

Technology
Technical library: TSMC018.
Tools: Modelsim for function simulation;
           RTL compiler for synthesis;
           SOC encounter for automated design layout;
           Spectre for custom design simulation and power and timing analysis;
           Virtuoso for custom layout.

Components used
1. Open 8 uC
2. Custom memory (32Kbytes max) with following signals
1.Rd_en
2.Wr_en
3.Address lines
4.Data line (8 bits)
3. Custom Motor Controller block

REQUIREMENTS
1. Sensors to interrupt the uC when an obstacle is detected.
2. A uC to interact with the upper layers and control operation of layer 0.
3. A motor controller to interface with the motor.
4. An instruction and Data memory.

SPECIFICATION
1. Stepper motor.
2. Open 8 uC.
3. 32kBytes of memory can be interfaced (max).
4. Decoder to select between memory and motor controller.
5. Bus based architecture.
6. Sonar Sensors.

SYSTEM ARCHITECTURE

Reference : “A Robust Control System for Mobile Robots” by the famous H.A. Brooks
Actual interface with the sensors and motors is not done. The design is simulated, synthesized not actually implemented in hardware.

Comments

Popular posts from this blog

Generating 16k ROM using Xilinx IP COREGEN and simulating it in modelsim

Setting up atalanta ATPG to work on Linux

Sparse matrix - 3 tuple representation