Zugriff auf die serielle Konsole des Lego Mindstorms EV3

Zugriff auf die serielle Konsole des Lego Mindstorms EV3

Leider gibt es keine wirklich simple Zugriffsmethode auf die serielle Konsole („serial console“) des EV3 Bricks. Ich hätte mir hier z.B. die Möglichkeit gewünscht, dass der EV3 sich mit dem Mini-USB-Anschluss als serielles Gerät am Computer anmeldet. Dem ist leider nicht so. Über einen kleinen Umweg und mit etwas basteln gibt es aber zum Glück doch eine Möglichkeit. Mithilfe eines USB-to-Serial- / UART-Adapters erfolgt der Zugriff ganz ähnlich wie das bei der seriellen Schnittstelle des Raspberry Pi der Fall ist.

Weiterlesen

Advertisements

[Ubuntu] OpenStreetMap: OSM-Daten mithilfe von osm2pgsql in PostgreSQL / PostGIS importieren

Erstmal wird osm2pgsql installiert, wenn man ein halbwegs aktuelles Ubuntu verwendet, geht das einfach über die Paketquellen. Wer aber zum Beispiel eine zu alte Ubuntu- oder Debian-Version einsetzt, sollte osm2pgsql stattdessen lieber wie auf der Github-Seite beschrieben selber kompilieren.

sudo apt-get install osm2pgsql

Jetzt legen wir eine Datenbank mit dem Namen osm an und konfigurieren die PostgreSQL-Datenbank für PostGIS (dafür verwenden wir jeweils den Standardnutzer „postgres“):

createdb osm --username=postgres
psql --username=postgres --dbname=osm --command="CREATE extension postgis;CREATE extension hstore;"

Falls dabei der Fehler

createdb: could not connect to database template1: FATAL:  Peer authentication failed for user „postgres“

auftreten sollte, bearbeiten wir noch die folgende Konfigurationsdatei:

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

Dort suchen wir dann nach der folgenden Zeile:

local   all             postgres                                peer

…und ändern sie folgendermaßen:

local   all             postgres                                md5

Danach wird noch schnell PostgreSQL neu gestartet:


sudo service postgresql restart

Jetzt sollte das obige Kommando durchlaufen.

Zu guter Letzt können wir die OpenStreeMap-Daten importieren. Dabei wird <number_of_cores> durch die Anzahl der verfügbaren Prozessorkerne und <osm_file> durch den Dateinamen der *.osm.pbf-Datei ersetzt. <cache_size> sollte bei einem System mit >= 32 GiB RAM durch 24000 ersetzt werden. Wenn weniger RAM vorhanden ist, durch ca. 75% des verfügbaren RAMs. Sollte eine Fehlermeldung ausgegeben werden, dass nicht genügend RAM für die Sparse-Nodes reserviert werden konnte, sollte man hier mit Trial-and-Error einfach ein wenig kleinere Werte ausprobieren.


osm2pgsql -c -S /usr/share/osm2pgsql/default.style --slim -d osm --number-processes <number_of_cores> -C <cache_size> --username postgres -W <osm_file>

(-d gibt den Datenbanknamen an. Oben haben wir ja bereits die Datenbank osm für unsere Zwecke angelegt, daher verwenden wir hier auch osm)

Die Ausführung kann nun einige Stunden dauern. Wenn hierbei folgende – oder eine ziemlich ähnliche – Ausgabe erfolgt, kann man von einer erfolgreichen Ausführung ausgehen:

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
NOTICE: table „planet_osm_point“ does not exist, skipping
NOTICE: table „planet_osm_point_tmp“ does not exist, skipping
Setting up table: planet_osm_line
NOTICE: table „planet_osm_line“ does not exist, skipping
NOTICE: table „planet_osm_line_tmp“ does not exist, skipping
Setting up table: planet_osm_polygon
NOTICE: table „planet_osm_polygon“ does not exist, skipping
NOTICE: table „planet_osm_polygon_tmp“ does not exist, skipping
Setting up table: planet_osm_roads
NOTICE: table „planet_osm_roads“ does not exist, skipping
NOTICE: table „planet_osm_roads_tmp“ does not exist, skipping
Allocating memory for dense node cache
Allocating dense node cache in one big chunk
Allocating memory for sparse node cache
Sharing dense sparse
Node-cache: cache=3000MB, maxblocks=384001*8192, allocation method=11
Mid: pgsql, scale=100 cache=3000
Setting up table: planet_osm_nodes
NOTICE: table „planet_osm_nodes“ does not exist, skipping
Setting up table: planet_osm_ways
NOTICE: table „planet_osm_ways“ does not exist, skipping
Setting up table: planet_osm_rels
NOTICE: table „planet_osm_rels“ does not exist, skipping

Die „Notices“, dass eine bestimmte Tabelle nicht existiert und daher übersprungen wird, rühren daher, dass osm2pgsql zuerst versucht, die Tabelle zu droppen, bevor es diese neu anlegt. Wird der Import aber zum ersten Mal vorgenommen, existiert die entprechende Tabelle aber noch nicht und PostgreSQL gibt diese Warnung aus – also alles im Grünen Bereich 🙂