Filename: Mapping System Building Blocks Date : July 19, 2007 Version : 0.01 ---------------------------------------------------------------------------------------------------------------------- Overview of software building blocks ==================================== Command processor: translate a command into a route ----------------- - Analyze the command, the result should always be to travel from A->X1->X2 ...Xn->B where there might be no X-locations Any other command doesn't make sense in this context. Example: get me a beer should translate in: go from where you are (=A) to the frig. in the kitchen (=K) and come to me (=B) - Determine a route from A->K->B which will be something like A->I1->I2->K->I3->B where I1,2,3 .. are intermediate point so that the route can be constructed out of straight lines(sections). The command processor is NOT in the scope of the project so we should input the route directly into the program. An option is to provide a simple input routine that allows the user to enter a list of coordinates such as A(xa,ya) .. B(xb,yb), that's all. Initializer: ----------- - Load details of one route section in memory and kick off the "Navigator" - Repeat for next section till all sections are handled - This routine interfaces with the Mapping System. This routine sends a CMD = GET MAP DATA to the Mapping System and the arguments are the start and end point of the section The Mapping System system respond by transferring the requested data to a dedicated area in memory Navigator: translate one part of a route (A-X1 or Xn->Xn=1) into actual movement --------- - read the sensors - determine position parameters. The parameters are the data elements which belong to a specific set of coordinates The parameters are / can be: position coordinates = mandatory position ranking 0-9 = mandatory surrounding data 1,2,3,4 optional and can data such as: - wall at 25cm heading 45degr. - anything the bot can or should detect for safety or reference while at the current position - don't forget that a position in the real world is not a point but a square of ex. 1'x 1' so 25 cm is from the center of that 1' x 1' !! Keep that in mind when comparing actual versus "Map" data. - challenge parameters against the route details from Maps (Static and Dynamic) if challenge does not reveal any deviations between actual and Map data - continue if deviations found then some actions might be required such as: - correct position coordinates - initiate update of Dynamic Map This routine interfaces with the Mapping System This routine sends a CMD = PUT MAP DATA to the Mapping System with arguments: coordinates etc. etc. to be defined - calculate output signals - control output Mapping System: -------------- - The Mapping system consist of: - two data sets = the Static Map and the Dynamic Map - user interface to update and view/print/dump both Maps - application interface to support the following commands - CMD GET MAP DATA = transfer Static + Dynamic map data to a dedicated memory area accessable by the other modules - CMD PUT MAP DATA = receive updates of Dynamic map data and update the Dynamic map