Space Robot Experimental aka SpaceREx: Unterschied zwischen den Versionen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche
(Videostreaming)
 
(15 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 36: Zeile 50:
 
WebSockets<br>
 
WebSockets<br>
 
Am besten mit Python oder node.js
 
Am besten mit Python oder node.js
 +
 +
 +
=== WebSite -> Raspberry -> Arduino ===
 +
 +
[[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

Space Robot Experimental aka SpaceREx

Dieses Projekt soll das Wissen seine Mitglieder für eine allgemeine Roboterplattform bündeln.

Mitglieder: Strange Snow

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.
Steering kartesian.PNG

Schnittstellen

Raspberry und Arduino

RaspberryGPIOSerial

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.

SpaceRExStartStopScript

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