Space Robot Experimental aka SpaceREx: Unterschied zwischen den Versionen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche
(Sound)
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 9: Zeile 9:
 
ROS, Python, [https://en.wikipedia.org/wiki/Differential_wheeled_robot Differialantrieb]<br>
 
ROS, Python, [https://en.wikipedia.org/wiki/Differential_wheeled_robot Differialantrieb]<br>
 
Raspberry Pi
 
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 ==
 
== Videostreaming ==
Zeile 31: Zeile 36:
 
== 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 71: Zeile 75:
 
while pygame.mixer.music.get_busy():
 
while pygame.mixer.music.get_busy():
 
   continue
 
   continue
<pre>
+
</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