#include <module_map.h>
Klassendiagramm für module_map:
Ö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_info > | get_map_data (void) |
void | add_map_element (map_info element) |
vector< robot_path > | get_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_conf * | mod_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_info > | map_data |
Vektor aus Kartenelementen. | |
robot_data | robot |
map< unsigned char, string > | command_library |
vector< robot_path > | paths |
double | current_voltage |
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.
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.
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.
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.
path | Der hinzuzufügende Pfad. |
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.
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.
messages | Die vom Benutzer eingegebenen Befehle. Diese sollen an den Roboter gesandt werden. |
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.
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.
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. |
double module_map::get_battery_voltage | ( | bool | compile_voltage = false |
) |
Gibt die aktuell gespeicherte Batteriespannung zurück.
compile_voltage | Ist standardmäßig false. Wenn der Programmierer beim Aufruf true übergibt, so ist das Ergebnis die Batteriespannung, die zum Kompilierzeitpunkt vorlag. |
string module_map::get_command | ( | unsigned char | code | ) |
Gibt das Kommando zurck, das zu einem Code gehört.
code | Der Code, nach dem gesucht werden soll. |
double module_map::get_height | ( | void | ) |
Gibt die Höhe der Karte zurck.
vector< map_info > module_map::get_map_data | ( | void | ) |
Gibt die bisher erkannten Hindernisse in einem Vektor zurück.
virtual char* module_map::get_name | ( | void | ) | [inline, virtual] |
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.
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.
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.
Implementiert module.
double module_map::get_width | ( | void | ) |
Gibt die Breite der Karte zurück.
int module_map::handle_msg | ( | const char * | msg | ) | [virtual] |
Das Modul reagiert in dieser Version nicht auf Nachrichten.
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.
Implementiert module.
int module_map::mod_unload | ( | void | ) | [virtual] |
Am Ende des Daseins dieses Moduls muss nur der Speicher freigegeben werden.
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.
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.
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:
width | Breite der Karte. | |
height | Höhe der Karte. | |
map_file | ASCII-Datei, die eine Beschreibung der Karte enthält. |
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.
width | Die Breite der Karte (jeweils ein Kartenelement). | |
height | Die Höhe der Karte (jeweils ein Kartenelement). |
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.
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).