Praktikum: Mobile Roboter
Dozenten |
Goran
Huskić, Cornelia Schulz, (Richard
Hanten) |
Sprechstunde |
während des Praktikums und n.V. |
Zeit |
Mi. 14:00 - 18:00 Uhr (wöchentlich) |
Umfang |
6 LP |
Beginn |
Mi., 19. Oktober 2016 |
Vorbesprechung und Einführung |
Mi., 19. Oktober 2016, 14:00 - 18:00 Uhr |
Ort |
Sand 1, Raum A331 (kleines Roboterlabor) |
Beschreibung
Sie sammeln im Praktikum Mobile Roboter praktische
Erfahrungen im Umgang mit mobilen Robotern und entwickeln
Steuerungsalgorithmen für diese. Als Hardwareplattform werden ganz
neue Roboter vom Type TurtleBot 2 (Aufbau Sommer 2016) eingesetzt.
Die Software für die Roboter wird in C++ implementiert. Programm-
und Treiberinfrastrutkuren werden durch das Robot Operating
System (ROS Jade) realisiert. Das Praktikum bietet Ihnen
Gelegenheit, Erfahrungen mit Sensoren, Aktuatoren und Regelung zu
sammeln, sowie die Grundlagen von C++ zu lernen.
Das Praktikum findet in 2er-Teams statt, die jeweils für einen
Roboter während des Semesters zugewiesen bekommen.
Voraussetzungen
Geeignet ab 5. Semester Bachelor oder im Master-Studium
Literatur
Eine Einführung in C++ für Java-Programmierer:
Von
Java nach C++
Einführung zu ROS:
http://wiki.ros.org/ROS/Tutorials
Anmeldung
/****************************************************************
* zeigeTeilnehmer
*
* Eingabeparameter: $seminar = ID des Seminars
*
* Zeigt alle Termine eines Seminares an.
* Noch offene Termine weisen eine "Anmelden"-Schaltfläche auf,
* bereits vergebene Temine zeigen den Namen des Referenten.
*
* 2000-03-15 S. Wiest WSI-RA University of Tuebingen
* 2005-10-27 A. Sung Anpassung für die neue Serverumgebung
* 2011-03-10 A. Masselli Überarbeitung: - neues CD der Uni
* - RA wird KS
* - CC der Email an Betreuer
* - Kommentare
* - Zeichenkodierung
* - Einfrieren älterer Veranstaltungen (Deaktivieren der Anmeldefunktion)
* - Identifikation der Veranstaltungen über URL der WWW-Seite
****************************************************************/
// Eingabeparameter für die neue php-Version aus den superglobals auslesen
if (!isset($url)) {
$url = $_GET['url'];
}
echo "";
// Sollen Anmeldebuttons gezeigt werden?
if (!isset($isActive)) {
$isActive = ($_GET['isActive'] == 'yes');
}
// Inkludiere Parameter
include_once("globalSettings.php");
// Variablen
$tableHead = "background-color:#f0ece1;";
$tableRowStyle = "height:28";
$rowHeight = "18";
$tableRow1st = "background-color:#f4f1f0";
$tableRow2nd = "background-color:#ffffff";
$anmeldenButton = "

";
$anmeldenURL = "/php/wwwseminar/anmeldung.php";
// Beginne Tabelle
// print "\n
\n";
print "\n\n\n";
// Ermittle, ob es sich um ein Praktikum handelt, und ob man sich anmelden kann
// Suche nach dem Schlüsselwort "Praktikum" im Titel des Seminars
$query = "SELECT titel,querycode FROM seminar WHERE seminarURL = '$url'";
$result = mysql_query($query);
$titel = mysql_result($result, 0,"titel");
$querycode = mysql_result($result, 0, "querycode");
$isPraktikum = (stristr($titel,"praktikum")!==false);
// Prüfe, ob Veranstaltung zum laufenden Semester gehört
$semester = getSemester($url);
// $isActive = ($semester == $currentSemester);
// Liste aller Termine einer Veranstaltung abrufen
$query = "SELECT * FROM termin
LEFT JOIN referent USING (ID_termin)
LEFT JOIN seminar USING (ID_seminar)
LEFT JOIN betreuer USING (betreuer)
WHERE (termin.datum > '$WAITDATE_SQL')
AND (seminarURL = '$url')
ORDER BY termin.datum, termin.ID_termin";
$result = mysql_query($query);
$number = mysql_numrows($result);
if ($number <= 0) { // wenn keine Termine gefunden
print "Themen werden so schnell wie möglich online gestellt.
";
// Liste aller Termine einer Veranstaltung abrufen
$query = "SELECT * FROM seminar
WHERE (seminarURL = '$url')";
$result = mysql_query($query);
$number = mysql_numrows($result);
if ($number <= 0) { // wenn kein Eintrag in DB vorhanden
// Veranstaltung eintragen
$querycode = getRandomString(8);
$query = "INSERT INTO seminar (titel, seminarURL, querycode)
VALUES ('Titel','$url','$querycode')";
$result = mysql_query($query);
}
}
else { // wenn Termine gefunden
$i = 0;
$HTMLrowcount = 0;
$ID_temin_old = -1;
if ($isPraktikum) {
// print " \n";
print "
\n";
print " Praktikumsplatz | \n";
print " Betreuung | \n";
print " Teilnehmer(in) | \n";
print "
\n";
while ($i < $number):
// Daten aus SQL-Abfrage-Ergebnis extrahieren
$ID_termin = mysql_result($result, $i, "ID_termin");
$betreuer = mysql_result($result, $i, "betreuer");
$betreuerURL = mysql_result($result, $i, "betreuer.url");
$maxReferenten = mysql_result($result, $i, "maxReferenten");
$vorname = htmlentities(mysql_result($result, $i, "vorname"));
$name = htmlentities(mysql_result($result, $i, "name"));
if (($vorname > "") || ($name > "")) {
$referent = $vorname . " " . $name;
} elseif ($maxReferenten > 0 and $isActive) {
$referent = "$anmeldenButton";
} else {
$referent = "";
}
// Wechselnder Hintergrund für gerade/ungerade Tabellenzeilen
// $style = ++$HTMLrowcount % 2 ? 'tr-even' : 'tr-odd';
// Ausgabe einer Tabellenzeile
// print " \n";
print "
\n";
$ii = $i + 1;
print " $ii | \n";
if ($betreuerURL != "") {
print " $betreuer | \n";
} else {
print " $betreuer | \n";
}
print " $referent | \n";
print "
\n";
$i++;
endwhile;
}
else { // wenn kein Praktikum
// print " \n";
print "
\n";
print " Datum | \n";
print " Thema | \n";
print " Betreuung | \n";
print " Referent(in) | \n";
print "
\n";
while ($i < $number):
// Daten aus SQL-Abfrage-Ergebnis extrahieren
$datum = formatDate(mysql_result($result,$i,"datum"));
$ID_termin = mysql_result($result,$i,"ID_termin");
$titel = mysql_result($result,$i,"titel");
$betreuer = mysql_result($result,$i,"betreuer");
$betreuerURL = mysql_result($result,$i,"betreuer.url");
$maxReferenten = mysql_result($result,$i,"maxReferenten");
$vorname = mysql_result($result,$i,"vorname");
$name = mysql_result($result,$i,"name");
if (($vorname > "") || ($name > "")) {
$referent = $vorname . " " . $name;
} elseif ($maxReferenten > 0 and $isActive) {
$referent = "$anmeldenButton";
} else {
$referent = "";
}
// Wechselnder Hintergrund für gerade/ungerade Tabellenzeilen
// $style = ++$HTMLrowcount % 2 ? 'tr-even' : 'tr-odd';
// Ausgabe einer Tabellenzeile
// print " \n";
print "
\n";
print " $datum | \n";
print " $titel | \n";
if ($betreuerURL != "") {
print " $betreuer | \n";
} else {
print " $betreuer | \n";
}
print " $referent | \n";
print "
\n";
$i++;
endwhile;
}
}
// Warteliste eines Seminars abrufen
// Als Warteliste wird ein Termin mit einem speziellen Datum ($WAITDATE_SQL) für ein bestimmtes Seminar angenommen.
$query = "SELECT * FROM termin
LEFT JOIN referent USING (ID_termin)
LEFT JOIN seminar USING (ID_seminar)
LEFT JOIN betreuer USING (betreuer)
WHERE (termin.datum<='$WAITDATE_SQL')
AND (seminarURL = '$url')
ORDER BY referent.datum DESC";
$result = mysql_query($query);
$number = mysql_numrows($result);
if ($number > 0) { // Wenn Warteliste gefunden (Info: Eine Warteliste kann auch leer sein, d.h. noch keinen Namen enthalten)
$j = 0;
// Muster für Befehl vor Serverumstellung im März 2008:
// $titel = mysql_result($result,$j,"termin.titel");
$titel = mysql_result($result,$j,"titel");
$ID_termin = mysql_result($result,$j,"ID_termin");
$warteliste = "";
while ($j < $number):
// Daten aus SQL-Abfrage-Ergebnis extrahieren
$vorname = htmlentities(mysql_result($result,$j,"vorname"));
$name = htmlentities(mysql_result($result,$j,"name"));
if(($vorname > "") || ($name > "")) {
$warteliste = "$vorname $name
\n" . $warteliste;
};
$j++;
endwhile;
$warteliste .= $isActive ? "$anmeldenButton" : "";
// Wechselnder Hintergrund für gerade/ungerade Tabellenzeilen
// $style = i % 2 ? 'tr-odd' : 'tr-even';
// Ausgabe einer Tabellenzeile
// print " \n";
print "
\n";
if (!$isPraktikum) {
print " | \n";
}
print " $titel | \n";
print " | \n";
print " $warteliste | \n";
print "
\n";
}
print "\n
\n";
if ($isActive) {
if ($isPraktikum) {
print "
Zur Reservierung eines Platzes tragen Sie sich bitte mit den Schaltflächen ganz rechts in der Tabelle ein.
Diese Anmeldung ersetzt nicht die offizielle Anmeldung über das Campus-System!
Sie dient zur Vorreservierung der einzelnen Plätze bis zur Vorbesprechung,
an der Sie persönlich anwesend sein müssen.
";
}
else
{
print "
Zur Reservierung eines Themas tragen Sie sich bitte mit den Schaltflächen ganz rechts in der Termin-Tabelle ein.
Diese Anmeldung ersetzt nicht die offizielle Anmeldung über das Campus-System!
Sie dient zur Vorreservierung der einzelnen Termine bis zur Vorbesprechung,
an der Sie persönlich anwesend sein müssen.
";
}
}
$getquery = explode('=', $_GET["query"]);
if ( ($getquery[0] === "getlist") && ($getquery[1] === $querycode) ) {
print "Liste aller Teilnehmer
\n";
print "\n\n\n";
print " \n";
print " Name | \n";
print " Vorname | \n";
print " Matr.-Nr. | \n";
print " Email | \n";
print " Studiengang | \n";
print " Sem. | \n";
print " Betreuer | \n";
print "
\n";
$query = "SELECT * FROM termin
LEFT JOIN referent USING (ID_termin)
LEFT JOIN seminar USING (ID_seminar)
LEFT JOIN betreuer USING (betreuer)
WHERE seminarURL = '$url'
ORDER BY referent.datum DESC";
$result = mysql_query($query);
$number = mysql_numrows($result);
for ($i = 0; $i < $number; ++$i) {
// Daten aus SQL-Abfrage-Ergebnis extrahieren
$name = htmlentities(mysql_result($result, $i, "name"));
$vorname = htmlentities(mysql_result($result, $i, "vorname"));
$semester = htmlentities(mysql_result($result, $i, "semester"));
$matrikelnr = htmlentities(mysql_result($result, $i, "matrikelnr"));
$studiengang = htmlentities(mysql_result($result, $i, "studiengang"));
$email = htmlentities(mysql_result($result, $i, "email"));
$betreuer = htmlentities(mysql_result($result, $i, "betreuer"));
print " \n";
print " $name | \n";
print " $vorname | \n";
print " $matrikelnr | \n";
print " $email | \n";
print " $studiengang | \n";
print " $semester | \n";
print " $betreuer | \n";
print "
\n";
}
print "\n
\n";
// print email list
print "Email-Liste
\n";
for ($i = 0; $i < 1; ++$i) {
$email = htmlentities(mysql_result($result, $i, "email"));
print "$email";
}
for ($i = 1; $i < $number; ++$i) {
$email = htmlentities(mysql_result($result, $i, "email"));
print ", $email";
}
print "
";
}
?>
Diese Seite drucken