Space Robot Experimental aka SpaceREx: Unterschied zwischen den Versionen
(→Schnittstellen) |
|||
(14 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Space Robot Experimental aka SpaceREx == | == Space Robot Experimental aka SpaceREx == | ||
+ | Dieses Projekt soll das Wissen seine Mitglieder für eine allgemeine Roboterplattform bündeln. | ||
+ | |||
+ | Mitglieder: | ||
+ | [[Benutzer:Strange|Strange]] | ||
+ | [[Benutzer:Snow|Snow]] | ||
+ | |||
+ | Einige Dinge sind gesetzt:<br> | ||
+ | ROS, Python, [https://en.wikipedia.org/wiki/Differential_wheeled_robot Differialantrieb]<br> | ||
+ | Raspberry Pi | ||
+ | |||
+ | == Motor Steuerung == | ||
+ | Da die normalen PWM-Pins mit einer Frequenz von 490 Hz arbeiten gibt der Motor im Betrieb störende Fiepstöne von sich. | ||
+ | Hier wird gezeigt wie man diese standard Frequenz ändern kann: [[ArduinoVariablePWMFrequenz]]. | ||
Zeile 11: | Zeile 24: | ||
[https://www.linux-projects.org/uv4l/installation/]<br> | [https://www.linux-projects.org/uv4l/installation/]<br> | ||
<br> | <br> | ||
− | Zum Verwenden die Auflösung und Qualität konfigurieren.<br> | + | Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br> |
+ | Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br> | ||
+ | Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br> | ||
+ | Sie befindet sich unter '' /etc/uv4l/uv4l-raspicam.conf ''.<br> | ||
+ | Anschließend den Service neu starten mit: '' sudo service uv4l_raspicam restart '' | ||
+ | |||
Um den mjpeg Stream in eine Webseite einzubinden einfach<br> | Um den mjpeg Stream in eine Webseite einzubinden einfach<br> | ||
''<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480">''<br> | ''<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480">''<br> | ||
einfügen. | einfügen. | ||
− | |||
− | |||
− | |||
== Steuerung == | == Steuerung == | ||
− | Hier ein JSFiddel der Zeigt wie man aus Koordinaten eines kartesischen Koordinatensystems eine Ansteuerung für zwei Räder berechnen kann.<br> | + | Hier ein [https://jsfiddle.net/strangeoptics/e8jnqkjp/13/ JSFiddel] der Zeigt wie man aus Koordinaten eines kartesischen Koordinatensystems eine Ansteuerung für zwei Räder berechnen kann.<br> |
1. Der Ursprung ist unten links. x und y der Punkt. <br> | 1. Der Ursprung ist unten links. x und y der Punkt. <br> | ||
2. Danach ist der Ursprung in die Mitte versetzt cx und cy.<br> | 2. Danach ist der Ursprung in die Mitte versetzt cx und cy.<br> | ||
3. Zum Schluss in die Ansteuerung für das linke l und rechte r Rad umgerechnet.<br> | 3. Zum Schluss in die Ansteuerung für das linke l und rechte r Rad umgerechnet.<br> | ||
− | [[File:Steering_kartesian.PNG|link=https://jsfiddle.net/strangeoptics/e8jnqkjp/]] | + | [[File:Steering_kartesian.PNG|link=https://jsfiddle.net/strangeoptics/e8jnqkjp/13/]] |
− | + | ||
== Schnittstellen == | == Schnittstellen == | ||
Zeile 41: | Zeile 55: | ||
[[DataTransferWebRaspberryArduino]] | [[DataTransferWebRaspberryArduino]] | ||
+ | |||
+ | == Sound == | ||
+ | Um auf dem Raspi über Python Sound abzuspielen gibt es [https://www.pygame.org/docs/ref/mixer.html pygame]. | ||
+ | |||
+ | Vorher muss der audio output für den Kopfhöreranschluss konfiguriert werden:<br> | ||
+ | '' amixer cset numid=3 1 '' | ||
+ | |||
+ | Freie Sound Samles gibts hier: https://freesound.org/ | ||
+ | === pygame === | ||
+ | |||
+ | pygame unterstützt keine 32-bit float WAVs. Diese müssen in signed 16-bit WAVs encodiert werden z.B. mit Audacity. | ||
+ | |||
+ | <pre> | ||
+ | import pygame | ||
+ | |||
+ | pygame.mixer.init(44100, -16, 1, 1024) | ||
+ | pygame.mixer.music.load("321967__n-audioman__sheep-bleat.wav") | ||
+ | pygame.mixer.music.play() | ||
+ | while pygame.mixer.music.get_busy(): | ||
+ | continue | ||
+ | </pre> | ||
+ | |||
+ | == Web Server == | ||
+ | |||
+ | [http://www.tornadoweb.org/en/stable/ Tornado] Python Webserver. | ||
+ | |||
+ | === Start/Stop Script === | ||
+ | |||
+ | Der Webserver braucht ein start/stop Skript und muss während des Bootens gestarted werden. | ||
+ | |||
+ | [[SpaceRExStartStopScript]] | ||
+ | |||
+ | == Links == | ||
+ | |||
+ | <b>CS235: Applied Robot Design for Non-Robot-Designers</b><br> | ||
+ | Videoaufzeichnungen es Standfordkurses der alle mechanischen Komponenten eines Roboters beleuchtet. Lager, Führungen, Riemen, Motoren, Rahmen, ...<br> | ||
+ | https://sites.google.com/site/salisburyrobotics2/home/Courses/cs235/schedule |
Aktuelle Version vom 2. November 2017, 20:23 Uhr
Inhaltsverzeichnis
Space Robot Experimental aka SpaceREx
Dieses Projekt soll das Wissen seine Mitglieder für eine allgemeine Roboterplattform bündeln.
Einige Dinge sind gesetzt:
ROS, Python, Differialantrieb
Raspberry Pi
Motor Steuerung
Da die normalen PWM-Pins mit einer Frequenz von 490 Hz arbeiten gibt der Motor im Betrieb störende Fiepstöne von sich. Hier wird gezeigt wie man diese standard Frequenz ändern kann: ArduinoVariablePWMFrequenz.
Videostreaming
Eine Übersicht einiger Videostreamingmöglichkeiten für den Raspberry. [1]
UV4L
Beispiel mit gesichtserkennung [2]
Hier wird gezeigt wie man sich die Bibliothek installiert
[3]
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.
Das kann über die Oberfläche unter Control Panel gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart
Um den mjpeg Stream in eine Webseite einzubinden einfach
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480">
einfügen.
Steuerung
Hier ein JSFiddel der Zeigt wie man aus Koordinaten eines kartesischen Koordinatensystems eine Ansteuerung für zwei Räder berechnen kann.
1. Der Ursprung ist unten links. x und y der Punkt.
2. Danach ist der Ursprung in die Mitte versetzt cx und cy.
3. Zum Schluss in die Ansteuerung für das linke l und rechte r Rad umgerechnet.
Schnittstellen
Raspberry und Arduino
Raspberry und WebSite
WebSockets
Am besten mit Python oder node.js
WebSite -> Raspberry -> Arduino
DataTransferWebRaspberryArduino
Sound
Um auf dem Raspi über Python Sound abzuspielen gibt es pygame.
Vorher muss der audio output für den Kopfhöreranschluss konfiguriert werden:
amixer cset numid=3 1
Freie Sound Samles gibts hier: https://freesound.org/
pygame
pygame unterstützt keine 32-bit float WAVs. Diese müssen in signed 16-bit WAVs encodiert werden z.B. mit Audacity.
import pygame pygame.mixer.init(44100, -16, 1, 1024) pygame.mixer.music.load("321967__n-audioman__sheep-bleat.wav") pygame.mixer.music.play() while pygame.mixer.music.get_busy(): continue
Web Server
Tornado Python Webserver.
Start/Stop Script
Der Webserver braucht ein start/stop Skript und muss während des Bootens gestarted werden.
Links
CS235: Applied Robot Design for Non-Robot-Designers
Videoaufzeichnungen es Standfordkurses der alle mechanischen Komponenten eines Roboters beleuchtet. Lager, Führungen, Riemen, Motoren, Rahmen, ...
https://sites.google.com/site/salisburyrobotics2/home/Courses/cs235/schedule