logging in or signing up acmse 2004 crew Urania Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINTLite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 43 Category: Entertainment License: All Rights Reserved Like it (0) Dislike it (0) Added: January 12, 2008 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member 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, wheelsModel-Based Generators: Model-Based Generators Models: stored as directed, attributed graphs Generators: traverse/transform Targets: executable models analyzable model Synchronous Dataflow Petri NetMetamodeling and Modeling: Metamodeling and Modeling Abstract & Concrete Syntax Static Semantics Visualization MetaModel Model OCL ConstraintsSlide7: 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 coordinatesSlide8: 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 ModelSlide12: 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 SensorsSlide13: 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 modelLimitations 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/ You do not have the permission to view this presentation. In order to view it, please contact the author of the presentation.
acmse 2004 crew Urania Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINTLite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 43 Category: Entertainment License: All Rights Reserved Like it (0) Dislike it (0) Added: January 12, 2008 This Presentation is Public Favorites: 0 Presentation Description No description available. Comments Posting comment... Premium member 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, wheelsModel-Based Generators: Model-Based Generators Models: stored as directed, attributed graphs Generators: traverse/transform Targets: executable models analyzable model Synchronous Dataflow Petri NetMetamodeling and Modeling: Metamodeling and Modeling Abstract & Concrete Syntax Static Semantics Visualization MetaModel Model OCL ConstraintsSlide7: 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 coordinatesSlide8: 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 ModelSlide12: 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 SensorsSlide13: 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 modelLimitations 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/