Presentation is loading. Please wait.

Presentation is loading. Please wait.

Model-Driven Synthesis of Embedded Robotic Navigation Systems Rachael Dennison Bina Shah

Similar presentations


Presentation on theme: "Model-Driven Synthesis of Embedded Robotic Navigation Systems Rachael Dennison Bina Shah"— Presentation transcript:

1 Model-Driven Synthesis of Embedded Robotic Navigation Systems Rachael Dennison Raeanne@aol.com Bina Shah Iambina@uab.edu http://www.gray-area.org/Research/CREW/ Advisor: Dr. Jeff Gray gray@cis.uab.edu (www.gray-area.org) This research is sponsored by the CRA Collaborative Research Experience for Women.

2 Project Overview Goal: Synthesize robot control software from high-level models that depict configuration of a hostile environment containing robots, landmines, and lost babies 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

3 Model-Based Generators Models: stored as directed, attributed graphs Generators: traverse/transform Targets: executable models analyzable model Synchronous Dataflow Petri Net Slide adaptated from www.isis.vanderbilt.edu

4 Metamodeling and Modeling 1.Abstract & Concrete Syntax 2.Static Semantics 3.Visualization MetaModel Model OCL Constraints Slide adaptated from www.isis.vanderbilt.edu

5 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

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

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

8 Example Instance Model

9 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++)

10 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

11 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

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

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


Download ppt "Model-Driven Synthesis of Embedded Robotic Navigation Systems Rachael Dennison Bina Shah"

Similar presentations


Ads by Google