C++Guns – RoboBlog blogging the bot

20.07.2009

save opengl image with opencv

Filed under: Allgemein — Thomas @ 22:07

Hier meine Lösung um opengl Bilder mit opencv abzuspeichern um darauf später ein Video zu machen. Momentan wird noch jedes einzelne Bild abgespeichert und daraus mit mencoder ein Video erzeugt, vllt. geht das ja bald mit gstreamer einfacher.

Ich hätte auch eine andere Lib nutzen können die Bilder speichern kann, aber da ich opencv sowieso in der Bildverarbeitung brauche bietet sich das an.

Der Code ist vllt. nicht so ganz sauber, aber es funktioniert. Die Datei liegt im Anhang.

saveopenglimageswithopencvcpp.zip

19.06.2009

werobot Part 1.2 Die H-Brücke

Filed under: werobot — Thomas @ 23:06

Build or buy the controller board

Nachdem nun endlich mein Oszilloskope endlich gekommen ist, habe ich mir mal die H-Brücke genauer angesehen und getestet. Eigentlich funktioniert sie perfekt. Die Mosfets schalten ordentlich durch und werden nicht warm. Keine Ahnung warum sie das letzte mal heiß wurden. Eine kalte Lötstelle gab es, aber die sollte nicht so schlimm gewesen sein.

Ich habe noch ein paar Shunt Widerstände eingebaut, damit man auch mal den Strom der Motoren messen kann, aber das ist momentan nicht weiter wichtig.

Hier ist noch der Schaltplan: http://ichlebe.aufdemmond.de/calle/h-bridge/hb_12V_10A.png

Und hier ein Video robotest1.avi

PS. Das Oszi ist toll :D

Das Oszilloskope ist da!

Filed under: Allgemein — Thomas @ 23:06

Nach 2 Monate und 8 Tage hab ich mein Oszi nun endlich bekommen. Nie wieder eBay, was da Teilweise herum läuft ist echt der Hammer. Habe dann auch gleich mein Account gekündigt.

Aber nun zum Oszi. Es ist ein Dumont 4511 50MHz mit einer Tüte voll Kabel und wahrscheinlich ist es in etwa so alt wie ich +5 Jahre. Aber es funktioniert und hat bunte Knöpfchen, mehr braucht es nicht. :)

Oszi
Tüte mit Kabel

09.06.2009

Volle Festplatte - Wo ist der Platz hin?

Filed under: Allgemein — Thomas @ 09:06

*selfnote*

Wenn die Festplatte mal wieder voll ist, frage man sich, wo denn die größten Datein liegen. MIt diesem Befehl kann man recht einfach feststelen, welches das größte Verzeichnis is.

du --max-depth=1 -h /

Eine Tiefe von 2 wäre nicht so toll, dann zeigt er auch die kleinen Unterverzeichnisse an. Besser ist es, man geht in das größte Verzeichnis rein und schaut dort nacht.

07.06.2009

Werobot

Filed under: Allgemein — Thomas @ 22:06

werobot [1] - Weekend Robotics [1] bietet Schaltpläne, Software Dokumentation von verschiedenen privaten Roboter Projekten.

Ich werde versuchen den Bau unseres Roboters an den dort vorgestellten Fahrplan zu orientieren und gleichzeitig eine kompatible Schnittstelle zu anderen Robotern offen zu halten.

ATMega8, 8MHz
12B Bleiakku

IO Map
PB0 unsused
PB1 H-Bridge, Motor 1 side A (PWM/OC1A)
PB2 H-Bridge, Motor 2 side A (PWM/OC1B)
PB3 ISP, MOSI
PB4 ISP, MISO
PB5 ISP, SCK
PB6 XTAL1
PB7 unused (XTAL2)

PC0 unused
PC1 unused
PC2 unused
PC3 unused
PC4 unused (I²C, SDA)
PC5 unused (I²C, SDL)
PC6 RESET

PD0 Serial RxD
PD1 Serial TxD
PD2 Encoder 1 Channel A
PD3 Encoder 1 Channel B
PD4 Encoder 2 Channel A
PD5 Encoder 2 Channel B
PD6 H-Bridge, Motor 1 side B
PD7 H-Bridge, Motor 2 side B

Part 1.1 Build a chassis with two motors, caster, battery, and some space for sensors and electronics

Part 1.2 Build or buy the controller board

[1] http://werobot.sf.net/

werobot Part 1.1

Filed under: Allgemein — Thomas @ 22:06

Part 1.1 Build a chassis with two motors, caster, battery, and some space for sensors and electronics

Ich möchte hier ein paar Fotos von Amee zeigen, wie sie noch mehr oder weniger im frühen Aufbau war.

Das Chassis besteht aus einem Rechtwinkligen Rahmen aus Aluminium Vierkantrohre. Vorne sind zwei Motoren mit jeweils 27W angebracht. Hinten befindet sich ein frei drehendes Stützrad

Motoren

Die Getriebe mit einer Untersetzung von 60:1 sind selbst gebaut. Die einzelnen Wellen sind mit Kugellager versehen.

Getriebe Einzeln

An der Radwelle befindet sich die selbst gefräste Encoderscheibe mit Lichtschranke.

Radencoder

Als Räder dienen Inlinescater Rollen mit selbst gefrästen Muttern. Ein Dank hier an Lötmichel.

Zwischenzeitlich wurde Amee um zwei weitere Ebenen nach oben hin erweitert. Auf der mittleren Ebene ist Raum für weitere Elektronik, wo hingegen ganz oben das Netbook seinen Platz hat.

Zwei Ebenen

17.05.2009

magisches Quadrat

Filed under: Allgemein — Thomas @ 09:05

Hab heute morgen mal schnell ein kleines c++ Progrämmchen geschrieben welches magische Quadrate [1] mit einer ungerade Seitenlänge erzeugt. Viel Spass damit.

magischesquadratcpp.gz

[1] http://de.wikipedia.org/wiki/Magisches_Quadrat

12.05.2009

chroot für den Browser

Filed under: Allgemein — Thomas @ 19:05

chroot [1] ist sozusagen der Sandkasten für nicht vertrauenswürdige Programme. Der Browser ist höchstgradig nicht vertrauenerweckend. Er steht immer im Mittelpunkt wenn mal wieder Lücken gefunden werden. Natürlich, es ist das Programm, welches am meisten Kontakt mit dem Internet hat. Und noch dazu wird durch ihn völlig fremden Code und Programme ausgeführt. Ich rede von Javascript, Java, ajax oder wie sie heutzutage alle heißen. Niemand gibt mir die Garantie, dass die zu-geladenen Programme nicht irgendetwas tun, was ich nicht will. Mir Löcher in meine Firewall schießen (UDP Hole punching) oder meine Daten durchstöbern (Bundestrojaner), oder mir mit Java und upnp auf dem Router eine Portweiterleitung einrichten.

Nun, gegen Keylogger schützt es nicht, aber ich kann die chroot Umgebung innerhalb von Minuten neu aufsetzen und so ungewollte Programme schnell loswerden.

Eigentlich alle Anleitungen für chroot waren mir zu kompliziert. Ich bevorzuge die faule Methode. Ein schlankes Debian wird in einer VM installiert, das so erzeugte Image gemountet und als chroot Umgebung verwendet. Sicher gibt es noch andere Wege, aber mir gefiel die Idee irgendwie.

Für die VM habe ich QEMU verwendet. Dazu schreibe ich jetzt keine Anleitung, es gibt sie genügend im Internet. Wichtig ist nur, dass das Image im RAW Format vorliegt, damit man es mounten kann. Und ihr solltet das Image nicht zu groß wählen. 2gb langen dicke. Das ist auch der Nachteil an meiner Methode. Sie verbraucht viel Platz. Aber ist das im Terabyte Zeitalter ein Thema?

Mit fidsk kann man sich die Partionen des Images ansehen.
#fdisk -lu browser_raw.img

Wichtig ist die Angabe für die Größe eines Sektores (512 Byte) und der Startzahl der Partion (63). 512 * 63 ergibt dann den Offset von 32256.

Als nächstes wird das Image gemountet.
# mount -o loop,offset=32256 browser_raw.img chroot/

Dann braucht es noch ein paar andere Kleinigkeiten

# mount -o bind /proc chroot/proc/
# mount -o bind /dev/ chroot/dev/
# mount -o bind /dev/pts chroot/dev/pts
# mount -o bind /tmp/ mnt/tmp/

Nun kann man die chroot betreten
# chroot chroot/ /bin/bash

Nun sollte man zum User werden und z.b. arora starten.

[1] http://de.wikipedia.org/wiki/Chroot

11.05.2009

Amee extended

Filed under: Amee — Thomas @ 09:05

Ferb, i know what we gonna do today!
Wir erweitern Amee um zwei Ebenen nach oben. Auf der untersten Ebene hat nach wie vor die Spannungsversorgung, H-Brücke und Motorkontroller platz. Auf die mittlere Ebene kommt der Servo- und Sensorkontroller. Ganz oben hat das Netbook seinen Platz.

Ein Netbook auf dem Roboter bringt einige Vorteile. Es hat eine integrierte Kamera für diverse Bildverarbeitungs Aufgaben mit genug Rechenpower. Ausreichend Speicherplatz für alle Sensordaten und abgefahrene Wege um z.b. eine "Landkarte" zu erstellen. WLAN für die Fernsteuerung und Live Kamerabild. Der Akku hält mindestens 4h und es wiegt kaum mehr als 1kg.

Alle beiden Ebenen sind seitlich auf klappbar damit man an die unten liegenden Platinen kommt. Der Aufbau hat das ganze Wochenende gedauert. Insgesamt sind jetzt mehr als 160 Schrauben, Mutter und Unterlegscheiben, und 7m Alu Profil verbaut.

Als nächstes muss ich die Akku Halterung montieren und die H-Brücke überarbeiten. Die wird aus irgendeinem Grund auch bei geringer Last ziemlich heiß.

Bilder gibts dann auch

26.04.2009

Kinderporno-Sperren jetzt erwischt es jemand anderes

Filed under: Allgemein — Thomas @ 13:04

Der Staat möchte uns überwachen, zur unserer eigenen Sicherheit natürlich. Für alle, die selbst für ihre Sicherheit sorgen wollen (traue niemanden), hier eine kurze Anleitung, wie man seine Daten verschlüsselt am Provider vorbei bringen kann. Dazu braucht es einen externen Rechner mit ssh Zugang. Mit folgenden Befehl erzeugt lokal ein Socks Proxy auf Port 7070

ssh -2 -N -l username -D7070 IP

Jetzt braucht man im Firefox unter den Proxy Einstellungen beim Socks Proxy nur noch localhost 7070 eintragen und schon wird der gesamte Verkehr via ssh verschlüsselt an den ext. Rechner übertragen.

Damit auch DNS Anfragen über ssh übertragen werden, muss man im Firefox in about:config nur den Eintrag network.proxy.socks_remote_dns auf true setzten.

Falls jetzt der Stop Filter anspricht, bekommt erstmal jemand anderes die Probleme.

PS. Möchte nicht jemand einen ausländichen Server dafür anmieten?

« Newer PostsOlder Posts »

Powered by WordPress