Benutzer-Werkzeuge

Webseiten-Werkzeuge


projektesose2016:luxo:team:dokumentation

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projektesose2016:luxo:team:dokumentation [2016/08/15 22:48]
sbien [Startseite]
projektesose2016:luxo:team:dokumentation [2016/08/25 10:30] (aktuell)
fbonowski
Zeile 1: Zeile 1:
 +
 +<note important>​
 +**Abschließende Bewertung Felix**
 +
 +Die Einleitung und die  Herleitung der Winkel mit den entsprechenden Skizzen sind super...\\
 +... allerdings ist das leider nur ein kleiner Teil dessen, was Abgedeckt werden sollte.
 +
 +Deshalb mit viel Gnade noch ein "​**Befriedigend mit Abstrichen**"​
 +
 +</​note>​
 ======Projektdokumentation====== ======Projektdokumentation======
  
Zeile 36: Zeile 46:
  
  
-==== Startseite ==== 
  
-=== Projekt LUXO ===+ 
 +====== Projekt LUXO ======
  
 //Pixar für's Wohnzimmer//​ //Pixar für's Wohnzimmer//​
Zeile 50: Zeile 60:
 //**Mit besonderem Dank an**\\ ​ //**Mit besonderem Dank an**\\ ​
 (bzw. Abgabe bei)//​\\ ​ (bzw. Abgabe bei)//​\\ ​
-Corvin Jaedicke\\ Felix Bonowski\\ ​+Corvin Jaedicke\\ Felix Bonowski\\ 
 + 
 +---- 
  
  
 +===== Hauptseite =====
  
-==== Hauptseite ==== 
 <​note>​ <​note>​
 **Kommentar Felix:** **Kommentar Felix:**
Zeile 67: Zeile 80:
 - Kilian - Kilian
  
-== Themenbeschreibung/​Einleitung ==+---- 
 +==== Themenbeschreibung/​Einleitung ​====
  
-__Aufgabenstellung ​des Robots (1/2 Seite)__ [Wird noch ausformuliert]+===Aufgabenstellung ​des Robots (1/2 Seite) [Wird noch ausformuliert]===
   * Freiheitsgrade(Bewegung):​ Kopf(rotieren,​ kippen), Arme(kippenx2)   * Freiheitsgrade(Bewegung):​ Kopf(rotieren,​ kippen), Arme(kippenx2)
   * Gesichtsverfolgung   * Gesichtsverfolgung
Zeile 77: Zeile 91:
   * (Gesten, Charakter)   * (Gesten, Charakter)
  
-__Referenz ​zu anderen, ähnlichen Arbeiten:__ \\ +===Referenz ​zu anderen, ähnlichen Arbeiten=== 
 Kleines Video von Luxos kleine Schwester Luci: [[https://​youtu.be/​dPnp3uZqJPc]]\\ ​ Kleines Video von Luxos kleine Schwester Luci: [[https://​youtu.be/​dPnp3uZqJPc]]\\ ​
 Paar Artikel zur Gestaltung und infos zur Luci : [[http://​www.kobalt-it.de/​Luci]] und [[http://​makezine.com/​2015/​08/​25/​pixar-robotic-desk-lamp/​]] Paar Artikel zur Gestaltung und infos zur Luci : [[http://​www.kobalt-it.de/​Luci]] und [[http://​makezine.com/​2015/​08/​25/​pixar-robotic-desk-lamp/​]]
-  + 
-== Methoden/​Umsetzung == +---- 
-__Baugruppen:​__+==== Methoden/​Umsetzung ​==== 
 +===Baugruppen===
   * Lampenkopf: Webcam, (Lampe)   * Lampenkopf: Webcam, (Lampe)
   * Nacken (Dualservo-Gelenk == Pan-Tilt-Servos)   * Nacken (Dualservo-Gelenk == Pan-Tilt-Servos)
Zeile 89: Zeile 104:
   * Laptop für Bildverarbeitung   * Laptop für Bildverarbeitung
  
-__Teilprobleme ​anführen [knapp]:__+===Teilprobleme ​anführen [knapp]===
   * Ermittlung der benötigten Motorkraft   * Ermittlung der benötigten Motorkraft
   * Einrichtung&​Anpassung der Gesichtserkennungsbibliothek (Processing)   * Einrichtung&​Anpassung der Gesichtserkennungsbibliothek (Processing)
Zeile 97: Zeile 112:
  
  
-__Übersprungene ​Teilprobleme:__\\ +===Übersprungene ​Teilprobleme=== 
   * Freiheitsgrad Schultergelenk (Armrotation)   * Freiheitsgrad Schultergelenk (Armrotation)
 [Platzhalter] [Platzhalter]
  
-__Skizzen/Fotos des Gesamtsystems + Beschriftungen:__\\ +===Skizzen/Fotos des Gesamtsystems + Beschriftungen=== 
 {{:​projektesose2016:​luxo:​luxo_bowdenzugmechanismus.png?​100|}} {{:​projektesose2016:​luxo:​luxo_bowdenzugmechanismus.png?​100|}}
 [Platzhalter] [!!!] [Platzhalter] [!!!]
  
-== Detaillösungen ==\\ +---- 
 +==== Detaillösungen ==== 
 [Hinweis zum Inhalt:] [Hinweis zum Inhalt:]
   [Welche besonderen technischen,​ mathematischen oder programmiererischen Anforderungen standen   [Welche besonderen technischen,​ mathematischen oder programmiererischen Anforderungen standen
Zeile 115: Zeile 131:
   oder bemaßte Pläne des Aufbaus]   oder bemaßte Pläne des Aufbaus]
  
-**Aufgabenteile** +---- 
-[Bilder und -Beschriftungen ​ausstehend]\\  +====Aufgabenteile==== 
-__Konstruktion:__ + 
-  * Ermittlung Benötigte ​Kraft +===Ermittlung der benötigten Kraft=== 
-  * Winkelberechnung ​(self-awareness)+ 
 +[ausstehend] 
 + 
 +===Self-AwarenessLuxo wird selbstbewusst=== 
 +Grundsätzlich gibt es zwei Gründe, weshalb Luxo selbst wissen muss, wo er sich im Raum befindet: 
 + 
 +1. Um sich nicht über seine mechanischen Grenzen zu bewegen, 
 + 
 +2. Um seine Haltung entsprechend der Position des Gesichts zu korrigieren. 
 + 
 +Die mechanischen Begrenzungen sind zunächst die maximalen und minimalen Anstellwinkel beider Armsegmente. Beim oberen Armsegment haben wir diese nicht weiter modifiziert,​ sie sind also noch identisch mit denen auf dem Datenblatt des Herstellers. Beim unteren Segment haben wir an beiden Enden Einschränkungen vorgenommen:​ Der Arm steht maximal fast senkrecht zum Boden, kann aber nicht in eine „Rückenlage“ gelangen. Grund dafür ist, dass der Arm nur durch die Schwerkraft und eine kleine Feder nach unten gezogen wird, während die Getriebemotoren den Arm nur nach oben ziehen können (nicht aber nach unten drücken). Aus der „Rückenlage“ würde Luxo also alleine nicht wieder herauskommen. Nach unten haben wir den Winkel auf etwa 20° zum Boden begrenzt, da die benötigte Motorkraft immer mehr zunimmt, je mehr der Arm waagerecht steht. Theoretisch hätten die Motoren wahrscheinlich genug Kraft, doch sicherheitshalber wollten wir sie nicht überlasten. 
 + 
 +Weiterhin muss Luxo aufpassen, das sein Kopf nicht auf den Boden schlägt. Die mechanischen Grenzen können das nicht verhindern, daher kommt hier etwas Code ins Spiel. Geometrisch gesehen, darf hier – da beide Armsegemente gleich lang sind – der Winkel des oberen Armsegment in negativer Richtung betragsmäßig nicht den Winkel des unteren Segments unterschreiten. Falls dies eintritt, wird ein Not-Stopp initiiert. ​(Beispiel: das untere Segment hat einen Winkel von 40° zur Horizontalen. Somit darf der Winkel des oberen Segments nicht kleiner als -40° werden.) 
 + 
 +Die Berechnung der Winkel erfolgt prinzipiell über die Encoder der Getriebemotoren. Diese zählen ab Programmstart die Umdrehungen der Motorachsen. Die letzte aktuelle Umdrehungsposition wird stets in einer Variable gespeichert. Um diese allerdings zuverlässig verwenden zu können, müssen die Encoder zu Beginn des Programms kalibriert werden, da im ausgeschalteten Zustand der Motor sich gedreht haben könnte. Zur Kalibrierung ziehen beide Motoren mit niedriger Geschwindigkeit die Sehne ein, bis die Arme an ihre mechanische Grenze stoßen. Danach wird die Umdrehungszahl auf Null gesetzt. 
 + 
 +Unter der Näherung, dass der Radius der aufgewickelten Sehne konstant bleibt, ist nun die Anzahl der Umdrehungen direkt proportional zur Länge der Sehne. Der letzte Schritt zur Umrechnung in die Winkel ist nun der Kosinussatz. Er stellt in einem beliebigen Dreieck den Bezug zwischen den drei Seitenlängen und einem Winkel her: 
 + 
 +{{ :​projektesose2016:​luxo:​ks.png?​direct&​400 |}} 
 + 
 +Zur Veranschaulichung hier eine Skizze der Dreiecke an Luxos Arm: 
 + 
 +{{ :​projektesose2016:​luxo:​luxo_-_winkelskizze.png?​direct&​600 |}} 
 + 
 +Empirisch haben wir bestimmt, dass der Motor für die 16,6 cm Sehnenlängendifferenz 6,705 Umdrehungen benötigt. Wenn man nun c in Abhängigkeit von den Umdrehungen schreibt, erhält man: 
 + 
 +{{ :​projektesose2016:​luxo:​beta.png?​direct&​500 |}} 
 + 
 +Analog gilt für den Winkel α am unteren Armsegment:​ 
 + 
 +{{ :​projektesose2016:​luxo:​alpha.png?​direct&​400 |}} 
 + 
 +(Im Code muss jedoch noch beachtet werden, dass der Arcuscosinus keinen Winkel in Grad liefert, sondern im Bogenmaß.) 
 + 
 +Neben den mechanischen Grenzen spielen die Winkel auch eine Rolle bei der Reaktion auf die Position des Gesichts. Um auf Augenhöhe des Gesichts zu gelangen, muss Luxo wissen, ob er seinen Kopf geneigt hält oder nicht. Dabei spielt nicht nur der V-Servo eine Rolle, sondern auch die Winkel am Arm. Denn die Armsegmente sind keine perfekten Parallelogramme,​ sodass sich die Haltung des Kopfes auch mit der Bewegung des Arms ändert. Empirisch haben wir folgenden Zusammenhang festgestellt:​ 
 + 
 +{{ :​projektesose2016:​luxo:​kappa.png?​direct&​300 |}} 
 + 
 +===Montage der Lampe === 
 + 
 +Servo- und Webcammontage am Kopf
  
-__Montage der Lampe:__ \\  +{{:​projektesose2016:​luxo:​20160622_163056_hdr.jpg?​400|}} 
-* Servo-, Webcammontage am Kopf\\  +{{:​projektesose2016:​luxo:​20160622_163121_hdr.jpg?​400|}} 
-{{:​projektesose2016:​luxo:​20160622_163056_hdr.jpg?​300|}} {{:​projektesose2016:​luxo:​20160622_163121_hdr.jpg?​300|}} {{:​projektesose2016:​luxo:​20160630_135934_hdr.jpg?​300|}} {{:​projektesose2016:​luxo:​20160630_135959_hdr.jpg?​300|}} +{{:​projektesose2016:​luxo:​20160630_135934_hdr.jpg?​400|}} 
 +{{:​projektesose2016:​luxo:​20160630_135959_hdr.jpg?​400|}} 
  
  
-Sehnenmontage (Winkelstück am Ellenbogen für Winkeldifferenz,​ Befestigung a.d. Motoren)\\ ​+Sehnenmontage (Winkelstück am Ellenbogen für Winkeldifferenz,​ Befestigung a.d. Motoren)\\ ​
        
-{{:​projektesose2016:​luxo:​20160608_164428_hdr.jpg?​300|}} {{:​projektesose2016:​luxo:​20160714_181022_hdr.jpg?​300|}}+{{:​projektesose2016:​luxo:​20160608_164428_hdr.jpg?​400|}} 
 +{{:​projektesose2016:​luxo:​20160714_181022_hdr.jpg?​400|}}
   ​   ​
-Endmontage (Bodenplatte,​ Kabelfixierung,​ Limit-schrauben,​ Arduino)\\ ​+Endmontage (Bodenplatte,​ Kabelfixierung,​ Limit-schrauben,​ Arduino)\\ ​
        
-{{:​projektesose2016:​luxo:​20160629_160033_hdr.jpg?​300|}} {{:​projektesose2016:​luxo:​20160630_135918_hdr.jpg?​300|}}+{{:​projektesose2016:​luxo:​20160629_160033_hdr.jpg?​400|}} 
 +{{:​projektesose2016:​luxo:​20160630_135918_hdr.jpg?​400|}}
  
-__Coding:​__\\ ​+===Coding=== ​
   * Modifizierung der Gesichtserkennung(-sbibliothek),​ Tracken des Gesichts   * Modifizierung der Gesichtserkennung(-sbibliothek),​ Tracken des Gesichts
   * Winkelberechnung   * Winkelberechnung
Zeile 144: Zeile 203:
   * Encoder verstehen, einarbeiten (self-awareness)   * Encoder verstehen, einarbeiten (self-awareness)
  
-== Unser Code ==\\ +---- 
 +==== Unser Code ==== 
 {{:​projektesose2016:​luxo:​team:​programmcode.zip|}} {{:​projektesose2016:​luxo:​team:​programmcode.zip|}}
  
-== Specsheet ==\\  +---- 
-__Liste ​der verwendeten ​Bauteile__\\ ​+====Specsheet==== 
 +===Liste ​der verwendeten ​Bauteile===
   * Schreibtischlampe incl. Federn(2)   * Schreibtischlampe incl. Federn(2)
   * Holzlatten und -Bretter für die Bodenplatte und den Standfuß   * Holzlatten und -Bretter für die Bodenplatte und den Standfuß
Zeile 154: Zeile 215:
   * Bindfaden und Lysterklemmen   * Bindfaden und Lysterklemmen
   * Servomotoren (2) Typ [Platzhalter]   * Servomotoren (2) Typ [Platzhalter]
 +  * Pan-Tilt-Halterung für die Servos
   * Getriebemotoren (2) Typ [Platzhalter]   * Getriebemotoren (2) Typ [Platzhalter]
   * Breadboards (2)   * Breadboards (2)
Zeile 162: Zeile 224:
   * [Platzhalter]   * [Platzhalter]
   * Diverse Schrauben, Muttern, Drähte, Tape und Kabelbinder   * Diverse Schrauben, Muttern, Drähte, Tape und Kabelbinder
-__Pinbelegungstabelle__+ 
 +===Pinbelegungstabelle=== 
 ^ Arduino-Pin ​ ^ Verbindung zu..                ^ ^ Arduino-Pin ​ ^ Verbindung zu..                ^
 | Pin3         | Pin A vom Encoder des Motor 1  | | Pin3         | Pin A vom Encoder des Motor 1  |
Zeile 175: Zeile 239:
 | Pin 10       | Servo V Pin (Kopf) ​            | | Pin 10       | Servo V Pin (Kopf) ​            |
  
- +---- 
-== Fazit ==+===== Fazit =====
 [Platzhalter] [Platzhalter]
 ---- ----
projektesose2016/luxo/team/dokumentation.1471294121.txt.gz · Zuletzt geändert: 2016/08/15 22:48 von sbien