module_map Klassenreferenz

#include <module_map.h>

Klassendiagramm für module_map:

module Aufstellung aller Elemente

Öffentliche Methoden

 module_map (void)
virtual int mod_load (void)
virtual int mod_unload (void)
virtual int handle_msg (const char *msg)
virtual char * get_name (void)
virtual int get_status (void)
int setup (double width, double height)
int setup (double width, double height, const char *map_file)
void execute_command (string command, double param)
void execute_command (unsigned char code, const saved_net_msg &message)
void update (void)
void dump_paths (const char *filename)
void parse_datalog (vector< saved_net_msg > saved_messages, string datalog)
double estimate_execution_time (vector< saved_net_msg > messages)
double get_width (void)
double get_height (void)
void set_battery_voltage (double voltage, bool compile_voltage=false)
double get_battery_voltage (bool compile_voltage=false)
robot_data get_robot_data (void)
vector< map_infoget_map_data (void)
void add_map_element (map_info element)
vector< robot_pathget_paths (void)
size_t add_path (robot_path path)
void add_command (string name, unsigned char code)
string get_command (unsigned char code)

Private Attribute

double EPM
unsigned int BATTERIESPANNUNG
unsigned int UNGUELTIGER_BEFEHL
unsigned int BEFEHL_VERWEIGERT
unsigned int FATALER_FEHLER
unsigned int AUSFUEHRUNGSPROTOKOLL_ANFANG
unsigned int AUSFUEHRUNGSPROTOKOLL_ENDE
unsigned int METERZEIT
unsigned int PERIODENDAUER
unsigned int GENAUIGKEIT
unsigned int SENSOR_1_AN
unsigned int SENSOR_2_AN
unsigned int SENSOR_3_AN
unsigned int SENSOR_1_AUS
unsigned int SENSOR_2_AUS
unsigned int SENSOR_3_AUS
double SENSOR_1_X
double SENSOR_1_Y
double SENSOR_1_RTG_X
double SENSOR_1_RTG_Y
double SENSOR_1_BREITE
double SENSOR_2_X
double SENSOR_2_Y
double SENSOR_2_RTG_X
double SENSOR_2_RTG_Y
double SENSOR_2_BREITE
double SENSOR_3_X
double SENSOR_3_Y
double SENSOR_3_RTG_X
double SENSOR_3_RTG_Y
double SENSOR_3_BREITE
module_confmod_conf
double width
 Aktuelle Breite des Kartenrasters (jeweils ein Kartenelement).
double height
 Aktuelle Höhe des Kartenrasters (jeweils ein Kartenelement).
double compile_battery_voltage
 Die Batteriespannung, die zum Kompilierzeitpunkt vorlag.
double battery_voltage
 Aktuelle Batteriespannung.
double path_ttl
vector< map_infomap_data
 Vektor aus Kartenelementen.
robot_data robot
map< unsigned char, string > command_library
vector< robot_pathpaths
double current_voltage

Ausführliche Beschreibung

Die Karte besteht aus Kartenelementen. Diese wiederum enthalten Informationen darüber, was sie darstellen (beispielsweise "Hindernis" ). Hier wird noch _kein_ Rendering der Karte vorgenommen, da die Daten unabhängig von den verwendeten Grafikbibliotheken gespeichert werden.


Beschreibung der Konstruktoren und Destruktoren

module_map::module_map ( void   ) 

Der Konstruktor bereitet eine leere Karte mit Standardeinstellungen vor. Über die Funktion setup() kann die Karte schließlich erzeugt werden.


Dokumentation der Elementfunktionen

void module_map::add_command ( string  name,
unsigned char  code 
)

Fgt unbekannte Kommandos in eine STL-Map ein, sodass das Modell weiß, welcher Code zu welchem Befehl, den der Benutzer geben kann, gehört.

Parameter:
name Der Name des Kommandos, beispielsweise "Vorwaerts".
code Der Code des Kommandos, beispielsweise 100.

void module_map::add_map_element ( map_info  element  ) 

Fügt ein Kartenelement zu den bereits gespeicherten Elementen hinzu.

Parameter:
element Das hinzuzufügende Element

size_t module_map::add_path ( robot_path  path  ) 

Fügt zu den bereits gespeicherten Pfaden einen neuen hinzu. Dieser darf _nicht_ über die Begrenzungen der Karte hinausgehen. Dazu werden die Variablen width und height der Karte überprüft.

Parameter:
path Der hinzuzufügende Pfad.
Rückgabe:
Die Anzahl der bereits gespeicherten Pfade oder 0, falls ein Fehler aufgetreten ist.

void module_map::dump_paths ( const char *  filename  ) 

Schreibt die gespeicherten Pfade in ein allgemein lesbares Datenformat, das die einzelnen Felder durch einen Tabulator trennt.

Parameter:
filename Die Datei, in der alles gespeichert werden soll.

double module_map::estimate_execution_time ( vector< saved_net_msg messages  ) 

Schätzt die Zeit, die zur Ausführung aller angegebenen Befehle benötigt wird, ab, und schickt sie an den Server.

Parameter:
messages Die vom Benutzer eingegebenen Befehle. Diese sollen an den Roboter gesandt werden.
Rückgabe:
Eine Zeit in Sekunden, die über MSG_EXECUTION_TIME an den Server übertragen wird.

void module_map::execute_command ( unsigned char  code,
const saved_net_msg message 
)

Führt ein Kommando aus, das der Benutzer dem Roboter geschickt hat. Die Karte zerlegt das Kommando dann in elementare Bewegungen wie zum Beispiel "Vorwärts". Mehr Informationen sind im Benutzerhandbuch zu finden.

Parameter:
code Der Bytecode, der zum angegebenen Befehl gehört.
message Der vom Benutzer eingegebene Befehl mit Parametern. Der tatsächliche Parameter für den übergebenen Elementarbefehl wird erst noch berechnet.

void module_map::execute_command ( string  command,
double  param 
)

Führt ein Elementarkommando wie beispielsweise eine Bewegung nach vorne aus und stellt das Ergebnis auf der Karte dar. Im Unterschied zur anderen execute_command-Funktion ist der Parameter des Kommandos bekannt und muss nicht erst berechnet werden.

Parameter:
command Das auszuführende Kommando. Momentan werden die Befehle Vorwärts, Rückwärts, Linksdrehung und Rechtsdrehung unterstützt..
param Der Parameter, mit dem das Kommando aufgerufen wird. Dieser Wert gibt beispielsweise an, wie weit sich der Roboter bewegen soll. Eventuell muss der Parameter noch berechnet werden. Hierfür existiert eine andere Version von execute_command.
Der Parameter sollte double sein, damit partiell ausgeführte Kommandos auf der Karte richtig dargestellt werden können.

double module_map::get_battery_voltage ( bool  compile_voltage = false  ) 

Gibt die aktuell gespeicherte Batteriespannung zurück.

Parameter:
compile_voltage Ist standardmäßig false. Wenn der Programmierer beim Aufruf true übergibt, so ist das Ergebnis die Batteriespannung, die zum Kompilierzeitpunkt vorlag.
Rückgabe:
Ein Wert > 0.0 in mV.

string module_map::get_command ( unsigned char  code  ) 

Gibt das Kommando zurck, das zu einem Code gehört.

Parameter:
code Der Code, nach dem gesucht werden soll.
Rückgabe:
Ein String, der im Fall, dass das Kommando nicht gefunden werden konnte, leer ist. Sonst enthält er das Kommando, das zu dem angegebenen Code gehört.

double module_map::get_height ( void   ) 

Gibt die Höhe der Karte zurck.

Rückgabe:
Höhe der Karte (> 0) oder 0, falls keine Karte initialisiert wurde.

vector< map_info > module_map::get_map_data ( void   ) 

Gibt die bisher erkannten Hindernisse in einem Vektor zurück.

Rückgabe:
Ein Vektor vom Typ map_info, der alle Hindernisse, auf die der Roboter bereits gestoßen ist, enthält.

virtual char* module_map::get_name ( void   )  [inline, virtual]

Identifiziert den Typ des Moduls.

Rückgabe:
"module_map"

Implementiert module.

vector< robot_path > module_map::get_paths ( void   ) 

Gibt die gespeicherten Pfade des Roboters als STL-Vektor zurück. Diese Daten können später für andere Auswertungen verwendet werden.

Rückgabe:
Ein Vektor vom Typ robot_path.

robot_data module_map::get_robot_data ( void   ) 

Gibt die aktuell gespeicherten Daten über den Roboter zurück. Diese Funktion wird zum Beispiel beim Zeichnen des OpenGL-Fensters benötigt.

Rückgabe:
Ein Objekt vom Typ robot_data.

int module_map::get_status ( void   )  [virtual]

Der Status ist hier 0, wenn die Karte bereits intialisiert wurde, und -1, wenn dem nicht so ist.

Rückgabe:
0 oder -1.

Implementiert module.

double module_map::get_width ( void   ) 

Gibt die Breite der Karte zurück.

Rückgabe:
Breite der Karte (> 0) oder 0, falls keine Karte intialisiert wurde.

int module_map::handle_msg ( const char *  msg  )  [virtual]

Das Modul reagiert in dieser Version nicht auf Nachrichten.

Rückgabe:
0, da keine Behandlung von Nachrichten existiert.

Implementiert module.

int module_map::mod_load ( void   )  [virtual]

Beim Laden des Moduls wird die Karte zunächst noch nicht intialisiert. Dies kann zu einem späteren Zeitpunkt durch die Funktion setup() erledigt werden.

mod_load() sorgt dafür, dass alle benötigten Variablen aus der Konfigurationsdatei gelesen werden.

Rückgabe:
0, wenn das Laden erfolgreich war. Sonst -1.

Implementiert module.

int module_map::mod_unload ( void   )  [virtual]

Am Ende des Daseins dieses Moduls muss nur der Speicher freigegeben werden.

Rückgabe:
Immer 0, da nichts schiefgehen kann.

Implementiert module.

void module_map::parse_datalog ( vector< saved_net_msg saved_messages,
string  datalog 
)

Geht das Datalog, das der Roboter nach Ausführung der Befehle schickt, durch, und versucht, die entsprechenden Kommandos auszuführen. Siehe dazu auch die Erläuterungen in der Dokumentation.

Parameter:
saved_messages Die ursprünglich vom Benutzer versandten Nachrichten.
datalog Das Datalog, das der Roboter nach Ausführung aller Befehle angelegt hat. Kann auch unvollständig sein, wenn beispielsweise eine Kollision aufgetreten ist.

void module_map::set_battery_voltage ( double  voltage,
bool  compile_voltage = false 
)

Setzt die aktuelle Batteriespannung.

Parameter:
voltage Die neue Spannung in mV > 0.0
compile_voltage Ist standardmäßig false. Wenn der Programmierer beim Aufruf true übergibt, so wird die Batteriespannung gesetzt, die zum Kompilierzeitpunkt vorlag.

int module_map::setup ( double  width,
double  height,
const char *  map_file 
)

Diese überladene Version von setup() liest die Kartendaten aus einer Kartendatei. Die Datei enthält "width" Spalten und "height" Zeilen, wobei an jeder Stelle der Typ des Terrains steht.

Gltige Terraintypen sind:

Parameter:
width Breite der Karte.
height Höhe der Karte.
map_file ASCII-Datei, die eine Beschreibung der Karte enthält.
Rückgabe:
0, wenn es keinen Fehler gab. Sonst -1.

int module_map::setup ( double  width,
double  height 
)

Erstellt eine neue Karte. width und height werden zunächst nur dafür verwendet, zu überprüfen, ob hinzugefügte Objekte auf dem Kartenausschnitt dargestellt werden können.

Parameter:
width Die Breite der Karte (jeweils ein Kartenelement).
height Die Höhe der Karte (jeweils ein Kartenelement).
Rückgabe:
0, wenn es keinen Fehler gab. Sonst -1.

void module_map::update ( void   ) 

Unterzieht die aktuelle Kartendarstellung einem Update. Dies bedeutet, dass zunächst alle Pfade auf Gültigkeit überprüft werden müssen. Abgelaufene Pfade werden markiert, sodass sie von der Karte nicht mehr gezeichnet werden.

Hinweis: Als permanent markierte Pfade werden von diesem Update natürlich ausgeschlossen. Nach Ablauf der vierfachen Lebenszeit werden inaktive Pfade endgültig gelöscht, um den Speicherverbrauch zu minimieren.


Dokumentation der Datenelemente

unsigned int module_map::AUSFUEHRUNGSPROTOKOLL_ANFANG [private]

unsigned int module_map::AUSFUEHRUNGSPROTOKOLL_ENDE [private]

unsigned int module_map::BATTERIESPANNUNG [private]

double module_map::battery_voltage [private]

Aktuelle Batteriespannung.

unsigned int module_map::BEFEHL_VERWEIGERT [private]

map<unsigned char, string> module_map::command_library [private]

double module_map::compile_battery_voltage [private]

Die Batteriespannung, die zum Kompilierzeitpunkt vorlag.

double module_map::current_voltage [private]

double module_map::EPM [private]

unsigned int module_map::FATALER_FEHLER [private]

unsigned int module_map::GENAUIGKEIT [private]

double module_map::height [private]

Aktuelle Höhe des Kartenrasters (jeweils ein Kartenelement).

vector<map_info> module_map::map_data [private]

Vektor aus Kartenelementen.

unsigned int module_map::METERZEIT [private]

module_conf* module_map::mod_conf [private]

Zeiger auf das Konfigurationsdateienmodul. Somit können Variablen für die Karte ausgelesen werden.

double module_map::path_ttl [private]

Die TTL (Time To Live) eines Pfades in Sekunden. Innerhalb dieser Zeitspanne wird der Pfad sanft ausgeblendet, sodass er nach deren Ablauf nicht mehr zu sehen ist.

vector<robot_path> module_map::paths [private]

unsigned int module_map::PERIODENDAUER [private]

robot_data module_map::robot [private]

unsigned int module_map::SENSOR_1_AN [private]

unsigned int module_map::SENSOR_1_AUS [private]

double module_map::SENSOR_1_BREITE [private]

double module_map::SENSOR_1_RTG_X [private]

double module_map::SENSOR_1_RTG_Y [private]

double module_map::SENSOR_1_X [private]

double module_map::SENSOR_1_Y [private]

unsigned int module_map::SENSOR_2_AN [private]

unsigned int module_map::SENSOR_2_AUS [private]

double module_map::SENSOR_2_BREITE [private]

double module_map::SENSOR_2_RTG_X [private]

double module_map::SENSOR_2_RTG_Y [private]

double module_map::SENSOR_2_X [private]

double module_map::SENSOR_2_Y [private]

unsigned int module_map::SENSOR_3_AN [private]

unsigned int module_map::SENSOR_3_AUS [private]

double module_map::SENSOR_3_BREITE [private]

double module_map::SENSOR_3_RTG_X [private]

double module_map::SENSOR_3_RTG_Y [private]

double module_map::SENSOR_3_X [private]

double module_map::SENSOR_3_Y [private]

unsigned int module_map::UNGUELTIGER_BEFEHL [private]

double module_map::width [private]

Aktuelle Breite des Kartenrasters (jeweils ein Kartenelement).


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
Erzeugt am Sun Sep 3 23:58:31 2006 für Eukalyptos von  doxygen 1.4.7