RSS-Feed

Raspberry Pi ist endlich angekommen

von Kai um 23:25 am Montag, 28. Mai 2012 in How-To, Linux, News | 1 Kommentar

Raspberry PiVor einigen Tagen war es endlich soweit. Nachdem ich im Februar mein Exemplar vorbestellt hatte, wurde es am letzten Samstag von UPS schließlich zu mir nach Hause geliefert. Der Pi kam gut verpackt in einem kleinen Umschlag an.

Nach dem Auspacken hab ich von der offiziellen Seite der Raspberry Pi Foundation das Debian Image gezogen und auf die einzige SD-Karte gezogen, die ich hier noch rumfliegen hatte.
Das überspielen des Image geht am besten mit dem Tool dd:

dd bs=1m if=debian6-19-04-2012.img of=/dev/rdiskX

wobei das X für die Zahl steht, unter der die SD-Karte auf dem Host eingebunden wurde. Danach lies sich der Pi das erste Mal starten.
Da die ersten Auslieferungen des Raspberry Pi noch nicht allzu lange her sind, gibt es noch nicht allzu viele Anleitungen und Spielereien im Netz. Ich hab als einen der ersten Schritte, ähnlich wie Christoph von Linux und Ich auch mir erstmal einen eigenen Benutzeraccount auf dem System eingerichtet und anschließend noch getestet, wie sich das Teil als Webserver macht.

Da Apache sehr wahrscheinlich zu schwergewichtig für die Hardware des Pi ist, habe ich mich direkt für die schmalere Variante lighttpd entschieden. Installiert (zusammen mit PHP) und eingerichtet wird der folgendermaßen:

sudo groupadd www-data
sudo apt-get install lighttpd, php5-cgi
sudo lighty-enable-mod fastcgi
sudo adduser kai www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R 775 /var/www

Wie die vielen Videos auf Youtube zeigen, reicht der verbaute Grafikchip auf dem Pi aus, um mit H.264 codierte Videos in FullHD-Auflösung ruckelfrei abzuspielen, die gezeigt Version von XBMC ist wohl aber noch ziemlich alpha. Es kann gut sein, dass nach der Installation des entsprechenden Image das System erstmal nicht bootet oder im laufenden Betrieb wieder abstürzt.
Leider existieren für den Pi noch keine aktualisierten X.org-Treiber, weswegen sich das (von mir getestete Debian) System im normalen Betrieb manchmal nur recht zähflüssig bedienen lässt. Ich denke aber, dass in den kommenden Wochen hier ebenfalls eine aktualisierte Version nachgeschoben wird.

Structured Light Scanner

von Kai um 17:38 am Samstag, 10. März 2012 in Studium | 0 Kommentare

GUI der Anwendung

Auf das Bild klicken für höhere Auflösung


Im Rahmen der Veranstaltung 3D-Bildanalyse und -Synthese entstand im letzten Semester eine Anwendung für einen sogenannten Structured Light Scanner.

Der Scanner selbst besteht aus einer Kamera und einem Beamer, der auf das zu scannende Objekt mehrere Lichtstreifen projiziert. Wir hatten einen Prototypen von der Hochschule gestellt bekommen, den wir während der gesamten Projektlaufzeit benutzen konnten. Während eines Scanvorgangs wird für jedes projizierte Streifenmuster eine Fotoaufnahme des Objekts gemacht und anschließend ein Graustufenbild erzeugt, wie man es im Screenshot der GUI links oben sehen kann. Den Scanvorgang selbst kann man sich im folgenden Bild ansehen:

Kompletter Scanvorgang

Kompletter Scanvorgang

Nach dem Scan findet dann die eigentliche Rekonstruktion statt, die in unserer Implementierung abhängig von der Aufnahme zwischen 40-60 Sekunden dauert. Die gewonnenen 3D-Punkte müssen dann noch miteinander vernetzt werden. Schaut man sich das Ergebnis ohne die Vernetzung an, sieht das ungefähr so aus:

Punktwolke der Aufnahme

Punktwolke der Aufnahme

Die Rekonstruktion mit Vernetzung sieht man ebenfalls in der GUI links oben im Artikel. Insgesamt war diese Veranstaltung sicherlich eines der Highlights in diesem Semester.

Raspberry Pi Vorbestellung

von Kai um 14:08 am Mittwoch, 29. Februar 2012 in Allgemeines, Gadgets, Twitter | 5 Kommentare

Raspberry Pi Model BNachdem vor zwei Tagen auf dem offiziellen Twitter-Account von der Raspberry Pi Foundation die Freigabe für Vorbestellungen angekündigt wurde, habe ich mir (wie wohl tausend andere Bekloppte auch) heute morgen den Wecker auf sieben Uhr gestellt, um eines der ersten Modelle des Raspberry Pi vorzubestellen.
Obwohl vorher noch angekündigt wurde, dass man aufgrund des vermuteten hohen Ansturms noch vorher auf eine statische Webseite wechselt, war das Problem weniger die Erreichbarkeit der Homepage der Foundation, sondern eher die Erreichbarkeit der beiden Distributoren Premier Farnell und RS Components. Alle beiden Webshops der Firmen sind nämlich ab sieben Uhr nicht mehr erreichbar gewesen.

Als ich endlich mal durchgekommen bin, konnte man sich im Webshop von RS Components lediglich “Interesse an einem Kauf bekunden”. Die Bestellung war leider nicht möglich. Mehr Glück hatte ich auf der Farnell Seite: Ich hab bis kurz vor halb neun durchgehalten und konnte in mehreren Anläufen schließlich ein Kundenkonto eröffnen und den Raspberry Pi erfolgreich vorbestellen. Yay :)

Jetzt hoffe ich nur, dass das Teil auch schnell geliefert wird. Einen konkreten Einsatzzweck hab ich noch gar nicht, da das stark von der Leistung des Raspberrys abhängt. Ich freue mich aber jetzt schon über ein neues Spielzeug und die vielen Möglichkeiten, die sich mit so einem Taschencomputer auftun.

Android Fragments

von Kai um 10:07 am Mittwoch, 1. Februar 2012 in Android, How-To | 1 Kommentar

Gefühlte 95% aller Android Apps sind nicht für Tablets angepasst, was zur Folge hat, dass viele Apps einfach schlimm aussehen. Dabei wurde vor ziemlich genau einem Jahr eine sog. Fragment API veröffentlicht, die die Anpassung bestehender (und neuer) Apps auf Tablets einfacher gestalten soll. Ziel ist es, eine einzige APK-Datei (also App) für alle Plattformen zu bauen, um damit den Mehraufwand beispielsweise bei Aktualisierungen zu minimieren.

Da meine beiden kleinen Apps bisher ebenfalls nicht mit gutem Beispiel vorangehen, habe ich mich mal etwas näher mit der Android Fragment API beschäftigt. Die Idee dahinter ist schnell erklärt: Statt bisher einer Activity hat man nun eine FragmentActivity, die wiederum eine oder mehrere Fragments beinhaltet. Für ein Smartphone bietet sich nun an, je FragmentActivity ein Fragment darzustellen. Bereits veröffentlichte (oder geplante) Apps lassen sich damit komplett auf Fragments portieren, ohne etwas am Design, Aufbau oder der Interaktion der App etwas zu ändern. Um dieselbe App nun auf Tablets zu portieren, passt man den Aufbau der App (also die entsprechende XML-Datei der FragmentActivity) dahingehend an, dass man je nach Größe, eben zwei oder mehrere Fragments pro FragmentActivity anzeigt.

Ein häufig anzutreffendes Beispiel ist die Listenansicht innerhalb einer Activity: Klickt der Benutzer auf ein Listenelement geht eine neue Activity auf mit dem Verweis des geklickten Elements. Auf einem Tablet ist genug Platz, um neben der Liste einen Bereich anzuzeigen, der den Inhalt des aktuellen Listenelements anzeigt.

Da das Konzept von Fragments am Anfang etwas verwirrend sein kann, hab ich auf GitHub ein minimales Minimalbeispiel gebaut, was eine einfache Liste darstellt und eine zweite Ansicht mit dem Inhalt jedes Listenelement zeigt.



Weihnachtsverlosung auf linuxundich.de

von Kai um 14:48 am Donnerstag, 1. Dezember 2011 in Allgemeines | 1 Kommentar

Der Christoph von www.linuxundich.de startet auch dieses Jahr zu Weihnachten eine Weihnachtsverlosung.

Dabei hat er keine Mühen und die Sponsoren keine Kosten gescheut, um wieder eine ganze Liste an netten kleinen Geschenken zu organisieren, die unter allen Teilnehmern verlost werden.

Das “interessanteste” Geschenk dürfte hierbei sicher der Knaller-PC der Firma Cirrus7 sein. Da sich dieser Rechner ganz wunderbar auf meinem Schreibtisch machen würde, habe ich ebenfalls an der Verlosung teilgenommen und schäme mich natürlich nicht, meine Gewinnchancen zu maximieren, in dem ich diesen Blogbeitrag über die ganze Aktion hier verfasse und dabei fünf weitere Gewinnlose einheimse :)

Hier nochmal der Link zu der Aktion: http://linuxundich.de/de/allgemein/die-grose-linux-und-ich-weihnachtsverlosung-2011/

Podcast App für Android

von Kai um 19:41 am Sonntag, 23. Oktober 2011 in Android, Produktivität | 5 Kommentare

Anfang des Jahres hatte ich mir zum Ziel gesetzt eine Podcast App für Android zu schreiben, die genau so aussieht und ganz bestimmte Features hat, wie ich sie bei anderen Podcast Apps im Android Market vermisst habe. Wie das aber nun mal so ist mit Hobby-Projekten habe ich in den ersten beiden Wochen nach dem ersten Commit ca. 80% aller Features implementiert und dann erstmal wieder die Lust daran verloren. Zum einen bin ich kein Designer. Daher fällt mir die Gestaltung eines Icons für die App oder die einzelnen UI-Elemente in der App sehr schwer, zum anderen gibt es bei jedem Projekt immer Sachen, die einem mehr Spaß machen und (notwendige) andere Sachen, die man soweit nach hinten schiebt, bis das ganze Projekt hängt, weil eben gerade diese bestimmte Funktionalität noch nicht implementiert ist.

Der aktuelle Stand sieht so aus wie in den Screenshots, die ich in dem Beitrag hier verlinkt habe. Die einzelnen Podcasts besorge ich mir aus dem Miro Podcastverzeichnis, die für Drittanwendungen eine API anbieten, um auf die dort gelisteten Podcasts zuzugreifen und zu abbonieren. Im Prinzip ist die App bereits fertig und muss nur noch “rund” gemacht werden. Dazu zählt intensives Testen der Anwendung und eben die vorher erwähnte Gestaltung eines Icons und diverser UI-Elemente.

Nach meinen positiven Erfahrungen mit SparkleShare hinsichtlich kollaborativer Zusammenarbeit (Pleonasmus-Alarm) überlege ich derzeit, ob ich das Repository, was sowieso schon auf github.com liegt, nicht auch frei gebe. Bleibt für mich bloss die Frage, wer denn Lust hätte (freiwillig) sich mit UI-Design zu beschäftigen? ;-)


SparkleShare für Android

von Kai um 16:18 am Freitag, 21. Oktober 2011 in Android, News | 6 Kommentare

Nach knapp vier Wochen Entwicklungszeit (hauptsächlich Abends und am Wochenende) hab ich diese Woche zusammen mit dem Hauptentwickler von SparkleShare eine erste Version für Android geschrieben.

Was ist SparkleShare?

SparkleShare ist vergleichbar mit dem bekannteren Dropbox, also einem Onlinedienst, mit dessen Hilfe man Dateien in einen bestimmten Ordner auf seinem Computer schiebt und diese dann über mehrere Computer, Tablets und Smartphones hinweg synchronisieren kann. Der Vorteil von SparkleShare ist, dass man für die Synchronisation einen eigenen Server benutzen kann und damit (zumindest theoretisch) die volle Kontrolle über seine Daten behält.

Ich bin da der gleichen Meinung wie beispielsweise Dirk Deimeke, der gerne mal verlauten lässt, dass fremdgehostete Dienste grundsätzlich eine schlechte Idee sind. Wie man seinen eigenen Server mit SparkleShare aufsetzt wird hier näher erklärt. Die von mir geschriebene Android-App benutzt die SparkleShare-Erweiterung Dashboard. Wer also seine Dateien bequem von seinem Android-Smartphone aus durchsuchen möchte, sei ebenfalls auf ein kleines Tutorial hier verwiesen.

Damit das ganze in Zukunft einfach zu installieren und zu benutzen ist, hab ich Hylke, den Entwickler von SparkleShare, schon darauf angehauen, dass Dashboard direkt mit SparkleShare ausgeliefert wird, so dass man im Idealfall mit ein paar Befehlen auf der Kommandozeile seinen eigenen SparkleShare Server aufsetzen kann.

Objectify Update auf Version 1.2

von Kai um 19:48 am Mittwoch, 28. September 2011 in Objectify | 4 Kommentare

Seit einigen Tagen ist Objectify nun in der Version 1.2 im Android Market eingestellt.
Da ich nebenbei an meiner Bachelor-Thesis geschrieben habe, blieb nicht allzu viel Zeit übrig, alle Features zu implementieren, die ich auf meiner Liste stehen hatte. Trotzdem haben es einige (wichtige) Features in die aktuelle Version geschafft.

Exportfunktion in Version 1.2 von Objectify

Exportfunktion in Version 1.2 von Objectify

Dazu gehört zum Beispiel die Möglichkeit erstellte 3D-Modelle in das standardisierte OBJ-Format zu exportieren. Das ganze sieht dann so aus wie in dem Bild rechts.

Daneben habe ich noch die Ansicht der 3D-Modelle verbessert. Die Textur ist jetzt (bei dunklen Eingangsfotos) heller, so dass man einzelne Details besser erkennen kann. Außerdem gibt es in den Einstellungen jetzt die Möglichkeit, die Eingangsbilder zu glätten. Das führt meist zu “glätteren” Modellen, reduziert aber auf der anderen Seite die sichtbaren Details.

Das nächste Feature, was es voraussichtlich in die nächste Version 1.3 schaffen wird, ist der Import von OBJ-Dateien. Ich werde das so implementieren, dass diese Funktion dann auch anderen Apps, die auf dem Smartphone installiert sind, zur Verfügung steht. Sobald ich herausgefunden habe, welchen MIME-Type OBJ Dateien haben, kann man sich auch Modelle in diesem Format auf das Smartphone laden und dann ebenfalls mit dem in Objectify eingebauten Viewer anschauen.

Objectify

von Kai um 15:10 am Donnerstag, 18. August 2011 in Android, Objectify | 1 Kommentar

Gestern habe ich die erste Version von Objectify veröffentlicht, einen mobilen 3D-Scanner für Android Smartphones.

Die App nutzt die Frontkamera und das Display des Smartphones, um das zu fotografierende Objekt von verschiedenen Seiten zu beleuchten und aus den gewonnen Informationen die Oberflächengeometrie zu rekonstruieren.

In der ersten veröffentlichten Version lassen sich 4-9 Fotos schießen, um ein 3D-Objekt zu rekonstruieren. In den folgenden Versionen werde ich noch verschiedene Exportmöglichkeiten wie obj einbauen, um das 3D-Objekt auch mit anderen Programm öffnen zu können. Ein Export nach (animierter) Gif-Grafik steht ebenfalls auf der TODO-Liste.

Die Rekonstruktion der Oberflächengeometrie funktioniert über ein sogenanntes Photometric Stereo Verfahren und ist am besten in sehr dunklen Umgebungen. (Wer diese App also tatsächlich kaufen und ausprobieren möchte, sollte sich zuvor in einen dunklen Raum begeben, um das beste Ergebnis zu erhalten).
Auf meinem Schreibtisch liegen aber schon einige Publikationen, die dieses Verfahren auch in Echtzeit beschreiben. Das ist daher (neben den bereits beschriebenen Updates) der nächste Schritt für mich: 3D-Rekonstruktion in Echtzeit, yeah :)

Die App ist derzeit sowohl im AndroidPIT-Market, als auch im offiziellen Android-Market von Google erhältlich. Einfach auf die Badges hier klicken, um in den jeweiligen Market zu gelangen.

AndroidPIT BadgeAvailable in Android Market

Android 2.3

von Kai um 20:02 am Montag, 6. Dezember 2010 in Android, News | 0 Kommentare

Heute wurde das neue Android SDK in der Version 2.3 veröffentlicht. Ich habe mir das SDK bereits gezogen und mir die Neuerungen angeschaut. Einige werden sich sicherlich über das neue Low-Latency Audio freuen. (:-) ) Insgesamt soll Android 2.3 wohl etwas schneller sein und besser performen. Ich hab auf dem Nexus One noch keine Nachricht für ein mögliches Update bekommen, hoffe aber, dass ich das mit dem (Google) Smart- phone wieder schnell haben werde. Eine weitere Neuerung ist der DownloadManager, der mit größeren Downloads zurecht kommt. Bedeutet Downloads werden erneut angestoßen, falls was schief ging, Netzwechsel sollen (hoffentlich) kein Problem mehr sein und im Lockmodus bzw. im Hintergrund wird weiter geladen.

Ich werde das zum Anlass nehmen mich mal an einem eigenen Podcast-Client für Android zu versuchen, da alle, die ich bisher ausprobiert habe mindestens unter dem eben angesprochenen Problemen litten und daher Downloads manchmal nicht richtig klappten.
Das Programm wird dann zwar für 2.3 geschrieben und damit wohl nur auf wenigen Smartphones laufen (bisher), aber ich brauche endlich eine gute mobile Lösung um Podcasts zu hören.