1、A Model-Driven Approach for Generating Embedded Robot Navigation Control Software,Bina Shah (Iambina at- uab.edu) Rachael Dennison (Raeanne at- ) 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 fr
2、om the NSF SIPHER program (Vanderbilt) and the CRA Research Experience for Women (CRA-CREW),Project Overview,Goal:Use of advanced modeling techniques to improve the development of embedded systemsSynthesize robot control software from high-level models that depict configuration of a hostile environm
3、ent containing robots, landmines, and lost babies,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 toolCreat
4、e a meta-model that represents the hostile domainConstruct a code generator that translates model information into robot control softwareCode generator has deep knowledge of domain and robot planning,Background,The Lego Mindstorms Robotics Invention System (RIS) The RCX Programmable micro-controller
5、 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,Models: stored as directed, attributed graphs,Generators: traverse/transform,Targets:,
6、executable models,analyzable model,Synchronous Dataflow,Petri Net,Metamodeling and Modeling,Abstract & Concrete Syntax Static Semantics Visualization,MetaModel,Model,OCL Constraints,Explanation of “Hostile Grid” Meta-Model,Objects: Baby, Landmine, Robot Attributes: X-Coordinate, Y-Coordinate Constra
7、ints: Minimum X-Coordinate, Minimum Y-Coordinate, Unique Name, Valid Name, Maximum Number of Robots, Unique set of X and Y coordinates,The Constraints Aspect,The Constraints: MaxRobots: = 0 Ymin: = 0 UniqueName ValidName UniqueXYCoordinate,Example constraint,UniqueXYCoordinate Pseudo code:Return the
8、 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
9、.XCoordinate, self.YCoordinate) inif (count = 1) then true else falseendif,Example Instance Model,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 bab
10、y in a straight line. double angle = atan2(finalY-RobotY), (finalX-RobotX);Convert into degrees.angle = angle * (180/pi);,Rotation Sensors,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
11、 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
12、the robots (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
13、= allRobots-GetNext(pos1); /obtain the robots (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-Get
14、HeadPosition();CBuilderAtom *Robot = allRobots-GetNext(pos1); /obtain the robots (X,Y) coordinates (RobotX, RobotY)int RobotX, RobotY;Robot-GetAttribute(“XCoordinate“, RobotX);Robot-GetAttribute(“YCoordinate“, RobotY); /Get the hostileGrid model const CBuilderAtomList *allRobots = hostileDiagram-Get
15、Atoms(“Robot“);pos1 = allRobots-GetHeadPosition();CBuilderAtom *Robot = allRobots-GetNext(pos1); /obtain the robots (X,Y) coordinates (RobotX, RobotY)int RobotX, RobotY;Robot-GetAttribute(“YCoordinate“, RobotY); ,Generated Control Code,Model Interpreter (C+),Snippet of Interpreter Code,/Get the host
16、ileGrid modelconst CBuilderAtomList *allRobots=hostileDiagram-GetAtoms(“Robot“);pos1 = allRobots-GetHeadPosition();CBuilderAtom *Robot = allRobots-GetNext(pos1); /obtain the robots (X,Y) coordinates (RobotX, RobotY)int RobotX, RobotY;Robot-GetAttribute(“XCoordinate“, RobotX);Robot-GetAttribute(“YCoo
17、rdinate“, RobotY);,Obtaining robot coordinates from model,Limitations of the robot,Sensitive to light Inaccurate angle calculation One byte payloads Works only in line of sight,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.,Questions?,http:/www.gray-area.org/Research/CREW/,