Dank der systematischen Weiterentwicklung des Mechlab-Versuchsträgers durch das gesamte Mechlab-Team ist es nun möglich, das Fahrzeug auch aus Simulink heraus anzusteuern. Die Anbindung erfolgt durch den Betrieb des Steuerungsrechners als ROS-Knoten über die Ethernet-Schnittstelle. Zusätzlich sind die für eine Steuerung notwendigen ROS-Topics in Matlab zu implementieren. Das nachfolgende Video zeigt den Test eines PI-Reglers für die Längsführung (Tempomat). Die grundlegenden Zusammenhänge von Regler und Strecke sind damit für Studierende sehr gut nachvollziehbar. Künftig können nun die sehr umfangreichen Simulink-Regler zur Längs- und Querführung sehr einfach getestet und parametriert werden.
Automatisierte Fahrt verbessert
Durch die Einbeziehung eines Korrektursignals (Differential GPS) konnte die Ortung für die Fahrzeugführung des Mechlab-Versuchsträgers deutlich verbessert werden. Damit ist ab sofort eine stabile Fahrt mit Abweichungen im Bereich von nur noch 10 cm möglich. Das Video zeigt eine Testfahrt mit dem derzeitigen Entwicklungsstand, geregelt wurde auf die gestrichelte Mittellinie. In den kommenden Wochen erfolgt die weitere Paramteroptimierung zur Erhöhung der Fahrgeschwindigkeit. Sollte das System stabil nutzbar sein, ist als nächster Schritt die Fahrt im öffentlichen Verkehr vorgesehen. Das Versuchsfahrzeug verfügt über die entsprechende Ausnahmegenehmigung. Für die Freunde des Mechlab-Teams gibt es natürlich rechtzeitig eine persönliche Information.
Mechlab-Vortrag auf Automotive-Tagung
Prof. Toralf Trautmann stellte auf der Tagung „Innovative Transformation of the Automotive Industry“ auf Einladung des ungarischen Verkehrsministeriums den aktuellen Stand und die Herausforderungen im Bereich des automatisierten Fahrens vor. Neben verschiedenen Podiumsdiskussionen gab es eine große Industrieausstellung der in Ungarn vertretenen Hersteller und Zulieferer. Am nächsten Tag folgten weitere Gespräche an der Uni Budapest zu gemeinsamen Forschungsprojekten. Von besonderem Interesse ist dabei die Nutzung der gerade entstehenden Teststrecke „ZalaZone„. Für Ende November sind erste Testmessungen durch das Mechlab-Team vorgesehen.
Digitales Verkehrsschild im Testbetrieb
Auf dem Testfeld der HTW Dresden wurde für einen Zeitraum von einem Monat ein digitales Verkehrsschild durch die Firma Green Way Systems in Betrieb genommen. Für den Zeitraum von ca. einem Monat können darüber benutzerspezifische und standardisierte Verkehrssymbole eingeblendet werden.
Saxony5-Hackathon – Tag 5
Tag 5 – das bedeutet Abschluss. Nach durchwachter Nacht konnten die Teilnehmer zwei Umsetzungen der Aufgabenstellung und mehrere ausbaufähige Alternativansätze präsentieren.
Nach den theoretischen Vorbetrachtungen ging es dann aufs Prüffeld zur großen Abschlussdemonstration. Dabei zeigte sich die Variante von Team #2 etwas robuster, hier gab es keine Probleme nach dem Richtungswechsel.
Danach ging es auf den Heimweg, nicht ohne vorher noch die Möglichkeiten zur Weiterarbeit zu diskutieren. Ihr dürft also auf Neuigkeiten gespannt sein…
Vielen Dank an dieser Stelle den Unternehmen für die Unterstützung.
Saxony5-Hackathon – Tag 4
Wie jeden Tag der morgendliche Blick in den Rechnerpool. Fast könnte man meinen, die Gruppe hätte den Raum seit dem gestrigen Abend nicht verlassen. Doch wie der weitere Weg in den Flur zeigt, fand am Vorabend zu später Stunde noch eine Teambesprechung außerhalb des Rechnerpools statt.
Dank gemeinsamer Anstrengung und konsequenter Weiterarbeit konnte dann am Abend des heutigen Tages der erste Erfolg gefeiert werden. Zwar bleibt das Fahrzeug noch nicht ganz in der vorgesehenen Fahrspur, Lackschäden durch Touchieren der Leitplanke traten aber nicht auf. Das lässt für den letzten Tag hoffen.
Saxony5-Hackathon – Tag 3
Der dritte Tag begann so, wie der zweite (an der HTW) endete – am Rechner. Erste Messungen wurden auch durchgeführt, das Ziel scheint also näher zu rücken.
Am Nachmittag demonstrierte die FSD Fahrzeugsystemdaten GmbH aus Dresden dann ihren Versuchsträger für automatisierte Fahrfunktionen.
In den beiden folgenden Videos ist eine Messfahrt zu sehen.
Nach dieser eindrucksvollen Demonstration erwartete die Studierenden ein Grillabend, der von der Firma Casonex mit interessanter Technik zur erweiterten Realität begleitet wurde.
Sieger im anschließenden Kickerturnier wurde das Mechlab-Team #1 (Glückwunsch und Dank an Dirk & Ecke), knapp gefolgt von den Champions der Casonex GmbH.
Saxony5-Hackathon – Tag 2
Der zweite Tag stand ganz im Zeichen der Funktionsentwicklung. Als erste Aufgabe wurde die Implementierung einer auf Lidardaten basierenden Spurführung ausgewählt, die Vorarbeiten dazu erfolgten bereits durch Christopher Dunkel (Blogbeitrag). Um die Dynamik zu erhöhen, treten zwei Teams gegeneinander an. Die nachfolgenden Bilder zeigen die intensive Programmierarbeit sowie die Unterstützung durch das Mechlab-Team. Dabei scheint es fast, dass es erste Nachahmer für Svens wilde Gesten gibt.
Erste Messungen fanden auch mit dem Passat der FSD Fahrzeugsystemdaten GmbH statt. Für Tag 3 ist hier eine Vorstellung der Automatisierung auf Basis einer dGPS-Ortung vorgesehen.
Saxony5-Hackathon – Tag 1
Am 05.08.2019 startete der 1. Hackathon zum Thema „Automatisierte Fahrfunktionen“. Insgesamt 11 Studierende der HTWK Leipzig und der HTW Dresden wollen neue Funktionen für ein Versuchsfahrzeug entwickeln.
Der erste Tag stand im Zeichen der Vorstellung des Mechlab-Teams und der verfügbaren technischen Ausrüstung. Der aktuelle Stand im Versuchsträger BMW i3 wurde auf dem HTW-Prüffeld demonstriert. Die fachliche Betreuung wird von M. SC. Sven Eckelmann koordiniert.
Applying Filters on LiDAR Point Clouds
The Point Cloud Library (PCL) offers great possibilities for processing large point clouds. In the following article the principle of different filters and its application on pointclouds from Velodyne Puck and Ouster OS1 LiDARs using ROS shall be described.
For quick configuration changes, all filter parameters can be changed via rqt dynamic reconfigure. So far 4 different types of filtration have been implemented:
Voxel Grid
This type of filter allows downsampling of large point clouds (PCL Voxel Grid Filter). The parameter leaf_size describes the length of a box in 3 dimensions, in which all points are reduced to one point.
Pass Through
A pass through filter allows to restrict point clouds in their dimensions (PCL Pass Through Filter). The parameters are the min and max value of the points in meters, which should (not) be filtered.
Outlier Removal
The library offers different types of filters to remove noise and outliers.
- Statistical Outlier Removal: The average distance from each point to its neighbours is calculated. Under the assumption that it is a gaussian distribution, a filtering can take place by using the parameters mean and standard deviation (PCL Statistical Outlier Removal Filter).
- Radius Outlier Removal: We define a certain number of points, which must be present within a radius (PCL Radius Outlier Removal Filter).
- Conditional Removal: The filtering object depends on the defined conditon. A condition could be described as a comparison between 2 thresholds. For example a point musst be musst be greater than and less than a given size (PCL Conditonal Outlier Removal Filter). It’s functionality can be compared to the Pass Through Filter.
Intensity Filter
The intensity filter is not part of PCL but the library in addition with Boost can be used to implement such a filter. A point in a cloud needs at least 3 informations (x, y, z) and optionally additonal an intensity or color informations. In our case we will define the PCL point type pcl::PointXYZI. Now a PCL point cloud pointer with the specified point type can be created as a typedef:
typedef typename pcl::PointCloud::Ptr PointCloudPtr
With Boost it’s easy to iterate through a sequence. Each point is assigned an intensity, which is compared afterwards:
BOOST_FOREACH (const pcl::PointXYZI &pt, input_cloud->points) {
if (pt.intensity > intensity_threshold)) {
output_cloud->points.push_back(PointXYZI_(pt.x,pt.y,pt.z,pt.intensity));
}
}
PointXYZI_ is a inline helper function because the PCL library does not provide a PointXYZI constructor for all needed fields (x, y, z, intensity). Now the whole filter can be implemented as a class method:
PointCloudPtr
LaneClustering::intensityFilter (PointCloudPtr input_cloud, double& intensity_threshold)
{
PointCloudPtr output_cloud (new pcl::PointCloud());
BOOST_FOREACH (const pcl::PointXYZI& pt, input_cloud->points) {
if (pt.intensity > intensity_threshold) {
output_cloud->points.push_back(PointXYZI_(pt.x,pt.y,pt.z,pt.intensity));
}
}
return (output_cloud);
}
The following image shows the application of the filter with different intensity thresholds to a point cloud of an Ouster OS1 lidar with 64 layers:
It is easy to see that many parts of the point cloud are filtered even at a very low limit value. From a value above 750 almost all points except the road markings are removed. If the limit value is further increased, parts of the track marking are also omitted and only the part with a retro-reflective marking remains.
The following videos show the application of all filters on point clouds from a Velodyne Puck and an Ouster OS1 lidar.