Benutzer-Werkzeuge

Webseiten-Werkzeuge


uhr2

UHR² Roboterprojekt Handbuch

UHR² universal humanoider roboter
UHR² universal humanoid robot

α-Revision 0.007
23.08.2019 © Michael Metzger

WICHTIG: Dieses Handbuch unterliegt laufend Erweiterungen und Änderungen (siehe Datum und Revisionsnummer) es ist derzeit noch eher eine Projektübersicht als eine Nachbauanleitung. Jeder von mir dokumentierte Fortschritt und/oder Änderung wurde durch Erprobung und Tests von mir selbst verifiziert. Möglicherweise funktionieren manche Beschreibungen, Teile oder Geräte trotzdem nicht wie erwartet oder auch gar nicht, vielleicht gibt es auch bessere Lösungen. Eine Haftung für die Angaben kann in keinster Weise aus dieser Dokumentation abgeleitet werden. Ein Nachbau erfolgt daher auf eigene Gefahr und eigenes Risiko!

Vorwort

UHR² ein Roboter zum Selbstbauen.
UHR² besteht aus Teilen die leicht zu beschaffen sind und wenig kosten.
UHR² kann sehen, verstehen und sprechen.
UHR² bewegt sich wie ein Mensch.

Roboter rücken in unserem Leben immer mehr in den Mittelpunkt, vor allem in technikaffinen Haushalten sind solche Helfer mittlerweile in vielfältiger Form im Einsatz. Oft ist es den Personen gar nicht bewusst welche Systeme sie täglich unterstützen. Am einfachsten ist es wohl am Smartphone zu bemerken, diese Geräte haben sich schon sehr lange einen festen Platz an unserer Seite erobert und für den ursprünglichen Zweck, der Sprachtelefonie, werden sie immer weniger verwendet. Ganze Heerscharen von APPs haben individuelle Aufgaben übernommen, sie verwalten Termine, Aufgaben und Einkaufslisten. Sie bieten raschen Zugang zum Bankkonto, verwalten Kundenkarten oder dienen als elektronische Geldbörse für Cyberwährungen - um nur einige wenige Beispiele anzuführen.
Digitale Assistenten wie Alexa Siri oder Google Home sind uns mittlerweile bekannt oder sogar schon in den eigenen vier Wänden zu Hause. Natürlich können die Fähigkeiten dieser virtuellen Assistenten ebenfalls mit Skills erweitert werden und eine Anpassung an persönliche Anforderungen des Besitzers erfolgt manuell oder aber auch oft schon durch „maschinelles Lernen“ oder „künstlicher Intelligenz“ der Geräte. Die Einfachheit der Bedienung, also der Spracheingabe trägt sicher auch bei das diese Assistenten eine so rasche Verbreitung finden. Offensichtlich ist auch die Akzeptanz mit einem elektronischen Gerät zu sprechen mittlerweile so groß das wir den Vorteil der einfachen Bedienung eines Gerätes gerne nutzen.
Der nächste Schritt kann nur sein den digitalen Assistenten aus seinem virtuellen Gefängnis zu befreien und ihm einen echten Körper in der realen Welt zu geben, damit er wie ein Mensch mit seiner Umgebung interagieren kann. Somit sind wir, ab sofort, im Zeitalter der Roboter angelangt!

Projektbeschreibung

UHR² der Roboter zum Selberbauen, ein Projekt getragen vom Open Source Gedanken der einen einfachen Zugang zur Robotertechnik bringt! Einfach und kostengünstig war und ist bei der Entwicklung des Projektes die Basis. Daher kommen bei der Entwicklung meist Open Source Programme zum Einsatz, wo das nicht möglich ist bleibt der Fokus zumindest kotenlose bzw. kostengünstige Software. Auch Hardwareteile sind Eigenkonstruktionen aus bzw. genormte Standardteile wie Schrauben, Muttern usw. Im Bereich der Elektronik und Steuerung kommen Fertigkomponenten wie der RapberryPi3, der Arduino UNO und Modellbauservos. Auch einige Hacks sind dabei wie zum Beispiel die Motoren aus einem IKEA Akkuschrauber. Alles im allem Teile die leicht und günstig zu beschaffen sind.

Da das Projekt auch einer ständigen Weiterentwicklung unterliegt ist eine genaue Baudokumentation von zentraler Bedeutung. Daher werden genaue Vorgehensweisen befolgt um eine Dokumentation der durchgeführten Veränderungen nachvollziehen zu können und die Kompatibilität der Bauteile und Software im höchsten Maße sicherzustellen. Die Bauanleitung auf www.roboterfabrik.at in der Rubrik „UHR² Handbuch“ wird diesbezüglich am aktuellen Stand gehalten und sofern man sich an diese Anleitung hält wird der Nachbau des Roboters gelingen.

Die Bauanleitung versteht sich als „Schritt für Schritt“ Anleitung und ist so aufgebaut das eine gewisse Lernkurve vorhanden ist damit gelingt der Bau auch handwerklich weniger geübten Personen. Auch kostenmäßig ist der Einstieg günstig und erst mit zunehmender Komplexität steigt auch der finanzielle Aufwand.

Der mechanische Aufbau erfolgt in einer Mischbauweise aus Holzleisten uns 3D Teilen, die erforderlichen Teile sind für die jeweilige Baugruppe mit Bezugsquellen und Preisen angegeben. Es gibt zur Übersicht auch eine komplette Einkaufsliste mit allen Teilen die zu beschaffen sind. PLA Kunststoff wurde einerseits aus Gewichtsgründen, andererseits aus Kostengründen gewählt. Die 3D Druckteile garantieren eine absolute Flexibilität in der Konstruktion bezüglich des Designs und der Anpassungsfähigkeit. Ein eigener 3D Drucker ist nicht unbedingt notwendig da man die Teile bei entsprechenden Dienstleistern drucken lassen kann bzw. sich vielleicht auch jemand in der Community findet der die Teile produziert. Sollte ein eigener 3D Drucker vorhanden sein empfiehlt sich ein Modell mit dem Teile mit den Abmaßen 200 x 200 x 200 mm.
Damit die Kosten für den (Nach)Bau eines solchen Roboters überschaubar bleiben steht die Funktionalität an erster Stelle, das Design orientiert sich daher vorrangig an der Funktion und nicht am Aussehen! Oftmals können auch, mit geringen Abänderungen, ähnliche Teile verbaut werden. Dies wird aber nur empfohlen wenn ein dementsprechendes Wissen vorhanden ist, ansonsten empfiehlt sich die Bauanleitung penibel einzuhalten. Vorschläge zur Verbesserung oder Änderung von Hard- und Software sind natürlich willkommen und werden, sofern sie eine Vereinfachung darstellen, in die laufende Dokumentation übernommen.

Verhaltenskodex
Entwickler des UHR² Open-Source-Roboters bekennen sich einheitlich zu einem Code of Conduct, um zu gewährleisten, dass jeder Einzelne gewisse Regeln in der Verantwortlichkeit und Zuverlässigkeit seiner Arbeiten befolgt. Dies vor allem deswegen notwendig, da sich die meisten Entwickler nie in ihrem Leben gesehen haben oder sehen werden.

Sei höflich
In einem Projekt wird es unvermeidlich Leute geben, mit denen Du nicht übereinstimmst oder die es schwierig finden, zusammenzuarbeiten. Akzeptiere das, aber sei trotzdem respektvoll. Uneinigkeit ist keine Entschuldigung für schlechtes Benehmen oder persönliche Angriffe, und eine Gemeinschaft, in der sich Menschen bedroht fühlen, ist keine gesunde Gemeinschaft.

Glaube an die gute Absicht
Beitragende haben viele Möglichkeiten, unser gemeinsames Ziel eines kostenlosen Robotersystems zu unterstützen. Durch verschiedenen Voraussetzungen können sich unterschiedliche Möglichkeiten ergeben. Viele unserer Mitwirkenden haben nicht Deutsch (bzw. Englisch) als Muttersprache oder unterschiedliche kulturelle Hintergründe.

Sei kollaborativ
In einem großen und komplexen Projekt gibt es immer etwas zu lernen. Es ist gut, um Hilfe zu bitten, wenn Sie es brauchen. Ebenso sollten Hilfsangebote im Zusammenhang mit unserem gemeinsamen Ziel, das Projekt zu verbessern, gesehen werden. Wenn du etwas für das Projekt machst, sei bereit, anderen zu erklären, wie es funktioniert, damit sie auf Ihrer Arbeit aufbauen können, um es noch besser zu machen. Fasse dich kurz!
Denken daran, dass das, was Du schreibst, von hunderten Personen gelesen wird. Durch das Schreiben kurzer Beiträge können die Teilnehmer die Konversation so effizient wie möglich verstehen. Wenn eine ausführliche Erläuterung erforderlich ist, solltest Du eine Zusammenfassung hinzufügen.
Versuche, einer Konversation neue Argumente hinzuzufügen, sodass jeder Beitrag dem Thread einen eindeutigen Wert hinzufügt. Beachten dabei, dass der Rest des Threads weiterhin die anderen Nachrichten mit bereits vorgenommenen Argumenten enthält. Bleibe beim Thema, immer aber besonders in Diskussionen, die bereits ziemlich groß sind.

Sei offen
Die meisten Kommunikationswege innerhalb des Projektes erlauben öffentliche und private Kommunikation. Gemäß des Verhaltenskodex sollten Sie vorzugsweise öffentliche Kommunikationsmethoden für Projektbezogene Nachrichten verwenden, es sei denn, Du veröffentlichst etwas Sensibles. Dies gilt auch für Nachrichten, für Hilfe oder Projektbezogene Unterstützung. Eine öffentliche Support-Anfrage bringt nicht nur viel eher eine Antwort auf deine Frage, sie stellt auch sicher, dass versehentliche Fehler von Personen, die deine Frage beantworten, einfacher erkannt und korrigiert werden können.

Bei Problemen
Während dieser Verhaltenskodex von den Teilnehmern eingehalten werden sollte, erkennen wir an, dass Menschen manchmal einen schlechten Tag haben oder einige der Richtlinien in diesem Verhaltenskodex nicht kennen. Wenn dies geschieht, kannst Du darauf antworten und auf diesen Verhaltenskodex hinweisen. Solche Nachrichten können öffentlich oder privat sein, was auch immer angemessen ist. Unabhängig davon, ob die Nachricht öffentlich ist oder nicht, sollte sie dennoch die relevanten Teile dieses Verhaltenskodexes einhalten. Insbesondere sollte es nicht missbräuchlich oder respektlos sein. Glaube an die gute Absicht! Es ist wahrscheinlicher, dass die Teilnehmer sich ihres schlechten Verhaltens nicht bewusst sind, als dass sie absichtlich versuchen, die Qualität der Diskussion zu verschlechtern.

Ernste oder hartnäckige User die gegen diesen Verhaltenskodex verstoßen, werden vorübergehend oder dauerhaft daran gehindert, über unsere Systeme zu kommunizieren. Beschwerden sollten (privat) an die Administratoren des betreffenden Kommunikationsforums gerichtet werden. Kontaktinformationen von den Administratoren finden Sie auf der Seite zur Organisationsstruktur. Version 1.0 wurde am 05. August 2018 ratifiziert.

Das Projekt, die Hersteller des Systems, haben einen Verhaltenskodex für die Teilnehmer aller Kommunikationsformen innerhalb des Projekts verabschiedet.

Robotergesetze

Die Asimov’schen Gesetze lauten:
1.Ein Roboter darf kein menschliches Wesen (wissentlich) verletzen oder durch Untätigkeit (wissentlich) zulassen, dass einem menschlichen Wesen Schaden zugefügt wird.
2.Ein Roboter muss den ihm von einem Menschen gegebenen Befehlen gehorchen – es sei denn, ein solcher Befehl würde mit Regel eins kollidieren.
3.Ein Roboter muss seine Existenz beschützen, solange dieser Schutz nicht mit Regel eins oder zwei kollidiert.

0 Vorbereitung

1 Hardware

1.0 Grundgerüst

1.0.0 3D Druckteile

1.0.1 Klebstoffe

1.0.2 Halbzeuge

2 Elektronik

2.0 Raspberry Pi Zero

2.0.1 Anschlüsse

2.0.2 Anschlussbelegung

2.1 Arduino

2.1.0 Technische Daten

2.1.1 Anschlussbelegung

2.2 Servos

2.2.0 Technische Daten

2.2.1 Anschlussbelegung

2.2.2 Berechnung der Servostellkraft

Berechnung / Umrechnung der Servostellkraft Die Servostellkraft, bzw. der Drehmoment, also die Kraft welcher der Servo hat um zu drehen wird meist in Ncm (Newton Centimeter) angegeben. Doch darunter können sich die wenigsten etwas vorstellen, mit der Angabe Kg/cm jedoch schon eher und die Umrechnung ist ganz einfach.
Umrechnung Ncm in Kg/cm Multipliziert einfach Ncm mit dem Faktor 0,10197 Das heißt 1 Ncm entspricht 0,10197 Kg/cm Stellkraft.

Beispiel:
Die Servostellkraft / Drehmoment wird mit 32 Ncm angegeben.
32 x 0,10197 = 3,26 Kg/cm
Umrechnung Kg/cm in Ncm Multipliziert einfach Kg/cm mit dem Faktor 9,80665 Das heißt 1 Kg/cm entspricht 9,80665 Ncm.

Beispiel:
Die Servostellkraft / Drehmoment wird mit 3,5 Kg/cm angegeben.
3,5 x 9,80665 = 34,32 Ncm
Die physikalische Formel dazu lautet: Drehmoment M = Kraft F * Kraftarm l (M = F*l)
Ncm sagt also aus, wie viel Kraft der Servo maximal hat, bei 1 cm Abstand zum Servo bzw. Drehpunkt (Länge des Servohebel bzw. Abstand zum Servo wo die Kraft benötigt wird zum Drehpunkt.) Bei 2 cm Abstand würde sich die Kraft z.B. halbieren

2.2.4 Servotestprogramm

servotest.c
// Servotestprogramm Version 1.0
// © Michael Metzger - www.roboterfabrik.at - 2019
 
#include <Servo.h> Servo myservo;     // Servo Objekt (max. 8 Servo) 
int pos = 0;                          // Variable zum Abspeichern der Servoposition 
void setup() { myservo.attach(3);     // Servoanschluss an Pin 3 (PWM) 
} 
void loop() 
{ 
for(pos = 0; pos < 180; pos += 1)    // Drehung von 0° bis 180°; in 1° Schritten 
{
// Servodrehung bis zum in Variable ‚pos‘ angegebenen Winkel (Grad) 
myservo.write(pos); 
delay(20);                           // Wartezeit wenn das Servo die Endposition erreicht hat 
} 
for(pos = 180; pos>=1; pos-= 1)      // Drehung von 0° bis 180°; in 1° Schritten 
{
 
// Servodrehung bis zum in Variable ‚pos‘ angegebenen Winkel (Grad) 
myservo.write(pos); delay(20);       // Wartezeit wenn das Servo die Endposition erreicht hat 
} 
}

2.3 Sensoren

2.3.0 Technische Daten

2.3.1 Anschlussbelegung

2.4 Kreisel

2.4.0 Technische Daten

2.4.1 Anschlussbelegung

2.5 Kameras

2.5.0 Technische Daten

2.5.1 Anschlussbelegung

2.6 Lautsprecher

2.6.0 Technische Daten

2.7 Mikrofon

2.7.0 Technische Daten

2.8 Verkabelung

2.8.0 Farben-Normierung

2.9 Akkus

2.9.0 Technische Daten

3 Entwicklungs-Software

3.0 gcc /gdb

3.0.0 Allgemein

3.0.1 Programme

3.1 Python

3.1.0 Allgemein

3.1.1 Programme

3.2 OpenSCAD

3.3 Cura

3.4 Fritzing

4 Betriebssystem

4.0 Raspbian

4.0.0 Installation ohne Tastatur und Monitor

4.0.1 Einrichtung und Konfiguration über SSH

4.0.2 Fixe IP Adressen beim RaspberryPi

4.1 Hardwaresteuerung

4.1.0 Technische Daten

4.1.1 Anschlussbelegung

4.2 UHR²'s Brain

4.2.0 Künstliche Intelligenz

4.2.1 Bildverarbeitung

4.2.3 Spracheingabe

4.2.4 Sprachausgabe

Die Sprachausgabe auf dem Raspberry pi 4 erfolgt mit dem Programm espeak über den 3.5 mm Klinkenstecker auf Aktivboxen.
Als erster Schritt werden die Aktivlautsprecher mit dem Soundausgang (Klinkenanschluss) verbunden.
Dann die Aktivlautsprecher mit dem mitgelieferten Netzgerät oder wenn die Lautsprecher über den USB-Port versorgt werden, diese mit Strom versorgen.

Danach testen wir die grundsätzliche Funktion der Soundausgabe:

aplay /usr/share/sounds/alsa/Side_Left.wav

Nach erfolgreichem Test wird das Programm eSpeak installiert:

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install espeak

Nun können wir die Sprachausgabe testen:

espeak -s 150 -vde "Dieser Text wird ausgegeben" --stdout | aplay

Das Ergebnis hört sich dann so an:


eSpeak bietet einige Einstellungsmöglichkeiten:
Option Funktion
-f TEXTDATEI
wiederzugebende Textdatei
--stdin
Text der Standardeingabe (stdin) statt einer Textdatei wiedergeben
-a WERT
Lautstärke, Werte von 0 bis 200, Standard ist 100
-s WERT
Sprechgeschwindigkeit in Wörtern pro Minute, Werte von 80 bis 450, Standard ist 175
-g WERT
Wort-Zwischenräume. Pause zwischen den Wörtern, in 10ms-Einheiten bei Standardgeschwindigkeit (siehe -s)
-p WERT
Anpassung der Tonhöhe,Werte von 0 bis 99, Standard ist 50
-k WERT
Gebe Großbuchstaben wieder: 1= Klicklaut bei einem Großbuchstaben oder zwei Klicklaute, wenn das Wort nur aus Großbuchstaben besteht, 2= dem Wort „capitals“, höherer Werte führen zu einer Erhöhung der Stimmlage (z.B. -k20)
-l WERT
Zeilenlänge. Wenn nicht 0 gesetzt ist (Standardeinstellung), werden Zeilen, die kürzer als diese Länge sind, als Phrasen-Ende betrachtet

4.3 UHR²'s Body

4.3.0 I2C Bus

4.3.1 Bewegungsabläufe

4.3.3 Gleichgewicht

4.3.4 Sensordatenverarbeitung

4.4 Arduino

4.4.0 Servo Testprogramm

5 Werkzeuge

5.0 elektrische Werkzeuge

5.1 elektronische Messgeräte

5.1.0 Multimeter

5.1.1 Labornetzgerät

5.2 Vorrichtungen

5.3 3D Drucker

6 Bezugsquellen

6.0 Stücklisten

6.0.0 Werkzeuge

6.0.1 Halbzeuge

6.0.2 Mechanische Bauteile

Materialliste Mechanische Bauteile
Stück Nummer Beschreibung Bezeichnung Bild Lieferant(en) Stückpreis (circa)
1 M0001-00----
1 M0002-00----
1 M0003-00----

6.0.3 Elektronische Bauteile

Materialliste Elektronische Bauteile
Stück Nummer Beschreibung Bezeichnung Bild Lieferant(en) Stückpreis (circa)
1 E0001-00RaspberryPi Zero WHauptrechner-
1 E0002-00RaspberryPi Zero W---
1 E0003-00RaspberryPi Zero W---

7 Pläne

Jeder Bauteil wird in der Bauanleitung mit einer Teilenummer versehen diese vierstellige Bauteilnummer wird nur einmal vergeben. Die Teilenummer hat folgenden Aufbau:
Eine einstellige Bauteilgruppe zB. [E] eine vierstellige Teilenummer [0012] und optional eine zweistellige Revisionsnummer [02]

Beispiel:
E0012-02 Bauteilgruppe E - Teilenummer 0012 - Revision 02

Diese Kennzeichnung ermöglicht ein rasches eindeutiges zuordnen des jeweiligen Bauteiles. Der Revisionskatalog gibt Auskunft zur Kompatibilität mit bereits vorhandenen Bauteilen, bzw. über die Veränderungen an dem Bauteil.
Um den Lieferanten eines Bauteils zu verifizieren wird im Bedarfsfall eine vierstellige Lieferantennummer in Klammer angegeben z.B. E0012-02 (0017) diese Angabe ist optional und der zugehörige Lieferant kann dem Lieferantenkatalog entnommen werden.

3D Bauteile in einem frühen Konstruktionsstadium (Alpha Teile) werden mit einem Kleinbuchstaben und einer Zahl (fortlaufender Revisionsnummer bezeichnet) diese Teile sind NICHT zur Produktion gedacht, sondern dokumentieren ein frühes Konstruktions- bzw. Produktionsstadium und dienen ausschließlich zu Tests. Sobald diese Teile zur Fertigung herangezogen werden, unterliegen sie den oben angeführten Richtlinen zur Teilenummerkennzeichnung.

7.0 Pläne Grundgerüst

7.0.0 Baupläne

7.0.1 Verkabelungspläne

7.0.2 elektronische Schaltpläne

8 Anhang

8.0 Linux Konsolenbefehle

8.1 Begriffe

8.2 Elektronik Einführung

8.2.1 Allgemein

8.2.2 Widerstände

Farbcodierung
Foto: www.roboterfabrik.at
Es gibt zehn international anerkannte Standardfarben, mit denen die Werte einer Reihe von elektronischen Komponenten ermittelt werden.
Jedem wird ein numerischer Wert zwischen 0 (null) und 9 (neun) in der folgenden Reihenfolge zugewiesen. schwarz, braun, rot, orange, gelb, grün, blau, violtt, grau, weiß.
Da diese am häufigsten zur Ermittlung von Widerstandswerten verwendet werden, wird dieser Farbbereich häufig (fälschlicherweise) als „Widerstandsfarbcodes“ bezeichnet.

In der Praxis werden diese auf verschiedene andere elektronische Komponenten angewendet.
Zwei andere Farben werden ebenfalls häufig verwendet. Gold und Silber, üblicherweise als Toleranzmarkierungen auf Widerständen (zusammen mit bestimmten anderen Farben), verdoppeln sich jedoch auch als Teilungsfaktormarkierungen für Widerstände unter 10 Ohm.
Ihre zugewiesenen Toleranzwerte betragen ± 5% für Gold und ± 10% für Silber. Als Teilungsfaktoren sind ihre Werte ÷ 10 bzw. ÷ 100.

8.2.3 Leuchtdioden LED

8.2.4 Dioden

8.2.5 Elektrolyt Kondensatoren ELKO

8.2.6 Transistoren NPN PNP

8.3 C Programmierung Einführung gcc/gdb

8.4 Programmierung Einführung Python3

8.5 Quellen

8.7 Archiv UHR¹

Foto: www.roboterfabrik.at

WICHTIG: UHR¹ - Dieses Projekt diente der Grundlagenforschung und die Erkenntnisse sind in das UHR² Roboterprojekt eingeflossen.
uhr2.txt · Zuletzt geändert: 2019/12/15 20:03 von Michael Metzger