acmse 2004 crew

Uploaded from authorPOINTLite
Views:
 
Category: Entertainment
     
 

Presentation Description

No description available.

Comments

Presentation Transcript

Slide1: 

A 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-area.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)

Slide2: 

Project 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

Motivating Problem and Solution Outline: : 

Motivating 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

Background: 

Background 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

Model-Based Generators: 

Model-Based Generators Models: stored as directed, attributed graphs Generators: traverse/transform Targets: executable models analyzable model Synchronous Dataflow Petri Net

Metamodeling and Modeling: 

Metamodeling and Modeling Abstract & Concrete Syntax Static Semantics Visualization MetaModel Model OCL Constraints

Slide7: 

Explanation of “Hostile Grid” Meta-Model Objects: Baby, Landmine, Robot Attributes: X-Coordinate, Y-Coordinate Constraints: Minimum X-Coordinate, Minimum Y-Coordinate, Unique Name, Valid Name, Maximum Number of Robots, Unique set of X and Y coordinates

Slide8: 

The Constraints Aspect The Constraints: MaxRobots: <= 2 Xmin: >= 0 Ymin: >= 0 UniqueName ValidName UniqueXYCoordinate

Slide9: 

Example constraint UniqueXYCoordinate Pseudo code: Return the number of babies, landmines, and robots with given X and Y coordinates. If number > 1, the X and Y coordinate pair is not unique.

Slide10: 

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 <= 1) then true else false endif

Slide11: 

Example Instance Model

Slide12: 

Calculating 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

Slide13: 

A 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->GetAtoms("Robot"); pos1 = allRobots->GetHeadPosition(); CBuilderAtom *Robot = allRobots->GetNext(pos1); //obtain the robot's (X,Y) coordinates--> (RobotX, RobotY) int RobotX, RobotY; Robot->GetAttribute("XCoordinate", RobotX); Robot->GetAttribute("YCoordinate", RobotY); //Get the hostileGrid model const CBuilderAtomList *allRobots = hostileDiagram->GetAtoms("Robot"); pos1 = allRobots->GetHeadPosition(); CBuilderAtom *Robot = allRobots->GetNext(pos1); //obtain the robot's (X,Y) coordinates--> (RobotX, RobotY) int RobotX, RobotY; Robot->GetAttribute("XCoordinate", RobotX); Robot->GetAttribute("YCoordinate", RobotY); //Get the hostileGrid model const CBuilderAtomList *allRobots = hostileDiagram->GetAtoms("Robot"); pos1 = allRobots->GetHeadPosition(); CBuilderAtom *Robot = allRobots->GetNext(pos1); //obtain the robot's (X,Y) coordinates--> (RobotX, RobotY) int RobotX, RobotY; Robot->GetAttribute("XCoordinate", RobotX); Robot->GetAttribute("YCoordinate", RobotY); //Get the hostileGrid model const CBuilderAtomList *allRobots = hostileDiagram->GetAtoms("Robot"); pos1 = allRobots->GetHeadPosition(); CBuilderAtom *Robot = allRobots->GetNext(pos1); //obtain the robot's (X,Y) coordinates--> (RobotX, RobotY) int RobotX, RobotY; Robot->GetAttribute("YCoordinate", RobotY); … Generated Control Code Model Interpreter (C++)

Slide14: 

Snippet of Interpreter Code //Get the hostileGrid model const CBuilderAtomList *allRobots=hostileDiagram->GetAtoms("Robot"); pos1 = allRobots->GetHeadPosition(); CBuilderAtom *Robot = allRobots->GetNext(pos1); //obtain the robot's (X,Y) coordinates--> (RobotX, RobotY) int RobotX, RobotY; Robot->GetAttribute("XCoordinate", RobotX); Robot->GetAttribute("YCoordinate", RobotY); Obtaining robot coordinates from model

Limitations of the robot: 

Limitations of the robot Sensitive to light Inaccurate angle calculation One byte payloads Works only in line of sight

Slide16: 

Summary 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.

Slide17: 

Questions? http://www.gray-area.org/Research/CREW/