Title: The first phase
1A Model-Driven Approach for Generating Embedded
Robot Navigation Control Software
Bina Shah (Iambina at- uab.edu) Rachael
Dennison (Raeanne at- aol.com) http//www.gray-a
rea.org/Research/CREW/ Advisor Dr. Jeff Gray
(gray at- cis.uab.edu) (www.gray-area.org)
An undergraduate research project, with support
from the NSF SIPHER program (Vanderbilt) and the
CRA Research Experience for Women (CRA-CREW)
2Project Overview
- Goal
- Use of advanced modeling techniques to improve
the development of embedded systems - Synthesize robot control software from high-level
models that depict configuration of a hostile
environment containing robots, landmines, and
lost babies
3Motivating Problem and Solution Outline
- Motivating Problem
- Hard-coded control software for real-time
embedded robotics control systems requires manual
adaptation for each new configuration - Solution Approach
- Use a meta-configurable modeling tool
- Create a meta-model that represents the hostile
domain - Construct a code generator that translates model
information into robot control software - Code generator has deep knowledge of domain and
robot planning
4Background
- The Lego Mindstorms Robotics Invention System
(RIS) - The RCX
- Programmable micro-controller embedded in a Lego
brick - IR Communication
- Software sends code to RCX using the IR tower
connected to the serial or USB port - RIS kit also includes
- Lego bricks, gears, sensors, motors, wheels
5Model-Based Generators
Targets
Models stored as directed, attributed graphs
executable models
Synchronous Dataflow
Petri Net
Generators traverse/transform
analyzable model
6Metamodeling and Modeling
MetaModel
Model
- Abstract Concrete Syntax
- Static Semantics
- Visualization
OCL Constraints
7Explanation of Hostile Grid Meta-Model
- Objects Baby, Landmine, Robot
- Attributes X-Coordinate, Y-Coordinate
- ConstraintsMinimum X-Coordinate, Minimum
Y-Coordinate, Unique Name, Valid Name, Maximum
Number of Robots, Unique set of X and Y
coordinates
8The Constraints Aspect
The Constraints MaxRobots lt 2 Xmin gt 0 Ymin
gt 0 UniqueName ValidName UniqueXYCoordinate
9Example constraint
- UniqueXYCoordinate
- Pseudo code
- Return the number of babies, landmines, and
robots with given X and Y coordinates. - If number gt 1, the X and Y coordinate pair is not
unique.
10- Sample OCL Constraint
- let count project.allRobots(self.XCoordinate,
self.YCoordinate) project.allBabies
(self.XCoordinate, self.YCoordinate)
project.allLandmines(self.XCoordinate,
self.YCoordinate) in - if (count lt 1) then
- true
- else
- false
- endif
11Example Instance Model
12Calculating Angle Rotations
- Rotation sensor reads a value of 16 when the
wheel has rotated 360 degrees. - Calculate the angle at which the robot needs to
turn to point to so that it will travel to the
baby in a straight line. double angle
atan2((finalY-RobotY), (finalX-RobotX)) - Convert into degrees.
- angle angle (180/pi)
Rotation Sensors
13A Model Interpreter for Generating Robot Control
- The Interpreter is written in C and hooks into
modeling environment as a GME plug-in - It will generate Java code
- The Java code will generate instructions for the
robot to navigate to babies while moving and
avoiding landmines
//Get the hostileGrid model const
CBuilderAtomList allRobots hostileDiagram-gtGetA
toms("Robot") pos1 allRobots-gtGetHeadPosition(
) CBuilderAtom Robot allRobots-gtGetNext(pos1)
//obtain the robot's (X,Y) coordinates--gt
(RobotX, RobotY) int RobotX, RobotY Robot-gtGetA
ttribute("XCoordinate", RobotX) Robot-gtGetAttrib
ute("YCoordinate", RobotY) //Get the hostileGrid
model const CBuilderAtomList allRobots
hostileDiagram-gtGetAtoms("Robot") pos1
allRobots-gtGetHeadPosition() CBuilderAtom
Robot allRobots-gtGetNext(pos1) //obtain
the robot's (X,Y) coordinates--gt (RobotX,
RobotY) int RobotX, RobotY Robot-gtGetAttribute(
"XCoordinate", RobotX) Robot-gtGetAttribute("YCoo
rdinate", RobotY) //Get the hostileGrid
model const CBuilderAtomList allRobots
hostileDiagram-gtGetAtoms("Robot") pos1
allRobots-gtGetHeadPosition() CBuilderAtom
Robot allRobots-gtGetNext(pos1) //obtain
the robot's (X,Y) coordinates--gt (RobotX,
RobotY) int RobotX, RobotY Robot-gtGetAttribute(
"XCoordinate", RobotX) Robot-gtGetAttribute("YCoo
rdinate", RobotY) //Get the hostileGrid
model const CBuilderAtomList allRobots
hostileDiagram-gtGetAtoms("Robot") pos1
allRobots-gtGetHeadPosition() CBuilderAtom
Robot allRobots-gtGetNext(pos1) //obtain
the robot's (X,Y) coordinates--gt (RobotX,
RobotY) int RobotX, RobotY Robot-gtGetAttribut
e("YCoordinate", RobotY)
ModelInterpreter(C)
Generated Control Code
14Snippet of Interpreter Code
Obtaining robot coordinates from model
//Get the hostileGrid model const
CBuilderAtomList allRobotshostileDiagram-gtGetAto
ms("Robot") pos1 allRobots-gtGetHeadPosition()
CBuilderAtom Robot allRobots-gtGetNext(pos1)
//obtain the robot's (X,Y) coordinates--gt
(RobotX, RobotY) int RobotX, RobotY Robot-gtGetA
ttribute("XCoordinate", RobotX) Robot-gtGetAttrib
ute("YCoordinate", RobotY)
15Limitations of the robot
- Sensitive to light
- Inaccurate angle calculation
- One byte payloads
- Works only in line of sight
16Summary
- Hard-coding models to adapt to new
configuration can be automated using
meta-configurable modeling tool. - A meta-model is created that allows to create
a hostile - environment including lost babies, landmines,
and robots. - The code generator, interpreter, is written in
C, which translates the model information into
robot control software.
17Questions?
- http//www.gray-area.org/Research/CREW/