https://de.wikipedia.org/w/api.php?action=feedcontributions&feedformat=atom&user=ManuelRodriguez Wikipedia - Benutzerbeiträge [de] 2025-06-01T18:39:37Z Benutzerbeiträge MediaWiki 1.45.0-wmf.3 https://de.wikipedia.org/w/index.php?title=InMoov&diff=165264090 InMoov 2017-05-06T18:00:09Z <p>ManuelRodriguez: InMoov ist der erste humanoide OpenHardware Roboter</p> <hr /> <div>{{Infobox Roboter<br /> | Name = InMoov<br /> | Bild = InMoov Wheel 1.jpg<br /> | Bildbeschreibung = InMoov Roboter (Oberkörper) auf einer mobilen Plattform<br /> | Hersteller = Gaël Langevin<br /> | Veröffentlichung = 2012<br /> | Rechner = [[Arduino (Plattform)|Arduino Mega]]<br /> }}<br /> <br /> '''InMoov''' ist der erste humanoide [[Open-Source-Hardware|OpenHardware]] Roboter. Er wurde 2012 von Gaël Langevin erfunden und besteht aus einem bebilderten Tutorial und mehreren Dateien im Format [[STL-Schnittstelle|STL]].&lt;ref name=&quot;langevin2014inmoov&quot; /&gt; Die STL-Dateien können auf einem [[3D-Druck|3D Drucker]] in je 200 Minuten ausgedruckt werden.&lt;ref name=&quot;escriba2016inmoov&quot; /&gt; Bis man den kompletten InMoov Roboter gedruckt hat, vergehen mehrere Tage. Damit hat man nur die Plastik-Komponenten erstellt, zusätzlich werden noch weitere Bauelemente wie Arduino Boards, [[Servo|Servomotoren]] in unterschiedlicher Größe, eine Kinect Kamera sowie Angelsehne benötigt. Letztere stellt die mechanische Verbindung zwischen einem Servomotor und einem Finger her.<br /> <br /> Das InMoov Projekt gilt innerhalb der Maker-Szene als sehr anspruchsvoll.&lt;ref name=&quot;vandevelde2013overview&quot; /&gt; Nur erfahrene [[FabLab|Makerspaces]] sind dieser Aufgabe gewachsen. Als Einstieg wird empfohlen zunächst mit einem Starterkit zu beginnen wo man lediglich einen Finger druckt an den man einen Servo-Motor anschließt. Will man den ganzen Roboter drucken und bauen können erhebliche Kosten entstehen. Für die Bauteile des InMoov Roboters werden 1200 EUR veranschlagt,&lt;ref name=&quot;escriba2016inmoov&quot; /&gt; hinzu kommen die Anschaffungskosten für einen 3D Drucker von rund 1500 EUR.<br /> <br /> Was kann man mit dem Roboter konkret anfangen? Zunächst einmal steht der Lerneffekt im Vordergrund. Das heißt, man baut den Roboter um etwas über 3D Druck und Robotik zu lernen. Wenn der Roboter einmal fertig ist, kann man dort eine Software namens myrobotlab installieren und diese scripten. Die Technik dazu wurde aus dem Bereich [[Animatronic]]s übernommen und stellt verschiedene Gesten wie &quot;shake hand&quot; und &quot;move arm&quot; bereit.&lt;ref name=&quot;myrobotlab&quot; /&gt; Meist wird zur Interaktion eine Spracherkennung verwendet, man kann aber auch einen Joystick als Controller nutzen. Fortgeschrittene InMoov Projekte nutzen [[Robot Operating System|ROS]].<br /> <br /> Die Besonderheit von InMoov besteht darin, dass dort viele Dinge miteinander kombiniert werden. Zunächst einmal ist das Projekt OpenHardware. Das heißt, die Bauanleitung befindet sich zum kostenlosen Download im Internet und das [[Abspaltung_(Softwareentwicklung)|Forken]] ist vom Erfinder ausdrücklich erwünscht. Ferner benötigt man für die Servomotoren einen Arduino [[Mikrocontroller]], dadurch lernt man etwas über Systemprogrammierung. Und zu guter Letzt handelt es sich bei InMoov um eine [[Robotik]]-Anwendung, wodurch man etwas über [[Künstliche Intelligenz]] und [[Autonomer mobiler Roboter|autonome Systeme]] erfährt.<br /> <br /> == Details ==<br /> Bevor InMoov veröffentlicht wurde, gab es auch schon Bastelprojekte, die einen Roboter zum Ziel hatten. Zu nennen sind die bekannten [[Beam (Robotik)|BEAM]] Roboter von Mark W. Tilden oder Arduino-gesteuerte Roboter. Es handelte sich um kleine bewegliche Plattformen mit 2 Rädern und einem Sensor. Solche Systeme waren leicht zu bauen und konnten schnell in Betrieb genommen werden. Das InMoov System ist eine gänzlich andere Liga. Zunächst einmal ist die Anzahl der verwendeten Servos höher als bei einem einfachen Roboterarm. Und zum zweiten ist das Projekt auf die Nachbildung eines kompletten Menschen ausgerichtet. Das heißt, wie bei einer [[Schaufensterpuppe]] werden alle Bereiche wie Kopf, Hände, Arme und Torso nachgebildet. InMoov beeindruckt weniger durch besonders hochentwickelte Materialien als vielmehr durch die Idee als solche. Das man also tatsächlich einen Menschen von der Form her nachbildet. Auch das speziell geformte Gesicht trägt dazu bei, dass sich das [[Uncanny Valley]] bemerkbar macht.&lt;ref name=&quot;petriu2013bio&quot; /&gt; Es ist eben ein Unterschied, ob man einen Roboter hat, der nur 10 cm groß ist oder ob man einem lebensgroßen Roboter gegenübersteht, der noch dazu bewegliche Finger besitzt. Ein wenig wird die Begeisterung über den InMoov Roboter dadurch getrübt, dass die verwendete Software myrobotlab enttäuscht. Sie ist nicht in der Lage, die Hardware auszunutzen oder den Roboter zu intelligentem Verhalten zu motivieren. Man sieht deutlich die Beschränktheit der [[Animatronic]]s Skulptur.<br /> <br /> == Anwendungen ==<br /> Das Projekt wurde in der Öffentlichkeit weitestgehend positiv aufgenommen. Die Makerszene hat breit darüber berichtet und an mehreren Hochschulen wurden Projekte durchgeführt. Unter anderem wurde erforscht wie man [[Elektromyografie|Gehirnströme]] von einem menschlichen Probanden an eine InMoov Hand weiterleiten kann&lt;ref name=&quot;de2017biomimetics&quot; /&gt;, wie man die Finger einsetzen kann um Zeichensprache auszugeben &lt;ref name=&quot;bulgarelli2016low&quot; /&gt; und wie man Unity3D als virtuelle Umgebung nutzen kann, um Motion Controller zu entwickeln&lt;ref name=&quot;Bartneck_2015&quot; /&gt;.<br /> <br /> [[en:InMoov]]<br /> [[Kategorie:Autonomer mobiler Roboter]]<br /> [[Kategorie:Hackerkultur]]<br /> [[Kategorie:Freie Hardware]]<br /> <br /> == Einzelnachweise ==<br /> &lt;references&gt;<br /> &lt;ref name=&quot;bulgarelli2016low&quot;&gt;{{Literatur<br /> | Autor = Bulgarelli, Andrea and Toscana, Giorgio and Russo, Ludovico Orlando and Farulla, Giuseppe Airo and Indaco, Marco and Bona, Basilio<br /> | Titel = A low-cost open source 3D-printable dexterous anthropomorphic robotic hand with a parallel spherical joint wrist for sign languages reproduction<br /> | Datum = 2016<br /> | Sammelwerk = International Journal of Advanced Robotic Systems SAGE Publications Sage UK: London, England <br /> | Band = 13<br /> | Nummer = 3<br /> | Seiten = 126<br /> | DOI = 10.5772/64113<br /> | Online = http://journals.sagepub.com/doi/pdf/10.5772/64113 <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;petriu2013bio&quot;&gt;{{Literatur<br /> | Autor = Petriu, Emil M<br /> | Titel = Bio-inspired solutions for intelligent android perception and control<br /> | Datum = 2013<br /> | Sammelwerk = 2013 IEEE International Symposium on Technology and Society (ISTAS): Social Implications of Wearable Computing and Augmediated Reality in Everyday Life <br /> | Band = <br /> | Nummer = <br /> | Seiten = 18<br /> | DOI = 10.1109/istas.2013.6613096<br /> | Online = http://www.site.uottawa.ca/~petriu/istas13-BioInAndroidPercepControl-130627a.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;de2017biomimetics&quot;&gt;{{Literatur<br /> | Autor = De Haan Bosch, Lucas Enric<br /> | Titel = Biomimetics &amp; the 3D Printed Arm<br /> | Datum = 2017<br /> | Sammelwerk = UPF Polytechnic School <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = <br /> | Online = https://repositori.upf.edu/bitstream/handle/10230/30865/DeHaan_2016.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;escriba2016inmoov&quot;&gt;{{Literatur<br /> | Autor = Escriba Montagut, Gerard and others<br /> | Titel = Inmoov robot: building of the first open source 3D printed life-size robot<br /> | Datum = 2016<br /> | Sammelwerk = Universitat de Lleida<br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = <br /> | Online = http://repositori.udl.cat/bitstream/handle/10459.1/57790/gescribam.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;langevin2014inmoov&quot;&gt;{{Literatur<br /> | Autor = Langevin, G<br /> | Titel = InMoov-Open Source 3D printed life-size robot<br /> | Datum = 2014<br /> | Sammelwerk = <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = <br /> | Online = http://inmoov.fr/project/ <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;myrobotlab&quot;&gt;{{Literatur<br /> | Autor = myrobotlab<br /> | Titel = myrobotlab Scripting sourcecode<br /> | Datum = 2011<br /> | Sammelwerk = <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = <br /> | Online = https://github.com/MyRobotLab/pyrobotlab/blob/master/home/hairygael/InMoov2.full3.byGael.Langevin.1.py <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;vandevelde2013overview&quot;&gt;{{Literatur<br /> | Autor = Vandevelde, Cesar and Saldien, Jelle and Ciocci, Cristina and Vanderborght, Bram<br /> | Titel = Overview of technologies for building robots in the classroom<br /> | Datum = 2013<br /> | Sammelwerk = International Conference on Robotics in Education <br /> | Band = <br /> | Nummer = <br /> | Seiten = 122--130<br /> | DOI = <br /> | Online = https://biblio.ugent.be/publication/4177683/file/4177684 <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Bartneck_2015&quot;&gt;{{Literatur<br /> | Autor = Christoph Bartneck and Marius Soucy and Kevin Fleuret and Eduardo B. Sandoval<br /> | Titel = The robot engine - Making the unity 3D game engine work for HRI<br /> | Datum = 2015<br /> | Sammelwerk = 24th IEEE International Symposium on Robot and Human Interactive Communication (RO-MAN) IEEE <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = 10.1109/roman.2015.7333561<br /> | Online = https://www.researchgate.net/profile/Eduardo_Sandoval2/publication/280874335_The_robot_engine_-_Making_the_unity_3D_game_engine_work_for_HRI/links/569217e108aed0aed8151c59/The-robot-engine-Making-the-unity-3D-game-engine-work-for-HRI.pdf <br /> }}&lt;/ref&gt;<br /> &lt;/references&gt;</div> ManuelRodriguez https://de.wikipedia.org/w/index.php?title=Behavior_Tree&diff=162501440 Behavior Tree 2017-02-10T12:47:09Z <p>ManuelRodriguez: Neuer Artikel angelegt</p> <hr /> <div>[[File:Hierarchical Model.svg|thumb|Hierarchical Model]]<br /> '''Behavior Trees''' sind weiterentwickelte [[Endlicher Automat|Finite States Machines]] zur Steuerung von [[Computerspiel]]en. Sie wurden ab dem Jahr 2000 eingesetzt und sind fester Bestandteil in [[Gameengine]]s wie Unity3D.&lt;ref name=&quot;czarny2012entwicklung&quot; /&gt; Auch das Robotik-Framework [[Robot Operating System|ROS]] enthält die SMACH-Engine um Behavior Tree ähnliche Abläufe zu spezifizieren.&lt;ref name=&quot;Bohren2011&quot; /&gt;&lt;ref name=&quot;Nguyen2013&quot; /&gt;<br /> <br /> == Geschichte ==<br /> Die Steuerung von [[Echtzeitsystem]]en wurde traditionell in der [[Kybernetik]] diskutiert.&lt;ref name=&quot;Wiener1961&quot; /&gt; Relativ früh war klar, dass man eine Art von [[Künstliche Intelligenz]] benötigt, um Entscheidungen zu treffen. Wenn beispielsweise im Spiel [[Pong]] der Paddel bewegt wird, muss irgendwo spezifiziert sein wann das zu geschehen hat und mit welcher Intensität. Geschichtlich sind Behavior Trees aus den &quot;Hierarchical Finite State Machines&quot; hervorgegangen. Es handelt sich um [[Endlicher Automat|endliche Automaten]], die um [[Unterprogramm|Unterfunktionen]] erweitert wurden.&lt;ref name=&quot;Lim2010&quot; /&gt;&lt;ref name=&quot;klockner2013behavior&quot; /&gt;<br /> <br /> Behavior Trees in der [[Spieleprogrammierung]] kamen erstmals im Jahr 2005 in dem Ego-Shooter [[Halo 2]] zum Einsatz.&lt;ref name=&quot;gaudl2013behaviour&quot; /&gt; Zuvor wurden Vorläuferkonzepte ab den 1980'er in der Behaviorbased Robotik von [[Rodney Brooks]] verwendet.&lt;ref name=&quot;Brooks1986&quot; /&gt; Brooks war unzufrieden mit den klassischen Topdown Planungssystemen wie sie im [[PDDL]] und [[STRIPS]] Umfeld verwendet wurden, und hat eine Methode gesucht, die ohne explizites Umgebungsmodell auskommt. Während man bei PDDL zunächst die Domäne umfassend spezifiziert und darin dann mit einem [[Solver]] nach einer Aktionsfolge sucht, geht man bei der Subsumption Architektur genau umgekehrt vor: man programmiert zuerst den Roboter und schaut dann, welche Probleme damit gelöst werden können.&lt;ref name=&quot;Ouali2015&quot; /&gt;<br /> <br /> === Automatentheorie ===<br /> In der Informatik relativ gut erforscht sind Finite States Machines. Damit wird ein System so spezifiziert, dass es in genau einem Zustand sein kann. Finite States-Maschines sind deshalb so verbreitet, weil von der Hardwareseite [[Digitaltechnik|Digitalschaltungen]] nach dieser Methode aufgebaut sind. Dieses Konzept lässt sich auf Echtzeitsysteme übertragen. Man spricht dann von &quot;timed [[Automat (Informatik)|automaton]]&quot;.&lt;ref name=&quot;atterer2001hybride&quot; /&gt; Bei Behavior Trees handelt es sich um eine vereinfachte Programmiermethode. Es können ähnliche Aufgaben bewältigt werden, wie mit einer Finite State-Maschine. Der Fachbegriff lautet &quot;timed Behavior Tree&quot;, was eine [[Tautologie_(Sprache)|Tautologie]] darstellt. Behavior Trees werden ausschließlich für Echtzeitsysteme verwendet, sind also immer mit einem [[Taktgeber|Timer]] versehen.&lt;ref name=&quot;Colvin2007&quot; /&gt;<br /> <br /> == Praktische Realisierung ==<br /> In der Game-Engine [[Unity3D]] werden Behavior Trees als grafischer Prozessflow realisiert.&lt;ref name=&quot;Maggiorini2013&quot; /&gt; Der Entwickler kann mit der Maus neue Unterfunktionen einfügen und if-then-Bedingungen formulieren. Man kann Behavior Trees aber auch rein textuell in einer [[Höhere Programmiersprache|Hochsprache]] wie [[Modelica]] implementieren, sie sind dann ähnlich aufgebaut wie ein normales Computerprogramm. Inhatlich werden sie jedoch für [[Prozessrechentechnik|Prozess-Steuerungsaufgaben]] eingesetzt und erzeugen zeitlich abgestimmte Abläufe.&lt;ref name=&quot;myers2011comodeling&quot; /&gt;<br /> <br /> === Codebeispiel in Python ===<br /> &lt;syntaxhighlight lang=&quot;python&quot;&gt;<br /> class Behaviortree:<br /> def __init__(self):<br /> t = threading.Thread(target=self.taskmain)<br /> t.start()<br /> def taskmain()<br /> self.gehe_durch_tuer()<br /> time.sleep(1)<br /> self.schliesse_tuer()<br /> def gehe_durch_tuer(self):<br /> self.benutze_schluessel()<br /> self.druecke_tuerklinke()<br /> def schliesse_tuer(self):<br /> pass<br /> def benutze_schluessel(self):<br /> pass<br /> def druecke_tuerklinke(self):<br /> pass<br /> &lt;/syntaxhighlight&gt;<br /> <br /> == Weiterentwicklungen ==<br /> Es gibt Bestrebungen das ursprüngliche Behavior Tree Konzept zu erweitern. GOAP (Goal-Oriented Action Planning) ist ein Planungssystem bei dem ein Solver automatisch die passenden Einzelbefehle ermittelt.&lt;ref name=&quot;bjarnolf2008threat&quot; /&gt; Im Bereich [[Reinforcement Learning]] werden Behavior Trees durch [[Maschinelles Lernen]] erzeugt.&lt;ref name=&quot;Perez2011&quot; /&gt; Auch hier ist die Intention die manuelle Erstellung von Code zu vermeiden. In der Domäne Computerspiele sind sogenannten &quot;Behavior Objects&quot; im Gespräch, damit wird das Behavior Tree Konzept ergänzt um [[Objektorientierte Programmierung|objektorientierte]] Elemente, dass man also den Übergang vollzieht von der strukturierten Programmierung hin zur Verwendung von Klassen.&lt;ref name=&quot;cerny2016using&quot; /&gt;<br /> <br /> [[Kategorie:Computerspiel-Entwicklung]]<br /> [[Kategorie:Künstliche Intelligenz]]<br /> [[Kategorie:Automatentheorie]]<br /> [[en:Behavior tree (artificial intelligence, robotics and control)]]<br /> <br /> == Einzelnachweise ==<br /> &lt;references&gt;<br /> &lt;ref name=&quot;atterer2001hybride&quot;&gt;{{Literatur<br /> | Autor = Atterer, Richard<br /> | Titel = Hybride automaten<br /> | Datum = 2001<br /> | Sammelwerk = TU München, Hauptseminar Design hybrider, eingebetteter Systeme <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = <br /> | Online = http://ww.atterer.org/sites/atterer/files/2010-05/hauptseminar/hybride-automaten.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;bjarnolf2008threat&quot;&gt;{{Literatur<br /> | Autor = Bjarnolf, Philip and Gustavsson, Per M and Brax, Christoffer and Fredin, Mikael<br /> | Titel = Threat analysis using goal-oriented action planning<br /> | Datum = 2008<br /> | Sammelwerk = University of Skovde <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = <br /> | Online = https://www.researchgate.net/profile/Per_Gustavsson/publication/259476495_Threat_Analysis_Using_Goal-Oriented_Action_Planning/links/0c96052c05e726386f000000.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Bohren2011&quot;&gt;{{Literatur<br /> | Autor = Jonathan Bohren and Radu Bogdan Rusu and E. Gil Jones and Eitan Marder-Eppstein and Caroline Pantofaru and Melonee Wise and Lorenz Mosenlechner and Wim Meeussen and Stefan Holzer<br /> | Titel = Towards autonomous robotic butlers: Lessons learned with the {PR}2<br /> | Datum = 2011<br /> | Sammelwerk = 2011 {IEEE} International Conference on Robotics and Automation Institute of Electrical and Electronics Engineers ({IEEE}) <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = 10.1109/icra.2011.5980058<br /> | Online = http://www.meloneewise.com/wp-content/uploads/2015/08/ICRA11_1089_FI.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Brooks1986&quot;&gt;{{Literatur<br /> | Autor = R. Brooks<br /> | Titel = A robust layered control system for a mobile robot<br /> | Datum = 1986<br /> | Sammelwerk = IEEE Journal on Robotics and Automation Institute of Electrical and Electronics Engineers (IEEE) <br /> | Band = 2<br /> | Nummer = 1<br /> | Seiten = 14--23<br /> | DOI = 10.1109/jra.1986.1087032<br /> | Online = https://dspace.mit.edu/bitstream/handle/1721.1/6432/AIM-864.pdf?sequence=2 <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;cerny2016using&quot;&gt;{{Literatur<br /> | Autor = Cerny, Martin and Plch, Tomas and Marko, Matej and Gemrot, Jakub and Ondracek, Petr and Brom, Cyril<br /> | Titel = Using Behavior Objects to Manage Complexity in Virtual Worlds<br /> | Datum = 2016<br /> | Sammelwerk = IEEE Transactions on Computational Intelligence and AI in Games IEEE <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = 10.1109/tciaig.2016.2528499<br /> | Online = https://arxiv.org/pdf/1508.00377.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Colvin2007&quot;&gt;{{Literatur<br /> | Autor = Robert Colvin and Lars Grunske and Kirsten Winter<br /> | Titel = Probabilistic Timed Behavior Trees<br /> | Datum = 2007<br /> | Sammelwerk = Lecture Notes in Computer Science Springer Nature <br /> | Band = <br /> | Nummer = <br /> | Seiten = 156--175<br /> | DOI = 10.1007/978-3-540-73210-5_9<br /> | Online = http://s3.amazonaws.com/academia.edu.documents/30755716/Jim_Davies_Integrated_Formal_Methods_6_conf_IFM.pdf?AWSAccessKeyId=AKIAIWOWYYGZ2Y53UL3A&amp;Expires=1486719115&amp;Signature=dtmBFvkg8c9Hfps5Di%2FAZFJAydk%3D&amp;response-content-disposition=inline%3B%20filename%3DFinding_state_solutions_to_temporal_logi.pdf#page=164 <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;czarny2012entwicklung&quot;&gt;{{Literatur<br /> | Autor = Czarny, Damian A<br /> | Titel = Entwicklung einer Game AI zur realistischen Lasterzeugung in verteilten Massively Multiplayer Online Games<br /> | Datum = 2012<br /> | Sammelwerk = Master’s thesis, Technische Universität Darmstadt<br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = <br /> | Online = https://www.dvs.tu-darmstadt.de/publications/MScs/czarny2012msc.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;gaudl2013behaviour&quot;&gt;{{Literatur<br /> | Autor = Gaudl, Swen E and Davies, Simon and Bryson, Joanna J<br /> | Titel = Behaviour oriented design for real-time-strategy games.<br /> | Datum = 2013<br /> | Sammelwerk = FDG <br /> | Band = <br /> | Nummer = <br /> | Seiten = 198--205<br /> | DOI = <br /> | Online = http://www.cs.bath.ac.uk/~jjb/ftp/GaudlFDG13.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;klockner2013behavior&quot;&gt;{{Literatur<br /> | Autor = Klöckner, Andreas<br /> | Titel = Behavior trees for UAV mission management<br /> | Datum = 2013<br /> | Sammelwerk = INFORMATIK 2013: Informatik angepasst an Mensch, Organisation und Umwelt Köllen Druck+ Verlag GmbH, Bonn <br /> | Band = <br /> | Nummer = <br /> | Seiten = 57--68<br /> | DOI = <br /> | Online = http://elib.dlr.de/91679/1/kloeckner2013behavior.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Lim2010&quot;&gt;{{Literatur<br /> | Autor = Chong-U Lim and Robin Baumgarten and Simon Colton<br /> | Titel = Evolving Behaviour Trees for the Commercial Game DEFCON<br /> | Datum = 2010<br /> | Sammelwerk = Applications of Evolutionary Computation Springer Nature <br /> | Band = <br /> | Nummer = <br /> | Seiten = 100--110<br /> | DOI = 10.1007/978-3-642-12239-2_11<br /> | Online = http://people.csail.mit.edu/culim/lim2010evolving.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Maggiorini2013&quot;&gt;{{Literatur<br /> | Autor = Dario Maggiorini and and Laura Ripamonti and Samuele Panzeri<br /> | Titel = Follow the Leader: a Scalable Approach for Realistic Group Behavior of Roaming NPCs in MMO Games<br /> | Datum = 2013<br /> | Sammelwerk = Advances in Artificial Life, ECAL 2013 MIT Press - Journals <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = 10.7551/978-0-262-31709-2-ch101<br /> | Online = http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.458.8024&amp;rep=rep1&amp;type=pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;myers2011comodeling&quot;&gt;{{Literatur<br /> | Autor = Myers, Toby and Schamai, Wladimir and Fritzon, Peter<br /> | Titel = Comodeling revisited: Execution of behavior trees in modelica<br /> | Datum = 2011<br /> | Sammelwerk = Proceedings of the 4th International Workshop on Equation-Based Object-Oriented Modeling Languages and Tools; Zurich; Switzerland; September 5; 2011 Linköping University Electronic Press <br /> | Band = <br /> | Nummer = 056<br /> | Seiten = 97--106<br /> | DOI = <br /> | Online = http://www.ep.liu.se/ecp/056/011/ecp1105611.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Nguyen2013&quot;&gt;{{Literatur<br /> | Autor = Hai Nguyen and Matei Ciocarlie and Kaijen Hsiao and Charles C. Kemp<br /> | Titel = ROS commander (ROSCo): Behavior creation for home robots<br /> | Datum = 2013<br /> | Sammelwerk = 2013 IEEE International Conference on Robotics and Automation Institute of Electrical and Electronics Engineers (IEEE) <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = 10.1109/icra.2013.6630616<br /> | Online = https://smartech.gatech.edu/bitstream/handle/1853/49852/rosco_icra2013.pdf?sequence=1&amp;isAllowed=y <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Ouali2015&quot;&gt;{{Literatur<br /> | Autor = Lydia Ould Ouali and Charles Rich and Nicolas Sabouret<br /> | Titel = Plan Recovery in Reactive HTNs Using Symbolic Planning<br /> | Datum = 2015<br /> | Sammelwerk = Artificial General Intelligence Springer Nature <br /> | Band = <br /> | Nummer = <br /> | Seiten = 320--330<br /> | DOI = 10.1007/978-3-319-21365-1_33<br /> | Online = https://pdfs.semanticscholar.org/29bd/c17c1ec3e1ae656f07e1c67fd3888587db39.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Perez2011&quot;&gt;{{Literatur<br /> | Autor = Diego Perez and Miguel Nicolau and Michael O'Neill and Anthony Brabazon<br /> | Titel = Evolving Behaviour Trees for the Mario AI Competition Using Grammatical Evolution<br /> | Datum = 2011<br /> | Sammelwerk = Applications of Evolutionary Computation Springer Nature <br /> | Band = <br /> | Nummer = <br /> | Seiten = 123--132<br /> | DOI = 10.1007/978-3-642-20525-5_13<br /> | Online = http://researchrepository.ucd.ie/bitstream/handle/10197/3534/EvoGames2011_Perez.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Wiener1961&quot;&gt;{{Literatur<br /> | Autor = Norbert Wiener<br /> | Titel = Cybernetics, or control and communication in the animal and the machine (2nd ed.).<br /> | Datum = 1961<br /> | Sammelwerk = American Psychological Association (APA) <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | DOI = 10.1037/13140-000<br /> | Online = https://catalog.hathitrust.org/Record/000468497 <br /> }}&lt;/ref&gt;<br /> &lt;/references&gt;</div> ManuelRodriguez https://de.wikipedia.org/w/index.php?title=Shadow_Robot_Company&diff=161940161 Shadow Robot Company 2017-01-24T06:26:14Z <p>ManuelRodriguez: Ergänzung zu Firma und Produkt</p> <hr /> <div>[[Bild:Shadow Hand Bulb large Alpha.png|thumb|right|150px|Roboterhand von ''Shadow''&lt;br /&gt;&lt;small&gt;Die Hand wird mit künstlicher Muskulatur in 24 Freiheitsgraden bewegt.&lt;/small&gt;]]<br /> '''Shadow Robot Company''' ist ein Hersteller von [[Automatisierungstechnik]] aus [[London]]. Das Unternehmen entwickelt seit 1987&lt;ref name=&quot;shadow&quot;&gt;[http://www.shadowrobot.com/ http://www.shadowrobot.com] − Website von ''Shadow Robot Company''&lt;/ref&gt; Komponenten für [[Roboter]] und [[künstliche Muskulatur]]. Es hat 12 Angestellte und erzielt einen Jahresumsatz von 350000 Pfund.&lt;ref name=&quot;forge2013comparing&quot; /&gt;<br /> <br /> Das bekannteste Produkt von ''Shadow'' ist die sogenannte ''Dextrous Hand'', eine Robotikkomponente, die der menschlichen Hand nachempfunden ist. Die Hand wird von 40 künstlichen Muskeln in 24 [[Freiheitsgrad]]en bewegt. Sie hat ein Gewicht von 4,2 kg, eine Länge von 45 cm und wird mit [[Pneumatischer Muskel|pneumatischen Muskeln]] angetrieben&lt;ref name=&quot;scharfe2010physikbasierter&quot; /&gt;. Genauer gesagt von dem &quot;J.L. McKibben Air muscle&quot;, welcher 1950 erfunden wurde.&lt;ref name=&quot;wenzlaff2012entwurf&quot; /&gt; Eingesetzt wird sie von der [[NASA]]&lt;ref name=&quot;forge2013comparing&quot; /&gt;, [[Asea Brown Boveri|ABB]], der [[Universität Bielefeld]], der [[Universität Hamburg]]&lt;ref&gt;http://tams-www.informatik.uni-hamburg.de/projects/handle/&lt;/ref&gt; und der [[Carnegie Mellon University]] in [[Pittsburgh]], Pennsylvania.&lt;ref name=&quot;shadow&quot; /&gt; Unter der Bezeichnung &quot;C6M Robotic Hand&quot; wird das Produkt für 190000 US$ verkauft.&lt;ref name=&quot;vin2013robotic&quot; /&gt;<br /> <br /> Ab 1988 wurde der humanoide Laufroboter &quot;Shadow Biped Walker&quot; entwickelt, der mittlerweile eingestellt wurde.&lt;ref name=&quot;andrikopoulos2011survey&quot; /&gt;<br /> <br /> == Weblinks ==<br /> * [http://www.shadowrobot.com/ http://www.shadowrobot.com] − Website von ''Shadow Robot Company''<br /> <br /> == Einzelnachweise ==<br /> &lt;references&gt;<br /> &lt;ref name=&quot;andrikopoulos2011survey&quot;&gt;{{Literatur<br /> | Autor = Andrikopoulos, Georgios and Nikolakopoulos, Georgios and Manesis, Stamatis<br /> | Titel = A survey on applications of pneumatic artificial muscles<br /> | Datum = 2011<br /> | Sammelwerk = Control &amp; Automation (MED), 2011 19th Mediterranean Conference on IEEE <br /> | Band = <br /> | Nummer = <br /> | Seiten = 1439--1446<br /> | Online = https://www.researchgate.net/profile/George_Andrikopoulos/publication/259310538_A_Survey_on_applications_of_Pneumatic_Artificial_Muscles/links/55a969f108ae481aa7f985c1.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;forge2013comparing&quot;&gt;{{Literatur<br /> | Autor = Forge, Simon and Blackman, Colin and Goldberg, Itzhak and Biagi, Federico and others<br /> | Titel = Comparing Innovation Performance in the EU and the USA: Lessons from Three ICT Sub-Sectors<br /> | Datum = 2013<br /> | Sammelwerk = Joint Research Centre (Seville site)<br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | Online = http://ftp.jrc.es/EURdoc/JRC81448.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;scharfe2010physikbasierter&quot;&gt;{{Literatur<br /> | Autor = Scharfe, Hanno<br /> | Titel = Physikbasierter Simulator für Greif-und Manipulationsverfahren mit Mehrfinger-Roboterhänden<br /> | Datum = 2010<br /> | Sammelwerk = Diploma thesis, University of Hamburg<br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | Online = https://tams-www.informatik.uni-hamburg.de/paper/2010/DA_Scharfe.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;vin2013robotic&quot;&gt;{{Literatur<br /> | Autor = Vin, Jerry<br /> | Titel = Robotic fingerspelling hand for the deaf-blind<br /> | Datum = 2013<br /> | Sammelwerk = California Polytechnic State University San Luis Obispo<br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | Online = http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=2179&amp;context=theses <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;wenzlaff2012entwurf&quot;&gt;{{Literatur<br /> | Autor = Wenzlaff, Soeren<br /> | Titel = Entwurf und Bau eines autofahrenden Roboters<br /> | Datum = 2012<br /> | Sammelwerk = Freie Universität Berlin, Diplomarbeit <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | Online = http://www.inf.fu-berlin.de/inst/ag-ki/rojas_home/documents/Betreute_Arbeiten/Diplomarbeit_Wenzlaff.pdf <br /> }}&lt;/ref&gt;<br /> &lt;/references&gt;<br /> <br /> [[Kategorie:Robotikhersteller]]<br /> [[Kategorie:Unternehmen (London Borough of Haringey)]]</div> ManuelRodriguez https://de.wikipedia.org/w/index.php?title=Aibo&diff=161421069 Aibo 2017-01-08T12:11:01Z <p>ManuelRodriguez: Abschnitt Tekkotsu Robotics Framework</p> <hr /> <div>[[File:Aibo-DASA.JPG|thumb|Roboterhund Aibo in der [[DASA – Arbeitswelt Ausstellung]].]]<br /> <br /> '''AIBO''' – was sowohl das japanische Wort für „Partner“ bedeutet als auch als Abkürzung für '''A'''rtificial '''I'''ntelligence ro'''BO'''t verstanden werden kann – ist ein Unterhaltungsroboter, der vom japanischen Elektronik-Konzern [[Sony]] als Spielzeug entwickelt wurde. Mit dem Aibo leistete Sony Pionierarbeit für die Einführung von Robotern in Haushalte. Insgesamt wurden mehr als 150.000 Aibos verkauft.<br /> <br /> Am 26. Januar 2006 gab Sony die Einstellung der Aibo-Entwicklung und Produktion aufgrund einer Umstrukturierung des Konzerns bekannt.&lt;ref&gt;[https://www.heise.de/newsticker/meldung/Sony-schlaefert-Aibo-ein-169676.html heise.de: ''Sony schläfert Aibo ein'']&lt;/ref&gt; Der Kundendienst und die Versorgung mit Ersatzteilen wurde von Sony noch für 7 Jahre nach dem Produktionsende eines Aibo-Modells garantiert&lt;ref&gt;[http://services.sony.co.uk/support/aibo/4_0_support_breakdown.asp ''Kundendienst Modell für Modell'']&lt;/ref&gt;. Für das letzte Modell ERS-7M3 endete dieser Zeitraum im März 2013.<br /> <br /> == Eigenschaften ==<br /> [[Datei:Aibos playing football at Robocup 2005.jpg|mini|rechts|Aibos beim Robocup 2005]]<br /> Aibo nimmt Informationen über seine Umgebung mittels einer Kamera, Mikrofonen und in begrenztem Umfang auch taktiler Rückmeldungen wahr. Diese Informationen werden in einem internen Computer verarbeitet. Die Ausgabe dieses Computers besteht im Auslieferungszustand in einer Imitation von [[Haushund]]-typischem Verhalten, wie vierbeinigem Gang, nonverbale Kommunikation durch Bewegung von Ohren und Schwanz, auf-dem-Boden-wälzen etc. Darüber hinaus gibt es eine Ton- bzw. Sprachausgabe sowie Leuchtdioden, die die simulierte „Stimmung“ des Geräts direkt anzeigen. Die 2006 erschienene Software „Mind 3“ erlaubt Aibo, seine selbst gemachten Bilder täglich im Internet zu veröffentlichen (Robo[[blog]]).<br /> <br /> Eine wesentliche Eigenschaft der Aibos ist, dass sie über eine durch Sony definierten Schnittstelle (OPEN-R) von Grund auf selbst programmiert werden können. Während Sony fortgeschrittenen Heimanwendern vorschlug, auf diese Weise neue „Hunde-Persönlichkeiten“ zu entwickeln, ist sie auch im akademischen Bereich von Interesse. Serien-Aibos, die auf diese Weise neu programmiert wurden, traten bis 2008 in einer eigenen Klasse des [[Robocup]]s ([[Roboterfußball]]-WM) gegeneinander an.<br /> <br /> == Modelle ==<br /> 1999 wurde die erste Aibo-Serie, Modell ERS 110, über das [[Internet]] angeboten. Trotz des relativ hohen Preises (ca. 2500&amp;nbsp;€) waren die 3000 vorgehaltenen Exemplare in Japan innerhalb von 18 Minuten ausverkauft, die 2000 Exemplare in den USA innerhalb von vier Tagen.<br /> <br /> Kurz darauf erschien der minimal technisch und optisch veränderte ERS 111, der in einer Stückzahl von nur 20.000 und nur per Losverfahren zu bekommen war.<br /> <br /> Das nächste Modell, der ERS 210, wurde zum größten Aibo-Erfolg, später erschien noch der ERS 210A, der einen schnelleren Prozessor und einen verbesserten Hals besaß. Auch der ERS 220 war später als A-Modell erhältlich. Es folgten die Modelle ERS 311 (Latte) und ERS 312 (Macaron).<br /> <br /> Der Aibo 210 und der Aibo ERS 220 waren in unbegrenzter Stückzahl erhältlich. Der ERS 220 hat als Besonderheiten eine ausfahrbare Lampe im Kopf und rote und blaue [[LED]]s im Gesicht.<br /> <br /> Weitere drei Serien (u.&amp;nbsp;a. ERS 31X) wurden hauptsächlich für den asiatischen Markt entwickelt.<br /> <br /> Seit 1999 hatte für einige Jahre eine kontinuierliche Weiterentwicklung stattgefunden. Das letzte Modell war der Aibo ERS 7M3, der im Oktober 2005 auf den Markt kam und für 2099&amp;nbsp;€ verkauft wurde.<br /> <br /> == Tekkotsu Robotics Framework ==<br /> Das ''Tekkotsu Robotics Framework'' ist eine Software aus dem Bereich der kognitiven Robotik&lt;ref name=touretzky2005tekkotsu /&gt;. Sie wurde ab 2005 an der [[Carnegie Mellon University]] entwickelt und kam im Umfeld des [[RoboCup]] Wettbewerbes zum Einsatz&lt;ref name=Voigt2005 /&gt;&lt;ref name=tejada2003virtual /&gt;. Ursprünglich wurde das Tekkotsu Robotics Framework für den AIBO Roboterhund entwickelt und später auf weitere Robotertypen adaptiert. Seit 2010 wird die Software nicht mehr weiterentwickelt&lt;ref name=Tira-Thompson2010 /&gt;.<br /> <br /> Bestandteile des Frameworks sind:<br /> * [[RRT]] Pfadplanner&lt;ref name=watson2011navigating /&gt;<br /> * 3D Simulator, genannt &quot;Mirage&quot;&lt;ref name=tira2009ambulatory /&gt;<br /> * Unterfunktionen um [[Motion Primitive]] zu verwalten&lt;ref name=tira2004tekkotsu /&gt;<br /> * sowie Vision, inverse Kinematik und [[Simultaneous Localization and Mapping|Kartenerstellung]] (mapping)&lt;ref name=Tira-Thompson2010 /&gt;<br /> <br /> Die Programmierung erfolgt &quot;behavior based&quot;, besser bekannt als &quot;reaktives Paradigma&quot; oder Subsumption Architektur. Eine neues &quot;Behavior [[Objekt (Programmierung)|Objekt]]&quot; wird von einer bestehenden [[C++]] Klasse [[Vererbung (Programmierung)|abgeleitet]] und mit weiteren Methoden und Eigenschaften ergänzt.&lt;ref name=weinberg2008making /&gt; Die Verwendung von [[Unified Modeling Language|UML]] erleichtert die Modellierung&lt;ref name=garousi2010experience /&gt;.<br /> <br /> == Siehe auch ==<br /> Neben Aibo wurde von Sony auch der [[humanoid]]e Roboter [[Qrio]] entwickelt.<br /> <br /> == Einzelnachweise ==<br /> &lt;references&gt;<br /> &lt;ref name=&quot;tira2009ambulatory&quot;&gt;{{Literatur<br /> | Autor = Tira-Thompson, Ethan<br /> | Titel = Ambulatory Manipulation<br /> | Datum = 2009<br /> | Sammelwerk = <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | Online = http://ethan.tira-thompson.com/proposal/proposal_ejt.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;garousi2010experience&quot;&gt;{{Literatur<br /> | Autor = Garousi, Vahid<br /> | Titel = Experience in Developing a Robot Control Software<br /> | Datum = 2010<br /> | Sammelwerk = Computer and Information Science <br /> | Band = 4<br /> | Nummer = 1<br /> | Seiten = 3<br /> | Online = http://www.ccsenet.org/journal/index.php/cis/article/viewFile/8253/6463 <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Voigt2005&quot;&gt;{{Literatur<br /> | Autor = Voigt, Michael<br /> | Titel = Inbetriebnahme sowie Untersuchung einer kommerziellen Roboterplattform<br /> | Datum = 2005<br /> | Sammelwerk = Technische Universität Dresden Studienarbeit <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | Online = http://www.tekkotsu.org/media/Voigt-Studienarbeit.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;weinberg2008making&quot;&gt;{{Literatur<br /> | Autor = Weinberg, Jerry B and Yu, William and Wheeler-Smith, Kim and Knight, Robin and Mead, Ross and Berstein, Ian and Croxell, Jeff and Webster, Doug<br /> | Titel = Making intelligent walking robots accessible to educators: A brain and sensor pack for legged mobile robots<br /> | Datum = 2008<br /> | Sammelwerk = The 2008 Association for the Advancement of Artificial Intelligence (AAAI-08) Workshop on AI Education <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | Online = http://www.aaai.org/Papers/Workshops/2008/WS-08-02/WS08-02-016.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;watson2011navigating&quot;&gt;{{Literatur<br /> | Autor = Watson, Owen Paul and Touretzky, David S<br /> | Titel = Navigating with the Tekkotsu Pilot.<br /> | Datum = 2011<br /> | Sammelwerk = FLAIRS Conference <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | Online = http://www.aaai.org/ocs/index.php/FLAIRS/FLAIRS11/paper/download/2649/3113/ <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Tira-Thompson2010&quot;&gt;{{Literatur<br /> | Autor = Ethan Tira-Thompson<br /> | Titel = Tekkotsu Website<br /> | Datum = 2010<br /> | Sammelwerk = <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | Online = http://www.tekkotsu.org <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;touretzky2005tekkotsu&quot;&gt;{{Literatur<br /> | Autor = Touretzky, David S and Tira-Thompson, Ethan J<br /> | Titel = Tekkotsu: A framework for AIBO cognitive robotics<br /> | Datum = 2005<br /> | Sammelwerk = Proceedings of the National Conference on Artificial Intelligence Menlo Park, CA; Cambridge, MA; London; AAAI Press; MIT Press; 1999 <br /> | Band = 20<br /> | Nummer = 4<br /> | Seiten = 1741<br /> | Online = http://www.aaai.org/Papers/Workshops/2005/WS-05-11/WS05-11-013.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;tira2004tekkotsu&quot;&gt;{{Literatur<br /> | Autor = Tira-Thompson, Ethan<br /> | Titel = Tekkotsu: A rapid development framework for robotics<br /> | Datum = 2004<br /> | Sammelwerk = Citeseer <br /> | Band = <br /> | Nummer = <br /> | Seiten = <br /> | Online = http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.67.5731&amp;rep=rep1&amp;type=pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;tejada2003virtual&quot;&gt;{{Literatur<br /> | Autor = Tejada, Sheila and Cristina, Andrew and Goodwyne, Priscilla and Normand, Eric and O'Hara, Ryan and Tarapore, Shahrukh<br /> | Titel = Virtual Synergy: A Human-Robot Interface for Urban Search and Rescue.<br /> | Datum = 2003<br /> | Sammelwerk = Aaai mobile robot competition <br /> | Band = <br /> | Nummer = <br /> | Seiten = 13--19<br /> | Online = http://www.aaai.org/Papers/Workshops/2003/WS-03-01/WS03-01-004.pdf <br /> }}&lt;/ref&gt;<br /> &lt;/references&gt;<br /> <br /> == Weblinks ==<br /> {{Commonscat}}<br /> * [http://c-p-scholtz.de/Und_taeglich_gruesst_der_Roboter.pdf Und täglich grüßt der Roboter] - Kulturwissenschaftliche Überlegungen zu Aibo (PDF-Datei; 122&amp;nbsp;kB)<br /> * [http://www.aibobar.de/ Aibo-Bar] - Deutschsprachige Aibo-Fanseite mit Aibo-Wissensdatenbank<br /> * [http://www.aibo-freunde.de/ Aibo-Freunde] - Deutschsprachiges Aibo Forum mit Informationen rund um Aibo<br /> <br /> [[Kategorie:Autonomer mobiler Roboter]]<br /> [[Kategorie:Sony]]<br /> [[Kategorie:Spielzeugroboter]]</div> ManuelRodriguez https://de.wikipedia.org/w/index.php?title=Vererbung_(Programmierung)&diff=161388946 Vererbung (Programmierung) 2017-01-07T13:10:04Z <p>ManuelRodriguez: Neuer Abschnitt Multilevel-Vererbung</p> <hr /> <div>[[Datei:InheritancePgmUML.svg|hochkant=1.1|miniatur|Vererbung dargestellt mittels [[Unified Modeling Language|UML]]. Die abgeleitete Klasse hat die [[Attribut (UML)|Attribute]] x und y und verfügt über die Methoden a und b (im UML-Sprachgebrauch [[Operation (UML)|Operationen]] a und b).]]<br /> <br /> Die '''Vererbung''' ({{enS|''inheritance''}}) ist eines der grundlegenden Konzepte der [[Objektorientierung]] und hat große Bedeutung in der [[Softwareentwicklung]]. Die Vererbung dient dazu, aufbauend auf existierenden [[Klasse (Programmierung)|Klassen]] neue zu schaffen, wobei die Beziehung zwischen ursprünglicher und neuer Klasse dauerhaft ist. Eine neue Klasse kann dabei eine Erweiterung oder eine Einschränkung der ursprünglichen Klasse sein. Neben diesem konstruktiven Aspekt dient Vererbung auch der Dokumentation von Ähnlichkeiten zwischen Klassen, was insbesondere in den frühen Phasen des [[Softwareentwurf]]s von Bedeutung ist. Auf der Vererbung basierende Klassenhierarchien spiegeln strukturelle und verhaltensbezogene Ähnlichkeiten der Klassen wider.<br /> <br /> Die vererbende Klasse wird meist ''[[Basisklasse]]'' (auch ''Super''-, ''Ober''- oder ''Elternklasse'') genannt, die erbende ''[[abgeleitete Klasse]]'' (auch ''Sub''-, ''Unter''- oder ''Kindklasse''). Den Vorgang des Erbens nennt man meist ''Ableitung'' oder ''Spezialisierung'', die Umkehrung hiervon ''[[Generalisierung (UML)|Generalisierung]]'', was ein vorwiegend auf die [[Modellierungssprache|Modellebene]] beschränkter Begriff ist. In der [[Unified Modeling Language]] (UML) wird eine Vererbungsbeziehung durch einen Pfeil mit einer dreieckigen Spitze dargestellt, der von der abgeleiteten Klasse zur Basisklasse zeigt. Geerbte [[Attribut (Objekt)|Attribute]] und [[Methode (Programmierung)|Methoden]] werden in der Darstellung der abgeleiteten Klasse nicht wiederholt.<br /> <br /> In der Programmiersprache [[Simula]] wurde 1967 die Vererbung mit weiteren Konzepten [[Objektorientierte Programmierung|objektorientierter Programmierung]] erstmals eingeführt.&lt;ref&gt;[[Ole-Johan Dahl]], [[Kristen Nygaard]]: ''Class and Subclass Declarations''. In: J. N. Buxton (Hrsg.): ''Simulation Programming Languages''. Proceedings of the IFIP working conference on simulation programming languages, Oslo, Mai 1967 North-Holland, Amsterdam, 1968, Seite 158–174 ([http://www.informatik.uni-bonn.de/~manthey/SS06/Quellen/Dahl_hist.pdf online]; PDF; 693&amp;nbsp;kB)&lt;/ref&gt; Letztere hat seitdem in der Softwareentwicklung wichtige neue Perspektiven eröffnet und auch die [[komponentenbasierte Entwicklung]] ermöglicht.<br /> <br /> Abgeleitete Klasse und Basisklasse stehen typischerweise in einer „ist-ein“-Beziehung zueinander.<br /> Klassen dienen der Spezifikation von Datentyp und Funktionalität, die beide vererbt werden können.<br /> Einige Programmiersprachen trennen zumindest teilweise zwischen diesen Aspekten und unterscheiden zwischen [[Schnittstelle (Objektorientierung)|Schnittstelle]] (engl. ''Interface'') und Klasse.<br /> Wenn eine abgeleitete Klasse von mehr als einer Basisklasse erbt, wird dies [[Mehrfachvererbung]] genannt. Mehrfaches Erben ist nicht bei allen Programmiersprachen möglich, bei manchen nur in eingeschränkter Form.<br /> <br /> == Beispiel ==<br /> [[Datei:InheritancePgmExample.svg|miniatur|hochkant=2.5|Beispielhaftes [[Klassendiagramm]] ([[Unified Modeling Language|UML]])]]<br /> <br /> Das folgende Beispiel stellt einen möglichen Ausschnitt aus dem [[Problemdomäne|Anwendungsgebiet]] der Unterstützung eines [[Autovermietung|Fahrzeugverleihs]] dar. Die Basisklasse &lt;code&gt;Fahrzeug&lt;/code&gt; enthält die Attribute &lt;code&gt;Fahrzeugnummer&lt;/code&gt;, &lt;code&gt;Leergewicht&lt;/code&gt; und &lt;code&gt;ZulässigesGesamtgewicht&lt;/code&gt;. Die Spezialisierungen &lt;code&gt;[[Kraftfahrzeug]]&lt;/code&gt; und &lt;code&gt;[[Fahrrad]]&lt;/code&gt; ergänzen weitere Attribute zu den von der Basisklasse geerbten Gewichtsangaben und der [[Identifikator|identifizierenden]] Fahrzeugnummer. In jedem Objekt der Klasse &lt;code&gt;Kraftfahrzeug&lt;/code&gt; werden also die Attribute &lt;code&gt;Fahrzeugnummer&lt;/code&gt;, &lt;code&gt;Leergewicht&lt;/code&gt;, &lt;code&gt;ZulässigesGesamtgewicht&lt;/code&gt;, &lt;code&gt;Höchstgeschwindigkeit&lt;/code&gt; und &lt;code&gt;Leistung&lt;/code&gt; gespeichert. In der Klasse &lt;code&gt;Fahrzeug&lt;/code&gt; gibt es die Methode &lt;code&gt;PruefeVerfuegbarkeit&lt;/code&gt;, die unter Verwendung der &lt;code&gt;Fahrzeugnummer&lt;/code&gt; die Verfügbarkeit eines bestimmten Fahrzeugs ermittelt, beispielsweise durch einen [[Datenbank]]zugriff. Diese Methode wird von allen Spezialisierungen geerbt und ist somit für diese ebenfalls nutzbar. Dasselbe gilt auch dann, wenn nachträglich eine weitere Methode in der Klasse &lt;code&gt;Fahrzeug&lt;/code&gt; ergänzt wird, beispielsweise eine Methode &lt;code&gt;HatNavigationssystem&lt;/code&gt;, wenn ein Teil der Fahrzeuge mit [[Navigationssystem]]en ausgestattet wird.<br /> <br /> In der Klasse &lt;code&gt;Kraftfahrzeug&lt;/code&gt; wird die [[Methode (Programmierung)|Methode]] &lt;code&gt;PrüfeFahrerlaubnis&lt;/code&gt; eingeführt. Diese Methode soll bei Übergabe einer konkreten [[Fahrerlaubnis]] ermitteln, ob das durch ein Objekt dieser Klasse repräsentierte Fahrzeug mit dieser Fahrerlaubnis geführt werden darf.&lt;ref group=&quot;A&quot;&gt;Die Modellierung dient hier nur zur Veranschaulichung. Beispielsweise wären Attribute wie Antriebsart, Hubraum und ob ein Anhänger mitgeführt wird in einem realitätsnahen System ebenfalls zu berücksichtigen.&lt;/ref&gt; Die Fahrerlaubnis könnte länderspezifisch sein, zudem müssen die Länder berücksichtigt werden, in denen das Kraftfahrzeug betrieben werden soll. Auf Basis der Attribute &lt;code&gt;Höchstgeschwindigkeit&lt;/code&gt; und &lt;code&gt;Leistung&lt;/code&gt; können möglicherweise bereits in der Klasse &lt;code&gt;Kraftfahrzeug&lt;/code&gt; einige Implementierungen vorgenommen werden, wenn für alle betreibbaren Fahrzeuge eines Landes die Eignung der Fahrerlaubnis bereits anhand des [[Zulässige Gesamtmasse|zulässigen Gesamtgewichts]], der Höchstgeschwindigkeit und der Leistung entscheidbar ist. Viele Fälle sind aber erst auf Ebene der Spezialisierungen &lt;code&gt;[[Motorrad]]&lt;/code&gt;, &lt;code&gt;[[Personenkraftwagen|PKW]]&lt;/code&gt; und &lt;code&gt;[[Lastkraftwagen|LKW]]&lt;/code&gt; entscheidbar, so dass diese Methode in diesen Klassen [[Überschreiben (OOP)|überschrieben]] werden muss. Beispielsweise ist die Anzahl der Sitzplätze des Kraftfahrzeugs in manchen Fällen zu berücksichtigen.<br /> <br /> [[Datei:InheritancePgmExampleMemory.png|miniatur|links|Schematisches Speicherabbild eines Objekts der Klasse &lt;code&gt;PKW&lt;/code&gt;]]<br /> Innerhalb eines dieses Modell implementierenden [[Anwendungsprogramm]]s würde zur Prüfung, ob eine Fahrerlaubnis gültig ist, nach Eingabe der entsprechenden Fahrzeugdaten das konkrete, zu mietende Fahrzeug instantiiert, das heißt die entsprechende Spezialisierung.<br /> Zudem würde ebenfalls ein Objekt für die vorliegende Fahrerlaubnis erzeugt. Dieses würde der Methode &lt;code&gt;PrüfeFahrerlaubnis&lt;/code&gt; des Fahrzeug-Objekts übergeben und von dieser ausgewertet. Das Ergebnis der Überprüfung könnte beispielsweise dem Sachbearbeiter angezeigt werden. Der Aufbau des Speicherabbilds ist in nebenstehender Abbildung schematisch für ein Objekt der Klasse &lt;code&gt;PKW&lt;/code&gt; dargestellt. Die aus den verschiedenen Klassen geerbten Attribute liegen dabei typischerweise direkt hintereinander. Weiterhin enthält das Speicherabbild eines Objekts einen [[Zeiger (Informatik)|Zeiger]] auf die sogenannte [[Tabelle virtueller Methoden]], die der Ermittlung des [[Einsprungspunkt]]s der konkreten Implementierung bei einem Methodenaufruf dient.&lt;ref name=&quot;Stroustrup.1994.3.5&quot;&gt;[[Bjarne Stroustrup]]: ''Design und Entwicklung von C++''. Addison-Wesley, Bonn 1994, ISBN 3-89319-755-9, Seite 90–98&lt;/ref&gt;&lt;div style=&quot;clear:left&quot;&gt;&lt;/div&gt;<br /> <br /> == Anwendungen der Vererbung ==<br /> Die Vererbung ermöglicht bei der Softwareentwicklung eine [[Objektmodell|Modellierung]], die der menschlichen Vorstellung der realen Welt sehr nahe kommt. Es gibt sehr unterschiedliche Anwendungen des Vererbungsmechanismus. Nach wie vor ist umstritten, ob die Vererbung nur für sehr eng begrenzte Anwendungsbereiche verwendet werden sollte und ob ein Einsatz mit der hauptsächlichen Intention des Wiederverwendens von [[Quelltext|Code]] der [[Softwarequalität]] eher abträglich ist.&lt;ref name=&quot;Fröhlich2002&quot;&gt;Peter H. Fröhlich: [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.18.5919&amp;rep=rep1&amp;type=pdf ''Inheritance Decomposed''.] Inheritance Workshop, European Conference on Object-Oriented Programming (ECOOP), Malaga, 11. Juni 2002&lt;/ref&gt;&lt;ref name=&quot;Meyer1996&quot;&gt;[[Bertrand Meyer]]: ''The many faces of inheritance: A taxonomy of taxonomy''. In: ''IEEE Computer'', Vol. 29, 1996, Seite 105–108&lt;/ref&gt;<br /> <br /> Folgende Anwendungskontexte werden empfohlen oder tauchen in der Praxis auf:&lt;ref name=&quot;Meyer1996&quot; /&gt;&lt;ref name=&quot;Firesmith1996&quot;&gt;Donald Firesmith: ''Inheritance Guidelines''. In: ''Journal of Object-Oriented Programming''. 8(2), 1995, Seite 67–72&lt;/ref&gt;<br /> <br /> * ''Subtyp-Vererbung:'' Bei dieser Art der Vererbung ist die erbende Klasse ein Subtyp der Basisklasse im Sinne eines [[Abstrakter Datentyp|abstrakten Datentyps]]. Dies bedeutet, dass ein Objekt des Subtyps an jeder Stelle eingesetzt werden kann, an der ein Objekt des Basistyps erwartet wird. Die Menge der möglichen Ausprägungen des Subtyps stellt eine [[Teilmenge]] derer des Basistyps dar.<br /> * ''Vererbung zur Erweiterung:'' In der abgeleiteten Klasse wird neue Funktionalität gegenüber der Basisklasse ergänzt. Diese Variante der Vererbung stellt einen scheinbaren Widerspruch zur einschränkenden Subtyp-Vererbung dar. Die Erweiterung bezieht sich dabei aber auf zusätzliche Attribute.&lt;ref group=&quot;A&quot;&gt;Die Menge der möglichen Ausprägungen des Subtyps bildet weiterhin eine Teilmenge des Basistyps, wenn lediglich die Attribute des Basistyps betrachtet werden.&lt;/ref&gt; Diese Variante beinhaltet auch Anpassungen durch [[Überschreiben (OOP)|Überschreiben]] von Methoden, um beispielsweise Funktionalität zu ergänzen, die in der Basisklasse nicht relevant ist. Auch schließt diese Variante den Fall ein, dass nur ein Teil der Funktionalität einer [[Abstrakte Klasse|abstrakten Klasse]] in der abgeleiteten –&amp;nbsp;in diesem Fall ebenfalls abstrakten&amp;nbsp;– Klasse implementiert wird, und zusätzlich erforderliche Implementierungen weiteren Spezialisierungen vorbehalten bleiben ''(Reification)''.<br /> * ''Vererbung zur Unterstützung allgemeiner Fähigkeiten:'' Bei dieser Variante geht es darum, die Unterstützung von Basisfunktionalität einer Anwendungsarchitektur oder [[Klassenbibliothek]] zu etablieren. Eine Basisfunktionalität wie [[Serialisierung|Serialisierbarkeit]] oder [[Vergleich (Programmierung)|Vergleichbarkeit]] wird dabei durch eine abstrakte Klasse ([[Schnittstelle (Programmierung)|Schnittstelle]]) [[Deklaration (Programmierung)|deklariert]] – typische Bezeichner sind ''Serializable''&lt;ref&gt;siehe beispielsweise: [[Microsoft Developer Network|MSDN]], .NET Framework-Klassenbibliothek: [http://msdn.microsoft.com/de-de/library/system.runtime.serialization.iserializable.aspx ''ISerializable-Schnittstelle'']&lt;/ref&gt; und ''Comparable''.&lt;ref&gt;siehe beispielsweise: Java 2 Platform, Standard Edition, v 1.4.2, API Specification: [http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Comparable.html ''Interface Comparable'']&lt;/ref&gt; Die Implementierung aller Anforderungen der Schnittstelle muss in der abgeleiteten Klasse erfolgen. Formal entspricht diese Art der Vererbung der Subtyp-Vererbung.<br /> * ''Vererbung von Standardimplementierungen:'' Allgemeine für mehrere Typen verwendbare Funktionalität wird dabei in zentralen Klassen implementiert. Diese Variante dient der zweckdienlichen Wiederverwendung allgemeiner Programmteile ([[Mixin-Klasse]]).<br /> <br /> Es gibt auch Verwendungen der Vererbung, die als nicht sinnvoll angesehen werden. Insbesondere bei den ersten Gehversuchen in objektorientierter Programmierung ergibt sich häufig eine aus der Begeisterung resultierende übertriebene Abstufung der Vererbungshierarchie, oft für eine simple zusätzliche Eigenschaft. Beispielsweise dürften für eine Klasse &lt;code&gt;Person&lt;/code&gt; die Spezialisierungen &lt;code&gt;WeiblichePerson&lt;/code&gt; und &lt;code&gt;MännlichePerson&lt;/code&gt; in den wenigsten Fällen zweckmäßig sein und bei der Modellierung der eigentlich relevanten Aspekte eher behindern. Eine weitere fragwürdige Verwendung ist, wenn die erbende Klasse nicht in einer „ist-ein“- sondern in einer „hat“-Beziehung zur Basisklasse steht, und eine [[Aggregation (Informatik)|Aggregation]] angebracht wäre. Häufig tritt dieser Fall in Verbindung mit Mehrfachvererbung auf. &lt;code&gt;Apfelkuchen&lt;/code&gt; als Erbe von &lt;code&gt;Kuchen&lt;/code&gt; und &lt;code&gt;Apfel&lt;/code&gt; stellt ein bildhaftes Beispiel dieses Modellierungsfehlers dar, da &lt;code&gt;Apfel&lt;/code&gt; keine sinnvolle Basisklasse ist.&lt;ref name=&quot;Meyer1996&quot; /&gt;<br /> <br /> {| border=&quot;0&quot; align=right style=&quot;border-collapse:collapse; background-color:transparent;&quot; cellpadding=&quot;0&quot;<br /> |[[Datei:InheritancePgmPerson1.svg|miniatur|Ungünstige Modellierung]]<br /> |[[Datei:InheritancePgmPerson2.svg|miniatur|hochkant=1.4|Modellierung mittels Rollen]]<br /> |}<br /> <br /> Beim Übergang von der [[Objektorientierte Analyse und Design|objektorientierten Modellierung]] zur [[Objektorientierte Programmierung|Programmierung]] gibt es die Situation, dass die Modellierung einer klassifizierenden Hierarchie der fachlichen Anwendungsobjekte nicht ohne weiteres auf die Programmebene übertragen werden kann. Beispielsweise mag aus konzeptioneller Sicht die Modellierung von &lt;code&gt;Kunde&lt;/code&gt; und &lt;code&gt;Mitarbeiter&lt;/code&gt; als Spezialisierungen von &lt;code&gt;Person&lt;/code&gt; sinnvoll erscheinen. Auf Ebene der Programmierung ist eine solche Klassifizierung zum Einen statisch – das heißt, eine Person kann programmtechnisch nicht ohne weiteres von der Rolle des Mitarbeiters zur Rolle des Kunden wechseln. Zum Anderen kann eine Person auf diese Weise auch nicht mehrere Rollen gleichzeitig einnehmen. Dass letzteres nicht sinnvoll durch Hinzufügen einer mehrfach erbenden, weiteren Spezialisierung &lt;code&gt;KundeUndMitarbeiter&lt;/code&gt; gelöst werden kann, wird beispielsweise bei Hinzunahme einer weiteren Rolle &lt;code&gt;Lieferant&lt;/code&gt; deutlich. Die übliche Lösung ist die Trennung der Aspekte und die Modellierung einer [[Assoziation (UML)|assoziativen Beziehung]] zwischen &lt;code&gt;Person&lt;/code&gt; und ihren Rollen.&lt;ref name=&quot;Breu198&quot;&gt;Ruth Breu: ''Objektorientierter Softwareentwurf''. Seite 198f, siehe Literatur&lt;/ref&gt;<br /> <br /> == Varianten der Vererbung von Typ und Implementierung ==<br /> Mittels Vererbung können sowohl der Typ, der durch seine Schnittstelle spezifiziert wird, als auch die [[Funktionalität (Technik)|Funktionalität]] an die abgeleitete Klasse weitergegeben werden. Die Konsequenzen dieser Doppelfunktion der Vererbung werden seit Jahren kontrovers diskutiert.&lt;ref name=&quot;Fröhlich2002&quot;/&gt;&lt;ref name=&quot;Meyer1996&quot;/&gt; Auch neuere Programmiersprachen wie [[Java (Programmiersprache)|Java]] oder [[.NET]]-Sprachen wie [[C-Sharp|C#]] und [[Visual Basic .NET|VB.NET]] unterstützen keine durchgängige Trennung dieser Vererbungsvarianten, bieten jedoch für [[Schnittstelle (Programmierung)|Schnittstellen]] ''(interface)'' und Klassen ''(class)'' zwei formal getrennte Konzepte an. Es lassen sich drei Fälle unterscheiden:&lt;ref name=&quot;LahresRayman.5.1&quot;&gt;Bernhard Lahres, Gregor Rayman: ''Praxisbuch Objektorientierung''. Seite 153–189, siehe Literatur&lt;/ref&gt;<br /> <br /> * Vererbung von Typ und Implementierung (meist ''Implementierungsvererbung'' oder einfach nur ''Vererbung'' genannt, engl. ''Subclassing'')<br /> * Vererbung des Typs (meist als ''Schnittstellenvererbung'' bezeichnet, engl. ''Subtyping'')<br /> * Reine Vererbung der Implementierung (in Java oder .NET-Sprachen nicht direkt möglich)<br /> <br /> Bei der letzten Variante stehen abgeleitete Klasse und Basisklasse nicht in einer „ist-ein“-Beziehung zueinander.<br /> <br /> === Implementierungsvererbung ===<br /> Hierbei wird von der Basisklasse die Implementierung und implizit auch deren Schnittstelle geerbt. Die abgeleitete Klasse übernimmt dabei die Attribute und Funktionalität der Basisklasse und wandelt diese gegebenenfalls ab oder ergänzt diese um weitere für diese Spezialisierung zusätzlich relevante Eigenschaften. Auch wenn nachträglich Funktionalität der Basisklasse ergänzt oder verbessert wird, profitiert die abgeleitete Klasse davon.<br /> <br /> Im Folgenden wird in der Programmiersprache Java ein Beispiel für die Ableitung von &lt;code&gt;[[Quadrat (Geometrie)|Quadrat]]&lt;/code&gt; als Spezialisierung von &lt;code&gt;Rechteck&lt;/code&gt; skizziert. Dieses Beispiel findet sich in ähnlicher Form häufig in der Literatur und ist zur Veranschaulichung vieler –&amp;nbsp;auch ungünstiger&amp;nbsp;– Aspekte hilfreich, kann aber eigentlich nicht als besonders gutes Beispiel der Vererbung gelten.<br /> <br /> Die Klasse &lt;code&gt;Rechteck&lt;/code&gt; besitzt die Attribute &lt;code&gt;laenge&lt;/code&gt; und &lt;code&gt;breite&lt;/code&gt;, die über den [[Konstruktoren und Destruktoren|Konstruktor]] gesetzt werden. Daneben gibt es [[Methode (Programmierung)|Methoden]] ([[Funktion (Programmierung)|Funktionen]]) zur Berechnung des Umfangs und der Länge der [[Diagonale (Geometrie)|Diagonalen]] des Rechtecks. Die Spezialisierung &lt;code&gt;Quadrat&lt;/code&gt; erbt diese Funktionalität ([[Schlüsselwort (Programmierung)|Schlüsselwort]] &lt;code&gt;extends&lt;/code&gt;). Der Konstruktor für &lt;code&gt;Quadrat&lt;/code&gt; erfordert nur noch einen statt zwei [[Parameter (Informatik)|Parameter]], da Länge und Breite ja übereinstimmen. Die in der Klasse &lt;code&gt;Rechteck&lt;/code&gt; implementierten Berechnungen von Umfang und Diagonalenlänge stimmen auch für das Quadrat. In diesem Beispiel wird dennoch zur Veranschaulichung –&amp;nbsp;aus Optimierungsgründen&amp;nbsp;– eine Modifikation der Berechnung der Diagonalenlänge vorgenommen, da diese bei einem Quadrat auf einfachere Weise berechnet werden kann. Die Berechnung des Umfangs wird nicht reimplementiert, sondern von der Basisklasse übernommen – obwohl natürlich auch dort eine geringfügige Vereinfachung möglich wäre.<br /> <br /> &lt;syntaxhighlight lang=&quot;Java&quot; style=&quot;display: inline-block; vertical-align: top;&quot;&gt;<br /> public class Rechteck<br /> {<br /> private double laenge;<br /> private double breite;<br /> <br /> public Rechteck(double laenge, double breite)<br /> {<br /> this.breite = breite;<br /> this.laenge = laenge;<br /> }<br /> <br /> public double getLaenge() { return laenge; }<br /> public double getBreite() { return breite; }<br /> <br /> public double getUmfang()<br /> {<br /> return 2 * laenge + 2 * breite;<br /> }<br /> <br /> public double getDiagonale()<br /> {<br /> return Math.sqrt(laenge * laenge + breite * breite);<br /> }<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> &lt;syntaxhighlight lang=&quot;Java&quot; style=&quot;display: inline-block; vertical-align: top;&quot;&gt;<br /> public class Quadrat extends Rechteck<br /> {<br /> // Einmalige Berechnung der Wurzel aus 2<br /> static final double WURZEL2 = Math.sqrt(2);<br /> <br /> public Quadrat(int laenge)<br /> {<br /> // Aufruf des Konstruktors der Basisklasse<br /> super(laenge, laenge);<br /> }<br /> <br /> @Override<br /> public double getDiagonale()<br /> {<br /> return WURZEL2 * getLaenge();<br /> }<br /> }<br /> &lt;/syntaxhighlight&gt;<br /> <br /> === Schnittstellenvererbung ===<br /> In der Softwareentwicklung gab es seit den 1970er Jahren zwei parallele Entwicklungen, eine davon mündete in die [[objektorientierte Programmierung]], andererseits wurden [[algebra]]ische Spezifikationsmethoden zur Unterstützung des Softwareentwurfs entwickelt. Ein Vorteil solcher Spezifikationen ist, dass sie mit einer mathematischen [[Semantik]] versehen werden können.&lt;ref&gt;Christoph Schmitz: ''Spezifikation objektorientierter Systeme'' Universität Tübingen, 1999, Seite 9–12&lt;/ref&gt; Ein wesentliches Ergebnis dieser Bestrebungen war das Konzept des [[Abstrakter Datentyp|abstrakten Datentyps]], das die Spezifikation eines Datentyps unabhängig von der Implementierung zum Ziel hat. [[Klasse (Programmierung)|Klassen]], genau genommen deren [[Schnittstelle (Programmierung)|Schnittstellen]], gelten als das Abbild eines abstrakten Datentyps. Hierbei ist aber eigentlich unpassend, dass bei Vererbung praktisch von keiner Sprache&lt;ref&gt;Eine Ausnahme ist [[Sather]], siehe Iain D. Craig: ''Object-Oriented Programming Languages: Interpretation''. Seite 187, siehe Literatur&lt;/ref&gt; eine durchgängige Trennung der Vererbung von Schnittstelle und Implementierung explizit unterstützt wird. Relativ neue Sprachen wie Java und .NET-Sprachen führen zwar mit den Schnittstellen ''(Interfaces)'' ein Konzept zur Abbildung abstrakter Datentypen ein, unterstützen aber keine durchgängige Trennung, denn ist eine Schnittstelle einmal von einer Klasse implementiert, erbt jede weitere Spezialisierung sowohl die Implementierung als auch die Schnittstelle.&lt;ref name=&quot;Fröhlich2002&quot;/&gt; Spezialisten für die objektorientierte Programmierung, beispielsweise [[Bertrand Meyer]], sehen in einer vollständigen Aufspaltung mehr Schaden als Nutzen.&lt;ref name=&quot;Meyer1996&quot;/&gt; Ein Grund ist, dass die Nähe von Schnittstelle und Implementierung im [[Quelltext|Programmcode]] das Verständnis und die [[Softwarewartung|Wartbarkeit]] erleichtert.&lt;ref name=&quot;Craig.7.2&quot;&gt;Iain D. Craig: ''Object-Oriented Programming Languages: Interpretation''. Seite 185–190, siehe Literatur&lt;/ref&gt;<br /> <br /> In diesem Zusammenhang von Bedeutung ist auch das [[Liskovsches Substitutionsprinzip|liskovsche Substitutionsprinzip]]. Dieses fordert, dass ein Subtyp sich so verhalten muss, dass jemand, der meint, ein Objekt des Basistyps vor sich zu haben, nicht durch unerwartetes Verhalten überrascht wird, wenn es sich dabei tatsächlich um ein Objekt des Subtyps handelt. Objektorientierte Programmiersprachen können eine Verletzung dieses Prinzips, das auf Grund der mit der Vererbung verbundenen [[Polymorphie (Programmierung)|Polymorphie]] auftreten kann, nicht von vornherein ausschließen. Häufig ist eine Verletzung des Prinzips nicht auf den ersten Blick offensichtlich.&lt;ref name=&quot;LahresRayman.5.1&quot; /&gt; Wenn etwa beim oben skizzierten Beispiel in der Basisklasse &lt;code&gt;Rechteck&lt;/code&gt; zur nachträglichen Veränderung der Größe die Methoden &lt;code&gt;setLaenge&lt;/code&gt; und &lt;code&gt;setBreite&lt;/code&gt; eingeführt werden&lt;ref group=&quot;A&quot;&gt;Eine solche Änderung kann in der Praxis durchaus nachträglich erfolgen und ohne dass der Entwickler der Basisklasse und der abgeleiteten Klasse sich kennen müssen, beispielsweise bei Verwendung einer [[Klassenbibliothek]] und der Umstellung auf eine neue Version.&lt;/ref&gt;, muss in der Klasse &lt;code&gt;Quadrat&lt;/code&gt; entschieden werden, wie damit umzugehen ist. Eine mögliche Lösung ist, dass beim Setzen der Länge automatisch die Breite auf denselben Wert gesetzt wird und umgekehrt. Wenn eine Anwendung unterstellt, ein Rechteck vor sich zu haben, und bei Verdopplung der Länge eines Rechtecks eine Verdopplung der Fläche erwartet, überrascht bei einer Instanz des Typs &lt;code&gt;Quadrat&lt;/code&gt; die durch automatische Angleichung der Breite verursachte Vervierfachung der Fläche.&lt;ref group=&quot;A&quot;&gt;Dieser Aspekt ist ein Grund dafür, warum eine derartige Spezialisierung in einigen Anwendungsfällen ungünstig ist. Dieses Beispiel wird häufig zur Veranschaulichung und Diskussion dieses in Verbindung mit der Vererbung stehenden Problems verwendet und ist auch unter der Bezeichnung [[Kreis-Ellipse-Problem]] ''(circle ellipse problem)'' bekannt.&lt;/ref&gt;<br /> <br /> Die fehlende Trennung zwischen Typ- und Implementierungsvererbung führt in der Praxis häufig dazu, dass in der Schnittstelle einer Klasse Implementierungsdetails durchscheinen.&lt;ref&gt;Alan Snyder: ''Inheritance and the development of encapsulated software systems''. In: ''Research Directions in Object-Oriented Programming''. Cambridge.1987, Seite 165–188&lt;/ref&gt; Eine Strategie zur Vermeidung dieses Effekts ist die Verwendung [[Abstrakte Klasse|abstrakter Klassen]] oder Schnittstellen in den wurzelnahen Bereichen der Klassenhierarchie. Günstig ist, auf abstrakter Ebene möglichst weit zu differenzieren, bevor Implementierungen ergänzt werden. Eine solche auf Schnittstellen basierte Grundlage ist auch in Verbindung mit [[Verteilte Anwendung|verteilten Architekturen]] wie [[Common Object Request Broker Architecture|CORBA]] oder [[Component Object Model|COM]] notwendig.&lt;ref name=&quot;Craig.7.2&quot;/&gt;<br /> <br /> === Reine Implementierungsvererbung ===<br /> Bei der reinen Implementierungsvererbung, die auch als ''private Vererbung'' bezeichnet wird, nutzt die erbende Klasse die Funktionalität und Attribute der Basisklasse, ohne nach außen als Unterklasse dieser Klasse zu gelten. Als – etwas konstruiertes – Beispiel könnte eine Klasse &lt;code&gt;RechtwinkligesDreieck&lt;/code&gt; von der Klasse &lt;code&gt;Rechteck&lt;/code&gt; des obigen Beispiels die Implementierung erben, um die [[Hypotenuse]] über die Methode &lt;code&gt;getDiagonale&lt;/code&gt; zu berechnen, nachdem die Länge der [[Kathete]]n für Länge und Breite eingesetzt wurden.<br /> <br /> Beispielsweise in C++ oder [[Eiffel (Programmiersprache)|Eiffel]] gibt es die Möglichkeit einer reinen Implementierungsvererbung, in Java oder den .NET-Sprachen gibt es sie nicht. Eine Alternative bei letzteren Sprachen ist die Verwendung von [[Delegation (Softwareentwicklung)|Delegation]], die einiges mehr Programmcode erfordert.&lt;ref name=&quot;LahresRayman.5.1&quot;/&gt;<br /> <br /> == Zusammenspiel der Methoden in der Klassenhierarchie ==<br /> Wenn in einer Klasse eine [[Methode (Programmierung)|Methode]] [[Überschreiben (OOP)|überschrieben]] wird, soll häufig nur Funktionalität ergänzt und die Implementierung der Basisklasse weiterhin genutzt werden, da diese bereits allgemeine Aspekte abdeckt, die für die Spezialisierung ebenfalls gültig sind. Hierfür ist es erforderlich, dass innerhalb der Methodenimplementierung der spezialisierten Klasse das Pendant der Basisklasse aufgerufen wird. Dieser Aufruf erfolgt typischerweise zu Beginn oder am Ende der überschreibenden Methode, teilweise ist aber auch zusätzliche Funktionalität vor und nach diesem Aufruf zu implementieren.&lt;ref name=&quot;Craig.4.6&quot;&gt;Iain D. Craig: ''Object-Oriented Programming Languages: Interpretation''. Seite 91–98, siehe Literatur&lt;/ref&gt;<br /> <br /> [[Datei:InheritancePgmCallHierarchie.png|miniatur|hochkant=1.6|Beispiel einer Aufrufkaskade]]<br /> <br /> Die verschiedenen [[Programmiersprache]]n ermöglichen einen Aufruf der Basisklassenimplementierung auf unterschiedliche Weise. Die meisten Freiheitsgrade bietet C++, dort wird dem Methodennamen der Klassenname als Präfix vorangestellt ''(Scope-Operator)''. Dieses Verfahren geht über diesen Anwendungsfall weit hinaus, denn es ermöglicht den Aufruf jeder beliebigen Methode aller Klassen innerhalb der Klassenhierarchie. Etwas einschränkender ist beispielsweise Java, dort gibt es das Schlüsselwort &lt;code&gt;super&lt;/code&gt;, das dem Methodennamen vorangestellt wird. Deutlich formaler ist der Aufruf der Basisklassenmethode beispielsweise in der Sprache [[Common Lisp Object System|CLOS]] gelöst: Dort wird allein durch das Schlüsselwort &lt;code&gt;call-next-method&lt;/code&gt; die Basisimplementierung aufgerufen, ohne dass Methodenname oder [[Parameter (Informatik)|Parameter]] spezifiziert werden, die aktuellen Parameter der spezialisierenden Methode werden implizit übergeben. Der formalere Ansatz ist weniger redundant und fehleranfällig, bietet dafür aber weniger Flexibilität.&lt;ref name=&quot;Craig.4.6&quot; /&gt;<br /> <br /> Anhand des einführenden Beispiels lässt sich eine solche Aufrufkaskade erläutern. Die Methode &lt;code&gt;PruefeFahrerlaubnis&lt;/code&gt; gibt dabei zurück, ob die Prüfung durchgeführt werden konnte, und wenn dies der Fall ist, zusätzlich das Ergebnis dieser Prüfung. Die Implementierung der Klasse &lt;code&gt;PKW&lt;/code&gt; ruft zunächst die Implementierung der Klasse &lt;code&gt;Kraftfahrzeug&lt;/code&gt; auf, um die Fälle abzuhandeln, die anhand Höchstgeschwindigkeit, Leistung oder zulässigem Gesamtgewicht entscheidbar sind. Die Implementierung in &lt;code&gt;Kraftfahrzeug&lt;/code&gt; wiederum delegiert die Prüfung des zulässigen Gesamtgewichts weiter an seine Basisklasse. Nach Rücksprung aus den gerufenen Basisimplementierungen wird die Prüfung jeweils fortgesetzt, wenn der Fall noch nicht entschieden werden konnte.<br /> <br /> == Besonderheiten bei der Vererbung ==<br /> <br /> === Mehrfachvererbung ===<br /> → ''Hauptartikel: [[Mehrfachvererbung]]''<br /> [[Datei:InheritancePgmExampleMI.svg|miniatur|hochkant=1.7|Mehrfachvererbung mit gemeinsamer indirekter Basisklasse ([[Unified Modeling Language|UML]])]]<br /> <br /> Um Mehrfachvererbung handelt es sich, wenn eine abgeleitete Klasse direkt von mehr als einer Basisklasse erbt. Ein sequentielles, mehrstufiges Erben wird dagegen nicht als Mehrfachvererbung bezeichnet. Ein sehr häufiger Anwendungsfall der Mehrfachvererbung ist die Verwendung von [[Mixin-Klasse]]n, die allgemein verwendbare Implementierungen beisteuern und somit der Vermeidung von [[Redundanz (Quelltext)|Redundanz]] dienen.&lt;ref name=&quot;Craig.4.7-4.15&quot;/&gt;<br /> <br /> [[Datei:Two-way-vehicle unimog.jpg|miniatur|links|[[Zweiwegefahrzeug]] ([[Unimog]])]]<br /> <br /> Ein anderes Beispiel für Mehrfachvererbung ergibt sich durch die Erweiterung des einführenden Beispiels um die Klassen &lt;code&gt;[[Schienenfahrzeug]]&lt;/code&gt; und &lt;code&gt;[[Zweiwegefahrzeug]]&lt;/code&gt;. Letztere erbt dabei sowohl von &lt;code&gt;Kraftfahrzeug&lt;/code&gt; als auch von &lt;code&gt;Schienenfahrzeug&lt;/code&gt; und hat somit sowohl alle Attribute der Kraftfahrzeuge als auch das zusätzliche Attribut &lt;code&gt;Spurweite&lt;/code&gt;, das von &lt;code&gt;Schienenfahrzeug&lt;/code&gt; geerbt wird.<br /> <br /> Die Notwendigkeit von Mehrfachvererbung ist umstritten, sie wird nicht von allen Sprachen unterstützt, beispielsweise nicht von [[Smalltalk (Programmiersprache)|Smalltalk]]. Die erste Sprache, die eine Mehrfachvererbung unterstützte, war [[Flavors (Programmiersprache)|Flavors]], eine objektorientierte Erweiterung von [[LISP]]. Eine umfassende Unterstützung bieten beispielsweise auch [[C++]], [[Eiffel (Programmiersprache)|Eiffel]] und [[Python (Programmiersprache)|Python]]. [[Java (Programmiersprache)|Java]] und [[Liste von .NET-Sprachen|.NET-Sprachen]] bieten eine eingeschränkte Unterstützung, dort kann eine Klasse zwar von beliebig vielen [[Schnittstelle (Programmierung)|Schnittstellen]], aber nur von einer Klasse erben, die Implementierungen enthält.&lt;ref name=&quot;Craig.4.7-4.15&quot;&gt;Iain D. Craig: ''Object-Oriented Programming Languages: Interpretation''. Seite 98–124, siehe Literatur&lt;/ref&gt; Eine andere Lösung hält [[Ruby (Programmiersprache)|Ruby]] bereit, dort ist ebenfalls nur eine direkte Basisklasse möglich, allerdings kann eine Klasse beliebig viele sogenannte ''Modules'' einbinden, was dem Grundgedanken einer [[Mixin]]-Vererbung direkt entspricht.&lt;ref&gt;[[Dave Thomas (Programmierer)|David Thomas]], [[Andy Hunt (Autor)|Andrew Hunt]]: ''Programming Ruby. The Pragmatic Programmer’s Guide''. Addison-Wesley Longman, Amsterdam 2000, ISBN 0-201-71089-7, Seite 99–104 ([http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html online])&lt;/ref&gt;<br /> <br /> Neben einem erheblichen zusätzlichen Implementierungsaufwand für [[Compiler]] und [[Laufzeitumgebung]] gibt es vor allem zwei Gründe für die häufige fehlende oder eingeschränkte Unterstützung:&lt;ref name=&quot;Stroustrup.1994.12&quot;&gt;Bjarne Stroustrup: ''Design und Entwicklung von C++''. Addison-Wesley, Bonn 1994, ISBN 3-89319-755-9, Seite 327–352&lt;/ref&gt;<br /> <br /> # Mögliche Namenskollisionen bei geerbten Attributen oder Methoden<br /> # Mehrfaches Auftreten derselben Basisklasse im Vererbungsbaum<br /> <br /> Für erstgenanntes Problem bieten die Sprachen meist Möglichkeiten der Umbenennung. Letztere Konstellation, die auch als [[Diamond-Problem]] bezeichnet wird, tritt nur bei Vererbung der Implementierung in Erscheinung. Hier kann es sowohl sinnvoll sein, dass das resultierende Objekt nur eine Instanz der mehrfach auftretenden Klasse enthält, als auch mehrere. Für das obige Beispiel des Zweiwegefahrzeugs bedeutet dies entweder das Vorhandensein von nur einer Instanz der Basisklasse &lt;code&gt;Fahrzeug&lt;/code&gt; oder von deren zwei. C++ bietet über das Konzept sogenannter ''virtueller Basisklassen'' beide Möglichkeiten an.&lt;ref name=&quot;Stroustrup.1994.12&quot;/&gt; Eiffel bietet auch beide Möglichkeiten und dies sogar auf Ebene einzelner Attribute und Methoden.&lt;ref name=&quot;Meyer1990.11.6&quot;&gt;Bertrand Meyer: ''Objektorientierte Softwareentwicklung''. Seite 296–300, siehe Literatur&lt;/ref&gt; Das kann im skizzierten Beispiel sogar sinnvoll sein: Das Leergewicht ist bei einem Zweiwegefahrzeug grundsätzlich gleich, egal ob es auf der Schiene oder auf der Straße betrieben wird. Dies muss aber nicht unbedingt auch für das zulässige Gesamtgewicht gelten. Python hat zum Erzeugen einer sinnvollen Vererbungshierarchie seit Version 2.3 in solchen Fällen das Konzept der sogenannten ''C3-Linearisierung'' implementiert.<br /> <br /> === Multilevel-Vererbung ===<br /> Bei der [[Objektorientierte Programmierung]] gibt es häufig das Problem, dass man unterschiedliche [[Klasse (Objektorientierung)|Klassen]] definiert hat, die untereinander nicht auf Variablen zugreifen können. Um in einer Klasse die Attribute und Methoden einer anderen Klasse sichtbar zu machen kann man Vererbung nutzen. Von Multilevel-Vererbung spricht man ab wenigstens drei Klassen, die hintereinander geschaltet sind.&lt;ref name=&quot;Adamsky2014&quot; /&gt; Besonders für [[Prototyping (Softwareentwicklung)|Rapid-Prototyping]] eignet sich das Konzept.&lt;ref name=&quot;kuruvada2010use&quot; /&gt; Einerseits kann man in seperaten Klassen den Programmcode verwalten, gleichzeitig hat man jedoch eine große Klasse. Multilevel-Vererbung kann mit [[Mehrfachvererbung]] kombiniert werden.&lt;ref name=&quot;Sah2014&quot; /&gt;<br /> <br /> === Kovarianz und Kontravarianz ===<br /> {{Hauptartikel|Kovarianz und Kontravarianz}}<br /> Im Zusammenhang mit dem [[Liskovsches Substitutionsprinzip|liskovschen Substitutionsprinzip]] steht auch die Behandlung der Varianz bei den [[Signatur (Programmierung)|Signaturen]] überschriebener [[Methode (Programmierung)|Methoden]]. Viele Programmiersprachen ermöglichen keine Varianz, das heißt, die Typen der [[Parameter (Informatik)|Methodenparameter]] überschriebener Methoden müssen exakt übereinstimmen. Dem liskovschen Prinzip entspricht die Unterstützung von Kontravarianz für Eingangs- und Kovarianz für Ausgangsparameter. Das bedeutet, Eingangsparameter können allgemeiner sein als bei der Basisklasse, der Typ des Rückgabewerts darf spezieller sein.&lt;ref name=&quot;Craig.6.6&quot;&gt;Iain D. Craig: ''Object-Oriented Programming Languages: Interpretation''. Seite 174–179, siehe Literatur&lt;/ref&gt;<br /> <br /> Von wenigen Sprachen wird die Deklaration der [[Ausnahmebehandlung|Ausnahmen]] (engl. ''Exceptions'') ermöglicht, die beim Aufruf einer Methode auftreten können. Die Typen der möglichen Ausnahmen gehören dabei zur Signatur einer Methode. Bei Java und [[Modula-3]] –&amp;nbsp;den beiden einzigen bekannteren Sprachen, die so etwas unterstützen&amp;nbsp;– muss die Menge der möglichen Ausnahmetypen einer überschriebenen Methode eine [[Teilmenge]] der ursprünglichen Typen sein, was Kovarianz bedeutet und dem liskovschen Substitutionsprinzip entspricht.&lt;ref&gt;Anna Mikhailova, Alexander Romanovsky: [http://www.cs.ncl.ac.uk/research/trs/papers/715.pdf ''Supporting Evolution of Interface Exceptions''.] (PDF; 167&amp;nbsp;kB) In: ''Advances in exception handling techniques''. Springer-Verlag, New York 2001, ISBN 3-540-41952-7, Seite 94–110.&lt;/ref&gt;&lt;ref group=&quot;A&quot;&gt;In Java gilt dieses Prinzip allerdings nur für einen Teil der möglichen Ausnahmetypen, den sogenannten ''Checked Exceptions''.&lt;/ref&gt;<br /> <br /> Im Zusammenhang mit dem liskovschen Substitutionsprinzip steht auch das [[Design by contract|Design-By-Contract]]-Konzept, das von [[Eiffel (Programmiersprache)|Eiffel]] unterstützt wird. Dabei gibt es die Möglichkeit, [[Vorbedingung (Informatik)|Vor]]- und [[Nachbedingung (Informatik)|Nachbedingungen]] für Methoden sowie [[Invariante (Informatik)|Invarianten]] für Klassen zu definieren. Die Klassenvarianten sowie die Nachbedingungen müssen dabei in Spezialisierungen gleich oder restriktiver sein, die Vorbedingungen können gelockert werden.&lt;ref name=&quot;Meyer1990.11.1&quot;&gt;B. Meyer: ''Objektorientierte Softwareentwicklung''. Seite 275–278, siehe Literatur&lt;/ref&gt;<br /> <br /> === Datenkapselung im Rahmen der Vererbung ===<br /> <br /> Bei der Spezifizierung der Sichtbarkeit der Attribute und Methoden von Klassen ([[Datenkapselung (Programmierung)|Datenkapselung]]) wird häufig unterschieden, ob der Zugriff beispielsweise durch eine abgeleitete Klasse oder „von außen“, das heißt bei einer anderweitigen Verwendung der Klasse, erfolgt. In den meisten Sprachen werden drei Fälle unterschieden:&lt;ref name=&quot;Craig.2.6&quot;&gt;Iain D. Craig: ''Object-Oriented Programming Languages: Interpretation''. Seite 25–31, siehe Literatur&lt;/ref&gt;<br /> <br /> * öffentlich ''(public)'': Die Eigenschaft ist ohne Einschränkungen sichtbar<br /> * geschützt ''(protected)'': Die Eigenschaft ist in der Klasse selbst und für abgeleitete Klassen sichtbar (auch mehrstufig), von außen hingegen nicht.<br /> * privat ''(private)'': Die Eigenschaft ist nur in der Klasse selbst sichtbar.<br /> <br /> Nicht alle Sprachen unterstützen diese dreiteilige Gliederung. Manche Abgrenzungen der Sichtbarkeit sind auch anders ausgelegt. Java und die .NET-Sprachen führen zusätzlich noch Varianten ein, die die Sichtbarkeit auf sprachspezifische Untereinheiten der Programmstruktur (Package oder [[.NET#Assemblys|Assembly]]) begrenzen. In [[Ruby (Programmiersprache)|Ruby]] hat ''&lt;code&gt;private&lt;/code&gt;'' eine abweichende Bedeutung: Auf private Eigenschaften kann auch von spezialisierenden Klassen zugegriffen werden. Allerdings ist grundsätzlich nur der Zugriff auf Eigenschaften derselben Instanz möglich.&lt;ref name=&quot;LahresRayman.4.2.5&quot;&gt;Bernhard Lahres, Gregor Rayman: ''Praxisbuch Objektorientierung''. Seite 103–110, siehe Literatur&lt;/ref&gt;&lt;ref group=&quot;A&quot;&gt;Bei C++ oder Java ist dagegen der Zugriff auf private Eigenschaften anderer Instanzen derselben Klasse möglich, was typischerweise beim [[Kopierkonstruktor|Copy-Konstruktor]] durch direkten Zugriff auf die Eigenschaften des Quellobjekts ausgenutzt wird.&lt;/ref&gt;<br /> <br /> Ein weiterer, bei Vererbung relevanter Aspekt der Datenkapselung ist die Möglichkeit, in abgeleiteten Klassen die Sichtbarkeit von Eigenschaften gegenüber der Basisklasse zu verändern. Beispielsweise in C++ oder Eiffel ist es möglich, die Sichtbarkeit aller oder einzelner Eigenschaften beim Erben einzuschränken. In Java oder den .NET-Sprachen dagegen ist keine solche Änderung der Sichtbarkeit bei Vererbung möglich.&lt;ref name=&quot;Craig.2.6&quot;/&gt;<br /> <br /> === Typkonvertierung bei statischer Typisierung ===<br /> Programmiersprachen lassen sich in solche mit [[Statische Typisierung|statischer]] oder [[Dynamische Typisierung|dynamischer Typisierung]] einteilen. Bei dynamischer Typisierung wird für [[Variable (Programmierung)|Variablen]] und [[Parameter (Informatik)|Parameter]] nicht explizit ein Typ festgelegt. [[Smalltalk (Programmiersprache)|Smalltalk]] war die erste objektorientierte Sprache mit dynamischer Typisierung. Bei statischer Typisierung dagegen wird – meist durch eine [[Deklaration (Programmierung)|Deklaration]] wie beispielsweise in Java – kenntlich gemacht, welchen Typ der Wert einer Variablen oder eines Parameters aufweisen muss. Bei [[Zuweisung]] oder [[Parameterübergabe]] kann die [[Zuweisungskompatibilität]] der Typen in diesem Fall bereits während der [[Übersetzungszeit]] geprüft werden.&lt;ref name=&quot;LahresRayman.4.2.3&quot;&gt;Bernhard Lahres, Gregor Rayman: ''Praxisbuch Objektorientierung''. Seite 90–99, siehe Literatur&lt;/ref&gt;<br /> <br /> An jeder Stelle, an der ein Objekt einer bestimmten Klasse erwartet wird, kann auch ein Objekt verwendet werden, das einer Spezialisierung dieser Klasse angehört. Beispielsweise kann eine Variable des Typs &lt;code&gt;PKW&lt;/code&gt; immer einer Variable des Typs &lt;code&gt;Kraftfahrzeug&lt;/code&gt; zugewiesen werden. Allerdings sind nach einer solchen Zuweisung die zusätzlichen Eigenschaften der Spezialisierung, im Beispiel die Anzahl der Sitzplätze, nicht direkt zugänglich. Das Objekt der Basisklasse verhält sich jedoch beim Aufruf von virtuellen Methoden wie ein Objekt der spezialisierenden Klasse.&lt;ref group=&quot;A&quot;&gt;Dies stimmt allerdings nicht für C++, wenn die Zuweisung auf Wertebene erfolgt.&lt;/ref&gt; Eine solche [[Typumwandlung|Konvertierung]] wird ''Upcast'' genannt.&lt;ref name=&quot;Craig.6.7&quot;&gt;Iain D. Craig: ''Object-Oriented Programming Languages: Interpretation''. Seite 179ff, siehe Literatur&lt;/ref&gt;<br /> <br /> Das Gegenstück dazu, ein ''Downcast'', ist problematischer, jedoch in einigen Fällen notwendig. Auch statisch typisierende Sprachen ermöglichen meist eine solche Konvertierung, die aber explizit veranlasst werden muss. In diesem Fall ist auch bei statisch typisierenden Sprachen erst zur [[Laufzeit (Informatik)|Laufzeit]] überprüfbar, ob ein Objekt tatsächlich den geforderten Typ aufweist.&lt;ref name=&quot;LahresRayman.5.1&quot;/&gt; Ein solcher Downcast, beispielsweise von &lt;code&gt;Kraftfahrzeug&lt;/code&gt; zu &lt;code&gt;PKW&lt;/code&gt;, ist nur sinnvoll, wenn sichergestellt ist, dass das Objekt tatsächlich vom Typ der konkreten Spezialisierung ist. Wird keine Prüfung durchgeführt und in diesem Beispiel ein Objekt, das einen LKW repräsentiert, in den Typ &lt;code&gt;PKW&lt;/code&gt; konvertiert, wird im Regelfall eine [[Ausnahmebehandlung|Ausnahme]] erzeugt.<br /> <br /> === Programmiersprachen mit zentraler Basisklasse ===<br /> Viele [[objektorientierte Programmiersprache]]n verfügen über eine zentrale Klasse, von der alle Klassen –&amp;nbsp;über wie viele Stufen auch immer&amp;nbsp;– letztlich abgeleitet sind. Beispielsweise gibt es in Ruby, Java und bei .NET eine solche Klasse. Diese heißt bei diesen Sprachen &lt;code&gt;Object&lt;/code&gt;. In Eiffel wird sie mit &lt;code&gt;ANY&lt;/code&gt; bezeichnet. Zu den wenigen Ausnahmen, in denen es keine solche Klasse gibt, zählen C++ oder Python.<br /> <br /> In den Sprachen mit zentraler Basisklasse erbt eine Klasse, für die keine Basisklasse angegeben wird, implizit von dieser besonderen Klasse. Ein Vorteil davon ist, dass allgemeine Funktionalität, beispielsweise für die [[Serialisierung]] oder die [[Runtime Type Information|Typinformation]], dort untergebracht werden kann. Weiterhin ermöglicht es die Deklaration von [[Variable (Programmierung)|Variablen]], denen ein Objekt jeder beliebigen Klasse zugewiesen werden kann. Dies ist besonders hilfreich zur Implementierung von [[Container (Informatik)|Containerklassen]], wenn eine Sprache keine [[generische Programmierung]] unterstützt.&lt;ref group=&quot;A&quot;&gt;In Java wurde die generische Programmierung erst ab Version 1.5 unterstützt, für .NET erst mit dem [[.NET-Framework]] 2.0. Zuvor basierte die Implementierung der Containerklassen ausschließlich auf diesem Prinzip.&lt;/ref&gt;<br /> Dieses Verfahren hat allerdings den Nachteil, dass in einen solchen allgemeinen Container Objekte jeden Typs hinzugefügt werden können. Da beim Zugriff auf ein Objekt des Containers normalerweise ein spezieller Typ erwartet wird, ist deshalb eine [[Typumwandlung]] ''(Downcast)'' erforderlich. Die entsprechende [[Typsicherheit|Typprüfung]] kann jedoch erst zur Laufzeit erfolgen.&lt;ref name=&quot;Craig.6.5&quot;&gt;Iain D. Craig: ''Object-Oriented Programming Languages: Interpretation''. Seite 173f, siehe Literatur&lt;/ref&gt;<br /> <br /> === Persistenz in Datenbanken ===<br /> Neben einer einfachen Serialisierung ist die Speicherung in einer [[Datenbank]] das üblichste Verfahren, Objekte [[Persistenz (Informatik)|persistent]] zu machen. [[Objektorientierte Datenbank]]en haben das Ziel, einen sogenannten ''[[Impedance Mismatch]]'' zu vermeiden, der bei Abbildung der bei der Programmierung verwendeten Vererbungs- und Objektstruktur auf eine [[relationale Datenbank]] entsteht. Objektorientierte Datenbanken haben sich aber bis heute nicht durchgesetzt, so dass häufig sogenannte [[Objektrelationale Abbildung|objektrelationale Mapper]] verwendet werden.&lt;ref name=&quot;LahresRayman.6.2&quot;&gt;Bernhard Lahres, Gregor Rayman: ''Praxisbuch Objektorientierung''. Seite 300–307, siehe Literatur&lt;/ref&gt;<br /> <br /> Bei der objektrelationalen Abbildung der Vererbungsbeziehungen werden drei Möglichkeiten unterschieden:&lt;ref name=&quot;LahresRayman.6.3&quot;&gt;Bernhard Lahres, Gregor Rayman: ''Praxisbuch Objektorientierung''. Seite 307–320, siehe Literatur&lt;/ref&gt;<br /> <br /> # Die Attribute aller Klassen einer Hierarchie werden in einer Tabelle gespeichert ''(Single Table Inheritance)''<br /> # Die Attribute jeder Klasse werden in einer separaten Tabelle gespeichert ''(Class Table Inheritance)''<br /> # Die Attribute jeder nicht [[Abstrakte Klasse|abstrakten Klasse]] werden in einer separaten Tabelle gespeichert ''(Concrete Table Inheritance)''<br /> <br /> Bei der ersten Variante ''(Single Table Inheritance)'' muss der Typ des Objekts in einer zusätzlichen [[Spalte (Datenbank)|Spalte]] gespeichert werden. Die Spalten der Attribute, die bei konkreten Objekten der Klassenhierarchie nicht vorhanden sind, enthalten [[Nullwert|Null-Werte]]. Beides ist bei den zwei letzten Varianten nicht nötig, die dritte Variante ist dabei eine Art Kompromiss.&lt;ref name=&quot;LahresRayman.6.3&quot;/&gt;<br /> <br /> Bei echten objektorientierten Datenbanken werden im Wesentlichen zwei gegensätzliche Strategien unterschieden: Persistenz durch Vererbung ''(by Inheritance)'' und orthogonale Persistenz. Bei der Persistenz durch Vererbung hängt die Eigenschaft, ob ein Objekt transient oder persistent ist, vom Typ ab, und wird durch Erben von einer Klasse etabliert, die die Funktionalität zur Anbindung an die Datenbank bereitstellt. Bei orthogonaler Persistenz können Objekte derselben Klasse sowohl persistent als auch transient sein, die Eigenschaft ist also völlig unabhängig vom Typ.&lt;ref&gt;Asbjørn Danielsen: ''[http://www.fing.edu.uy/inco/grupos/csi/esp/Cursos/cursos_act/2000/DAP_DisAvDB/documentacion/OO/Evol_DataModels.html The Evolution Of Data Models And Approaches To Persistence In Database Systems]'', [[Universität Oslo]], 1998&lt;/ref&gt;<br /> <br /> == Vererbung im Kontext der Softwarewartung ==<br /> Objektorientierte Elemente und dabei nicht zuletzt der Vererbungsmechanismus besitzen eine Ausdrucksstärke, die sich sehr positiv auf die Qualität und Verständlichkeit eines Systementwurfs auswirkt. Umfangreiche [[Klassenbibliothek]]en sind entstanden, deren Funktionalität mit Hilfe der Vererbung anwendungsspezifisch angepasst oder erweitert werden kann. Nicht zuletzt dank des Vererbungsmechanismus können Softwaresysteme [[Modul (Software)|modular]] aufgebaut werden, was die Beherrschbarkeit großer Systeme ermöglicht und beispielsweise auch [[Migration (Informationstechnik)|Portierungen]] erleichtert.&lt;ref name=&quot;Plödereder2001&quot;&gt;Erhard Plödereder: ''OOP-Sprachkonstrukte im Kontext der Softwarewartung''. Vortrag bei der Fachtagung ''Industrielle Software-Produktion'', Stuttgart 2001&lt;/ref&gt; Allerdings steigern unnötig tief verschachtelte Vererbungshierarchien die Komplexität und das Verständnis erheblich, was zu Fehlern bei Verwendung oder Änderung der Basisklassen führen kann.&lt;ref&gt;{{Literatur | Autor=Victor R. Basili, Lionel Briand, and Walcélio L. Melo | Herausgeber=University of Maryland, Department of Computer Science | Titel=A Validation of Object-Oriented Design Metrics as Quality Indicators | Sammelwerk=IEEE Transactions on Software Engineering | Band=22 | Nummer=10 | Jahr=1996 | Monat=Oktober | Seiten=751–761 | Sprache=en}}&lt;/ref&gt;<br /> <br /> Neben den positiven Aspekten haben sich bei der objektorientierten Programmierung auch negative Aspekte im Hinblick auf die [[Softwarewartung]] gezeigt, die vor allem im Zusammenhang mit der [[Polymorphie (Programmierung)|Polymorphie]], aber auch mit der Vererbung stehen.&lt;ref name=&quot;OffuttAlexander2001&quot;&gt;Jeff Offut, Roger Alexander: [http://www.cs.colostate.edu/~rta/publications/oofaults01.pdf ''A Fault Model for Subtype Inheritance and Polymorpism''.] (PDF; 119&amp;nbsp;kB) In: ''The Twelfth IEEE International Symposium on Software Reliability Engineering.'' Hong Kong 2001, Seite 84–95&lt;/ref&gt;<br /> <br /> === Ergänzung oder Anpassung einer Klassenschnittstelle ===<br /> Der wohl problematischste Fall ist die nachträgliche Änderung der Schnittstelle einer zentralen Klasse, von der es zahlreiche Spezialisierungen gibt, beispielsweise im Zusammenhang mit der Umstellung auf eine neue Version einer Klassenbibliothek. Hierbei sind vor allem zwei Fälle zu unterscheiden:&lt;ref name=&quot;Plödereder2001&quot;/&gt;<br /> <br /> # Hinzufügen einer neuen [[Virtuelle Methode|virtuellen Methode]]<br /> # Anpassung der [[Signatur (Programmierung)|Signatur]] einer bestehenden virtuellen Methode oder deren Umbenennung<br /> <br /> Falls im ersten Fall die neue Methode ohne Implementierung eingeführt wird, als Bestandteil einer [[Abstrakte Klasse|abstrakten Klasse]], müssen alle Spezialisierungen bei Versionsumstieg nun diese Funktionalität bereitstellen. Weit schwerwiegender ist allerdings, wenn in der Vererbungshierarchie in nachgeordneten Klassen bereits eine gleichnamige virtuelle Methode existierte. Dieser Fall kann in den meisten Sprachen nicht vom [[Compiler]] aufgedeckt werden. Diese bestehende virtuelle Methode wird nun in einem Kontext aufgerufen, für den sie nicht implementiert wurde. Wird dieses Problem nicht anhand der Bearbeitung der Dokumentation des Versionswechsels beseitigt, führt es zu inkorrektem Systemverhalten und meist zu einem [[Laufzeitfehler]].&lt;ref name=&quot;Plödereder2001&quot;/&gt;<br /> <br /> Im zweiten Fall muss die Umbenennung oder Signaturanpassung in den spezialisierenden Klassen nachgezogen werden. Erfolgt dies nicht, hängen die bisherigen Implementierungen nun „in der Luft“, das heißt, sie werden an erforderlichen Stellen nicht mehr aufgerufen, stattdessen wird eine in einer Basisklasse existierende Standardfunktionalität verwendet, die eigentlich vorgesehene angepasste Funktionalität kommt nicht mehr zur Ausführung. Auch dieses Problem kann in einigen Konstellationen nicht vom Compiler aufgedeckt werden.&lt;ref name=&quot;Plödereder2001&quot;/&gt;<br /> <br /> Die Sicherstellung, dass solche Probleme vom Compiler erkannt werden können, erfordert eigentlich eine vergleichsweise geringfügige Ergänzung einer Sprache. Bei [[C-Sharp|C#]] beispielsweise ist dies durch das Schlüsselwort &lt;code&gt;override&lt;/code&gt; abgedeckt. Bei allen Methoden, die eine virtuelle Methode der Basisklasse überschreiben, muss dieses Schlüsselwort angegeben werden. Dass in den meisten Sprachen wie auch C++ oder Java&lt;ref group=&quot;A&quot;&gt;In Java Version 1.5 wurde eine [[Annotation (Programmierung)|Annotation]] &lt;code&gt;@Override&lt;/code&gt; eingeführt, die das Problem aber nur teilweise löst, vor allem da man sie nicht benutzen muss.&lt;/ref&gt; eine derartige Unterstützung fehlt, liegt daran, dass dieser Aspekt bei Konzeption der Sprache keine ausreichende Berücksichtigung fand, und die nachträgliche Einführung eines solchen [[Schlüsselwort (Programmierung)|Schlüsselworts]] aufgrund großer [[Kompatibilität (Technik)|Kompatibilitätsprobleme]] auf erheblichen Widerstand stößt.&lt;ref name=&quot;Plödereder2001&quot;/&gt;<br /> <br /> === Fragile Base Class Problem ===<br /> → ''Hauptartikel: [[Fragile Base Class Problem]]''<br /> <br /> Auch ohne die Änderung einer Klassenschnittstelle kann es bei Umstellung auf eine neue Version einer Basisklasse zu Problemen kommen. Die Entwickler, die eine „zerbrechliche“ Basisklasse ändern, sind in diesem Fall nicht in der Lage, die negativen Konsequenzen vorauszuahnen, die sich für spezialisierte Klassen durch die Änderung ergeben. Die Gründe hierfür sind vielfältig, im Wesentlichen liegt ein Missverständnis zwischen den Entwicklern der Basisklasse und denen der verwendeten Spezialisierungen vor. Dies liegt zumeist daran, dass die Funktionalität der Basisklasse und auch das von den Spezialisierungen erwartete Verhalten nicht ausreichend präzise spezifiziert sind.&lt;ref name=&quot;LahresRayman.5.3&quot;&gt;Bernhard Lahres, Gregor Rayman: ''Praxisbuch Objektorientierung''. Seite 238–257, siehe Literatur&lt;/ref&gt;&lt;ref&gt;Leonid Mikhajlov, Emil Sekerinski: [http://www.pm.inf.ethz.ch/education/seminars/se/archive/2006_2007/presentations/papers/13.11.ecoop98FragileBaseClassProblem.pdf ''A Study of The Fragile Base Class Problem''.] (PDF; 518&amp;nbsp;kB) In: ''Proceedings of the 12th European Conference on Object-Oriented Programming'', 1998, ISBN 3-540-64737-6, Seite 355–382&lt;/ref&gt;<br /> <br /> Eine häufige Ursache des Fragile Base Class Problems ist die zu großzügige Offenlegung von Implementierungsdetails, die zumeist aus praktischen Gründen erfolgt, wobei auch Teile offengelegt werden, die in einer anfänglichen Version noch nicht ausgereift sind. Die Programmiersprachen erleichtern die Umsetzung sinnvoller Einschränkungen der Freiheitsgrade häufig nicht, beispielsweise sind in Java Methoden grundsätzlich virtuell und müssen als &lt;code&gt;final&lt;/code&gt; gekennzeichnet werden, wenn kein [[Überschreiben (OOP)|Überschreiben]] durch eine ableitende Klasse möglich sein soll.&lt;ref name=&quot;Bloch.2008.17&quot;&gt;[[Joshua Bloch]]: ''Effective Java''. Addison-Wesley, 2008, ISBN 0-321-35668-3, Seite 87–92&lt;/ref&gt;<br /> <br /> == Vererbung bei prototypenbasierter Programmierung ==<br /> Der Begriff Vererbung wird auch bei [[Prototypenbasierte Programmierung|prototypenbasierten Programmierung]] verwendet. Bei prototypenbasierten Sprachen wird aber nicht zwischen [[Klasse (Programmierung)|Klasse]] und instantiiertem [[Objekt (Programmierung)|Objekt]] unterschieden. Dementsprechend ist hier mit Vererbung nicht ganz dasselbe gemeint, denn ein durch [[Cloning (Programmierung)|Cloning]] erzeugtes neues Objekt „erbt“ nicht nur die Struktur des auch als ''Parent'' bezeichneten Originals, sondern auch die Inhalte. Der Mechanismus zur Nutzung der Methoden des ''Parent'' durch die Kopie ''(Child)'' entspricht eigentlich einer [[Delegation (Softwareentwicklung)|Delegation]]. Diese ist im Sinne einer Vererbung verwendbar, hat aber mehr Freiheitsgrade, beispielsweise ist bei einigen derartigen Sprachen der Adressat der Delegation –&amp;nbsp;und damit die „Basisklasse“&amp;nbsp;– zur Laufzeit austauschbar.&lt;ref name=&quot;Craig.3.1-3.4&quot;&gt;Iain D. Craig: ''Object-Oriented Programming Languages: Interpretation''. Seite 57–72, siehe Literatur&lt;/ref&gt;<br /> <br /> == Literatur ==<br /> * Iain D. Craig: ''Object-Oriented Programming Languages: Interpretation''. Springer, London 2007, ISBN 1-84628-773-1.<br /> * Bernhard Lahres, Gregor Rayman: ''Praxisbuch Objektorientierung. Von den Grundlagen zur Umsetzung''. Galileo Press, Bonn 2006, ISBN 3-89842-624-6.<br /> * Klaus Zeppenfeld: ''Objektorientierte Programmiersprachen. Einführung und Vergleich von Java, C++, C#, Ruby''. Spektrum Akademischer Verlag, München 2004, ISBN 3-8274-1449-0.<br /> * Ruth Breu: ''Objektorientierter Softwareentwurf. Integration mit UML''. Springer, Heidelberg 2001, ISBN 3-540-41286-7.<br /> * [[Grady Booch]], [[James Rumbaugh]], [[Ivar Jacobson]]: ''Das UML-Benutzerhandbuch.'' Addison-Wesley, Bonn 1999, ISBN 3-8273-1486-0.<br /> * Jürgen Kunz: ''Vererbung für Systementwickler. Grundlagen und Anwendungen''. Vieweg, Braunschweig 1995, ISBN 3-528-05308-9.<br /> * [[Bertrand Meyer]]: ''Objektorientierte Softwareentwicklung''. Hanser, München 1990, ISBN 3-446-15773-5.<br /> <br /> == Einzelnachweise ==<br /> &lt;references&gt;<br /> &lt;ref name=&quot;Sah2014&quot;&gt;{{Literatur<br /> | Autor = Manoj Kumar Sah and Vishal Garg<br /> | Titel = Survey on Types of Inheritance Using Object Oriented Programming with C++<br /> | Datum = 2014<br /> | Sammelwerk = International Journal of Computer Techniques <br /> | Band = 1<br /> | Seiten = <br /> | Online = http://www.ijctjournal.org/Volume1/Issue2/IJCT-V1I2P1.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;kuruvada2010use&quot;&gt;{{Literatur<br /> | Autor = Kuruvada, Praveen and Asamoah, Daniel and Dalal, Nikunj and Kak, Subhash<br /> | Titel = The Use of Rapid Digital Game Creation to Learn Computational Thinking<br /> | Datum = 2010<br /> | Sammelwerk = arXiv preprint arXiv:1011.4093 <br /> | Band = <br /> | Seiten = <br /> | Online = http://arxiv.org/pdf/1011.4093 <br /> }}&lt;/ref&gt;<br /> &lt;ref name=&quot;Adamsky2014&quot;&gt;{{Literatur<br /> | Autor = Florian Adamsky<br /> | Titel = Vererbung und Polymorphie<br /> | Datum = 2014<br /> | Sammelwerk = Technische Hochschule Mittelhessen, Softwareentwicklung im SS 2014 <br /> | Band = <br /> | Seiten = <br /> | Online = https://florian.adamsky.it/teaching/swt/Folien-SWT-SS14-Vererbung-Polymorophie.pdf <br /> }}&lt;/ref&gt;<br /> &lt;/references&gt;<br /> <br /> == Anmerkungen ==<br /> &lt;references group=&quot;A&quot; /&gt;<br /> <br /> == Weblinks ==<br /> * Axel Schmolitzky: ''Ein Modell zur Trennung von Vererbung und Typabstraktion in objektorientierten Sprachen.'' ([http://agis-www.informatik.uni-hamburg.de/fileadmin/swt/AxelsDateien/Schmolitzky-Diss-99.pdf PDF; 1,9&amp;nbsp;MB]) Universität Ulm<br /> * ''A Critical Look at Inheritance''. (englisch; [http://www.cs.ucy.ac.cy/courses/EPL603/Intro3.pdf PDF; 37&amp;nbsp;kB]) University of Cyprus<br /> <br /> {{Normdaten|TYP=s|GND=4277478-0}}<br /> <br /> {{Lesenswert|3. Juli 2009|61810189}}<br /> <br /> [[Kategorie:Programmierkonzept]]<br /> [[Kategorie:Objektorientierte Programmierung]]</div> ManuelRodriguez https://de.wikipedia.org/w/index.php?title=Defense_Advanced_Research_Projects_Agency&diff=161222270 Defense Advanced Research Projects Agency 2017-01-03T10:04:33Z <p>ManuelRodriguez: Abschnitt Rüstungsaufträge, Abschnitt Schwächen, Erweiterung bei Projekte</p> <hr /> <div>{{Infobox Militärische Einheit<br /> |Name = Defense Advanced Research Projects Agency&lt;br /&gt;– DARPA –<br /> |Bild = [[Datei:DARPA Logo.jpg|zentriert|140px]]<br /> |Beschriftung = Emblem der DARPA<br /> |Daten = <br /> |Startdatum = 1958<br /> |Enddatum = <br /> |Land = [[Vereinigte Staaten]] von Amerika<br /> |Streitkräfte = [[Streitkräfte der Vereinigten Staaten]] von Amerika<br /> |Teilstreitkraft =<br /> |Teilstreitkraft_Bezeichnung =<br /> |Truppengattung =<br /> |Typ =<br /> |Unterstellte_Einheiten =<br /> |Gliederung = <br /> |Mannstärke = 240<br /> |Teil_von = [[Verteidigungsministerium der Vereinigten Staaten]]<br /> |Stationierungsort = [[Arlington County]]<br /> |Stationierungsort_Bezeichnung =<br /> |Herkunft der Soldaten = <br /> |Historische Stationierungsorte = <br /> |Spitzname = <br /> |Inhaber = <br /> |Schutzpatron = <br /> |Motto =<br /> |Traditionsfolge = <br /> |Stammliste = <br /> |Stammnummer = <br /> |Farben = <br /> |Farben_Bezeichnung=<br /> |Marsch = <br /> |Maskottchen = <br /> |Ausrüstung = <br /> |Ausrüstung_Bezeichnung= <br /> |Schlachten = <br /> |Schlachten_Bezeichnung= <br /> |Jahrestage = <br /> |Auszeichnungen = <br /> |battle_honours = <br /> &lt;!-- Kommandeure --&gt;<br /> |Leitung_Bezeichnung = <br /> |Kommandeur1 = Arati Prabhakar&lt;ref&gt;http://www.darpa.mil/staff/dr-arati-prabhakar&lt;/ref&gt;<br /> |Kommandeur1_Bezeichnung = Director<br /> |Kommandeur2 = Steven H. Walker&lt;ref&gt;http://www.darpa.mil/staff/dr-steven-h-walker&lt;/ref&gt;<br /> |Kommandeur2_Bezeichnung = Deputy Director<br /> |Kommandeur3 =<br /> |Kommandeur3_Bezeichnung =<br /> |Kommandeur4 =<br /> |Kommandeur4_Bezeichnung =<br /> |Kommandeur5 =<br /> |Kommandeur5_Bezeichnung =<br /> |Wichtige_Kommandeure = <br /> &lt;!-- Insignien --&gt;<br /> |Identifikationssymbol =<br /> |Identifikationssymbol_Bezeichnung = <br /> |Identifikationssymbol2 = <br /> |Identifikationssymbol2_Bezeichnung = <br /> |Identifikationssymbol3 = <br /> |Identifikationssymbol3_Bezeichnung = <br /> &lt;!-- Luftfahrzeuge --&gt;<br /> |Luftfahrzeug_Schlacht = <br /> |Luftfahrzeug_Bomber = <br /> |Luftfahrzeug_EloKa = <br /> |Luftfahrzeug_Kampf = <br /> |Luftfahrzeug_Abfangen = <br /> |Luftfahrzeug_Patrouille = <br /> |Luftfahrzeug_Aufklärung = <br /> |Luftfahrzeug_Training = <br /> |Luftfahrzeug_Transport = <br /> }}<br /> [[Datei:Htv-1-usaf-darpa.jpg|mini|Modell des [[Hypersonic Technology Vehicle 2|Hypersonic-Technology-Vehicle]] HTV-1, eine Entwicklung im Rahmen des Gemeinschaftsprojekts<br /> [[DARPA FALCON Project|FALCON]] der [[United States Air Force|US Air Force]] und der DARPA]]<br /> <br /> Die '''Defense Advanced Research Projects Agency''' ('''DARPA''') ist eine Behörde des [[Verteidigungsministerium (Vereinigte Staaten)|Verteidigungsministeriums der Vereinigten Staaten]], die Forschungs-Projekte für die [[Streitkräfte der Vereinigten Staaten]] durchführt, u.&amp;nbsp;a. auch Weltraumprojekte. Das jährliche Budget beträgt etwa drei Milliarden US-Dollar (Stand 2012)&lt;ref&gt;[http://www.wired.com/2012/02/darpa-budget-death-ray/ www.wired.com]&lt;/ref&gt;.<br /> <br /> Ursprünglich wurde sie unter dem Namen ''Advanced Research Project Agency'' (ARPA) am 7. Februar 1958&lt;ref&gt;[http://www.darpa.mil/body/arpa_darpa.html www.darpa.mil]&lt;/ref&gt; von [[Dwight D. Eisenhower]] gegründet. Seit 1996 heißt sie wie bereits zwischen 1972 und 1993 DARPA. Dazwischen trug sie noch einmal für drei Jahre den Namen ARPA.<br /> <br /> == Geschichte ==<br /> Am 4. Oktober 1957 startete die [[Sowjetunion]] den [[Satellit (Raumfahrt)|Satelliten]] [[Sputnik]]. Dieses Ereignis löste in den [[Vereinigte Staaten|USA]] den so genannten [[Sputnik-Schock]] aus. Die Anstrengungen für die Entwicklung von [[Militär]]- und [[Raumfahrt]]technologien wurden intensiviert. Auch die ''Advanced Research Project Agency'' (ARPA) kann als Resultat des Sputnik-Schocks angesehen werden. Die Organisation fungierte als Koordinationsinstanz für Forschungsprojekte, denen finanzielle Unterstützung zugedacht wurde.<br /> <br /> DARPA unterhielt keine eigenen Forschungseinrichtungen, sondern nutzte hierzu das Potential der universitären und militärischen Forschungseinrichtungen. Auch wenn die Projekte durch das Militär gefördert wurden, war ein weiterer Aspekt der technologischen Forschung außerhalb der militärischen Nutzbarkeit auch die wirtschaftliche Verwertbarkeit der gewonnenen Erkenntnisse. Projekte, die durch die ARPA gefördert oder initiiert wurden, unterlagen in der Regel keiner strengen Geheimhaltung, sondern wurden von den Forschern, den beteiligten Forschungseinrichtungen und Unternehmen öffentlich publiziert und auf Kongressen vorgestellt. Zu den erfolgreichen Projekten zählen u.&amp;nbsp;a. [[Berkeley Software Distribution|BSD]]-Unix und [[TCP/IP-Referenzmodell|TCP/IP]].<br /> <br /> Als bekanntestes und erfolgreichstes Projekt kann das [[ARPANET]] angesehen werden, aus welchem das heutige [[Internet]] hervorging. 1969 verband das ARPANET die vier Rechnerknoten [[University of California, Los Angeles|University of California Los Angeles]], [[Stanford Research Institute]], [[University of California, Santa Barbara|University of California Santa Barbara]] und die [[University of Utah]].<br /> Außerdem wurden die [[Tarnkappentechnik|Tarnkappentechnologie]] ([[Have Blue]]/[[Lockheed F-117]]) und das [[Global Positioning System|GPS]] von der DARPA entwickelt.<br /> <br /> == Rüstungsaufträge == <br /> [[File:Section 2.1 Introduction To Small Business &amp; SBIR STTR (How Small Businesses Work With DARPA) (DARPA).ogv|thumb|Section 2.1 Introduction To Small Business &amp; SBIR STTR (How Small Businesses Work With DARPA) (DARPA)]]<br /> <br /> Die DARPA koordiniert die Militärforschung in den USA. Die eigentliche Forschung findet über [[Auftragnehmer|&quot;Government contractors&quot;]] statt.&lt;ref name=fuchs2009role /&gt; Als &quot;contract&quot; wird im angelsächsischen Sprachgebrauch ein [[Öffentlicher Auftrag]] bezeichnet. Manchmal spricht man auch von &quot;public auctions&quot;. Als Auftragnehmer können sowohl Rüstungsfirmen als auch Universitäten wie beispielsweise der Forschungsverbund [[University_of_California,_Berkeley|Berkeley]] auftreten. Zur Sicherstellung der Geheimhaltung wird eine [[Sicherheitsüberprüfungsgesetz|Security Clearance]] benötigt:<br /> <br /> {{Zitat|Raytheon ... Of the 9000 employees, 80% have top secret security clearance or higher|Quelle=Quelle: &lt;ref name=o2016cyber /&gt;, page 14}}<br /> <br /> Die Darpa denkt sich ein neues Projekt aus, was sie gerne haben möchte wie z.B. Entwicklung eines [[Optischer Computer|optischen Computers]], stellt das [[Budget]] bereit und Firmen wie [[Boeing]], [[Lockheed Martin]] oder das renommierte [[M.I.T.]] führen den Auftrag dann aus. Genauer gesagt bewerben sich die Contracters bei der Darpa um diesen Auftrag.&lt;ref name=grams2003transatlantische /&gt;<br /> <br /> Die enge Verzahnung zwischen Staat, Universitäten und privaten Firmen wurde ursprünglich im [[Zweiter Weltkrieg|2. Weltkrieg]] entwickelt um gegen [[Hitlerdeutschland]] zu gewinnen. In einem Vortrag am [[Computer History Museum]] wurde diese Frühzeit aufbereitet&lt;ref name=blank2008secret /&gt;. Es ging damals konkret um die [[Kammhuber-Linie|Himmelbett Radaranlage]]. Nach dem zweiten Weltkrieg wurde im [[Kalter Krieg|kalten Krieg]] an dieser Kooperation festgehalten und auf eine professionelle Ebene gestellt. Auch das [[Silicon Valley]] ist Teil des [[Militärisch-industrieller Komplex|militärisch-industriellen Komplexes]]&lt;ref name=Wesling2013 /&gt;. Nach außen hin wird das Bild von jungen unerfahrenen Gründern wie Mark Zuckerberg oder Steve Jobs inszeniert, tatsächlich ist das Silicon Valley ein Contractor für die DARPA&lt;ref name=o2016cyber /&gt;:<br /> <br /> {{Zitat|Equally effective is the transfer of ideas, techniques, personnel and technology from federally funded research projects at Stanford into startup firms in the Silicon Valley|Quelle=Quelle: &lt;ref name=lenoirinventing /&gt;, page 2}}<br /> <br /> Anders formuliert, die DARPA kontrolliert was im Silicon Valley passiert und die DARPA kontrolliert was an den Hochschulen geforscht wird. Man darf sich die Zusammenarbeit zwischen DARPA und Konzernen wie [[Google]] nicht so vorstellen, dass Google von Militärs infiltriert ist. es also eine [[Neue_Weltordnung_(Verschwörungstheorie)|Shadow Government]] gibt&lt;ref name=lofgren2014essay /&gt;. Ganz im Gegenteil, es gibt sogar eine klare Trennung zwischen den Interessen der DARPA und denen von Google.&lt;ref name=catledge2015debunking /&gt; Vielmehr ist es so, dass über das Instrument der [[Öffentlicher Auftrag|Auftragsvergabe]] die Zusammenarbeit erfolgt. Das heißt, Google löst ein Problem was die DARPA hat und erhält dafür dann eine Bezahlung. Wie das am Beispiel von [[Boston Dynamics]] aussieht (was durch Google aufgekauft wurde) wird in einem Artikel vom Online-Magazin [[Vice (Magazin)|&quot;Motherboard vice&quot;]] erläutert&lt;ref name=vice2013 /&gt;.<br /> <br /> Ein Beispiel für die Zusammenarbeit der DARPA mit befreundeten Ländern ist die Entwicklung einer [[Spracherkennung|Spracherkennungssoftware]] durch das [[Karlsruher Institut für Technologie]]&lt;ref name=ney2016anniversary /&gt;..<br /> <br /> === Tatsächliches Budget ===<br /> In TV-Serien wie [[Numbers – Die Logik des Verbrechens]] wird gerne behauptet, die DARPA würde über ein &quot;Shadow Budget&quot; verfügen. Tatsächlich erscheint das offizielle Budget was hier im Wikipedia Artikel mit 3 Milliarden US$ angegeben ist, doch etwas klein. Um sich ein Bild vom tatsächlichen Umfang zu machen, muss man zunächst einmal den Begriff der [[Intelligence Community]] einführen&lt;ref name=fuchs2009role /&gt;. Es handelt sich dabei um den Zusammenschluss von den großen Geheimdiensten wie [[NSA]], [[CIA]] und [[NRO]] mit einem Gesamtbudget von 50 Milliarden US$. Zusätzlich kann die [[Intelligence Community]] auch noch Rüstungsaufträge an externe Contractors vergeben&lt;ref name=Halchin2015 /&gt;.<br /> <br /> == Wichtige Projekte ==<br /> Im Rahmen der 5. Computergeneration (1980'er Jahre) wurde an [[Künstliche Intelligenz|Künstlicher Intelligenz]] geforscht&lt;ref name=roland2002strategic /&gt;. Dieses Projekt wurde danach in abgewandelter Form fortgeführt und erweitert um [[Supercomputing]]. Nach wie vor gilt die Realsierung von Künstlicher Intelligenz als zu schwer für die DARPA, zuletzt konnte man das auf der [[DARPA Robotics Challenge]] 2015 sehen wo mehrere Roboter das Gleichgewicht verloren.<br /> <br /> Im Rahmen von [[Technologische Singularität|Singularity]] und [[Transhumanismus]] soll Künstliche Intelligenz auf eine philosophische Ebene gebracht werden, die über die Entwicklung intelligenter Maschinen hinausgeht:<br /> <br /> {{Zitat|DARPA funds research into advanced technologies for military application, including research into artificial intelligence. For some transhumanists, artifical intelligence is a key factor in the approaching techno-social singularity.|Quelle=Quelle: &lt;ref name=evans2007singularity /&gt;, page 2}}<br /> <br /> Heute widmet sich die DARPA vorrangig der Terrorismusbekämpfung. In diesem Zusammenhang wurde beispielsweise das sehr umstrittene [[Information Awareness Office]] von der DARPA gegründet.<br /> <br /> 2003 rief die DARPA Forscher im Bereich [[Maschinelle Übersetzung]] zu einem „Blindwettbewerb“ auf. Sie sollten innerhalb eines Monats ein Übersetzungssystem von einer fremden Sprache nach Englisch entwickeln. „Blind“ bedeutet in diesem Zusammenhang, dass den Forschern erst am Starttag des Wettbewerbs mitgeteilt wurde, um welche Ausgangssprache es sich handelte, so dass sie gezwungen waren, Methoden vorzubereiten, die möglichst jede Sprache verarbeiten könnten. Das Ziel war, für die Sprachen kaum vorhersehbarer Konfliktherde (z.&amp;nbsp;B. [[Afghanistan]], [[Irak]]) möglichst schnell Übersetzungssysteme bereitstellen zu können, ohne die üblichen mehrere Jahre an Forschung und Entwicklung. Blindsprache war schließlich [[Hindi]]; der Wettbewerb wurde von dem Deutschen [[Franz Josef Och]]&lt;ref&gt;[http://www.uebersetzerportal.de/nachrichten/n-archiv/2003/2003-09/2003-09-17.htm Infos zu Franz Josef Och] Link geprüft 10. November 2009&lt;/ref&gt; mit einem auf statistischen Modellen basierenden Übersetzungssystem gewonnen.<br /> <br /> 2004/2005 fand die [[DARPA Grand Challenge]] statt, bei der autonome Landfahrzeuge gegeneinander konkurrierten.<br /> <br /> === Continuous Assisted Performance ===<br /> Ein Programm mit dem Titel „Continuous Assisted Performance“ will „mit biotechnologischen Mitteln (Implantaten, Manipulation des Stoffwechsels, etc.)“ erreichen, dass Soldaten bis zu sieben Tage lang wach bleiben können, ohne dabei den Verstand zu verlieren.&lt;ref name=&quot;netzztg253228&quot;&gt;{{Webarchiv | url=http://www.netzeitung.de/wissenschaft/253228.html | wayback=20030919004832 | text=Netzeitung vom 3. September 2003}} Link geprüft 10. November 2009&lt;/ref&gt;&lt;ref name=&quot;zeit-2003-08-21&quot;&gt;{{Internetquelle |url=http://www.zeit.de/2003/35/M-Modafinil?page=1 |titel=Medikamente: 100 Milligramm Arbeitswut |autor=David Plotz |werk=zeit.de |datum=2003-08-21 |zugriff=2014-12-08}}&lt;/ref&gt;<br /> <br /> Erste, vergleichsweise harmlose Versuche macht die amerikanische Luftwaffe seit Jahren und verordnet ihren Piloten die Einnahme von Dexedrin ([[Amphetamin]]). Auf solchen medikamentösen oder auch genetischen Wegen sollen künftig auch Muskel- und Ausdauerkraft der Soldaten erhöht werden – „Metabolic Dominance and Engineered Tissue“ heißt das Projekt.&lt;ref name=&quot;netzztg253228&quot; /&gt;<br /> <br /> Da die häufige Einnahme von Amphetamin jedoch gesundheitsschädlich ist, sucht die DARPA im Rahmen des ''Continuous Assisted Performance''-Programms nach Alternativen.<br /> <br /> In diesem Zusammenhang tauchen immer wieder Berichte über eine enge Kooperation mit dem US-Pharmahersteller [[Cephalon (Unternehmen)|Cephalon]] auf. Cephalon produziert unter anderem das Medikament Provigil (in Deutschland unter dem Namen Vigil erhältlich). Provigil (Wirkstoff: [[Modafinil]]) ist ein hochpotentes Aufputschmittel und gehört zu einer Gruppe psychostimulierender Medikamente, die sich in der Molekülstruktur von den Amphetamin-artigen Stimulanzien deutlich unterscheidet.<br /> <br /> Die DARPA und Cephalon sponserten der Harvard Universität erst kürzlich eine Studie, in der 16 gesunde Probanden 28 Stunden ohne Schlaf auskommen mussten. Die Personen mit Modafinilbeigabe schnitten in den kognitiven Tests besser ab als die mit Zucker-Placebo.&lt;ref name=&quot;heise-26412&quot;&gt;{{Internetquelle |url=https://www.heise.de/tp/artikel/26/26412/1.html |titel=Gehirn-Doping: Augen geradeaus |autor=Jörg Auf dem Hövel |werk=Telepolis |datum=2007-10-23 |zugriff=2014-12-08}}&lt;/ref&gt;<br /> <br /> === Ultraperformance Nanophotonic Intrachip Communication ===<br /> Anfang Februar 2008 hat die DARPA die amerikanische Softwarefirma [[Sun Microsystems|Sun]] mit der Forschung an neuen optischen Chip-Verbindungen beauftragt. Dafür stellt die DARPA Sun 44,29&amp;nbsp;Millionen US-Dollar zur Verfügung.<br /> <br /> Suns Forschungsauftrag ist Teil des DARPA-Projekts „Ultraperformance Nanophotonic Intrachip Communication“ und beschäftigt sich mit den optischen Netzwerken, um Chips miteinander zu verbinden. Das Ziel: der Bau von [[Supercomputer]]n mit sehr billigen Prozessoren, die über optische Netze miteinander verbunden sind und so sehr gut skalieren. Die optischen Verbindungen sollen dabei für hohen Datendurchsatz bei geringen [[Signallaufzeit|Latenzen]] sorgen.<br /> <br /> Dabei kooperiert Sun mit Proximity Communication, deren I/O-Technik zur Verbindung von Chips miteinander zum Einsatz kommt. Damit sollen so genannte virtuelle „Macrochips“ entstehen – eine große Zahl an einzelnen Chips, die gegenüber dem System wie ein einzelner sehr großer Chip arbeiten.&lt;ref&gt;[http://www.golem.de/0803/58551.html www.golem.de]&lt;/ref&gt;<br /> <br /> == Schwächen ==<br /> === veraltete Computerausstattung ===<br /> In der Theorie hat die DARPA Zugriff auf die allerneuste Technologie der USA und kann nach Belieben innovative Projekte anstoßen. Die Praxis ist jedoch von [[Bürokratie]] und ineffizienten Abläufen geprägt&lt;ref name=Crawford2005 /&gt;. Auch die Geheimhaltung, welche mit den Contractors vereinbart wurde, trägt dazu bei, dass jeder nur seine eigenen Probleme im Blick hat nicht jedoch das große ganze sieht. Soetwas führt ganz konkret dazu, dass bis heute die DARPA (obwohl sie für die Technikausstattung des [[Pentagon]] verantwortlich ist) es nicht geschafft hat, die dort installierten [[Windows XP]] Arbeitsplatzcomputer gegen leistungsfähige Systeme zu ersetzen &lt;ref name=mcgarry2015 /&gt;.<br /> <br /> === Paranoides Denken ===<br /> Innerhalb der DARPA, der angrenzenden [[Intelligence Community]] sowie den externen Kontraktoren gibt es eine Tendenz zum paranoiden Denken&lt;ref name=Weinberger2006 /&gt;&lt;ref name=moreno2004darpa /&gt;. Beispielsweise ist der [[Roswell-Zwischenfall|Roswell-Mythos]] ursprünglich innerhalb der [[Royal Air Force]] erdacht und weitererzählt worden unter der Bezeichnung [[Gremlin]]. Erst viel später wurde außerhalb des militärisch-industriellen Komplexes dieser Mythos als [[Verschwörungstheorie]] aufgegriffen. Weiterhin gibt es zahlreiche ehemalige Angestellte, die behaupten, dass an Geheimtechnologie geforscht wird:<br /> * [[Robert Lazar]], [[Area 51]]<br /> * [[Boyd Bushman]], [[Lockheed Martin]], behauptet dass es [[Außerirdisches Leben|Aliens]] gibt<br /> * [[James Bamford]], ehemaliger NSA-Analyst behauptet, dass die [[NSA]] Supercomputer unter der Erde bauen würde&lt;ref name=bamford2012nsa /&gt;<br /> <br /> [[File:Sr71 at national space museum.jpg|thumb|Sr71 at national space museum]]<br /> <br /> Auch in der offiziellen Produktpräsentation des [[Lockheed SR-71]] Flugzeuges verschwimmen die Grenzen zwischen Realität und Fiktion. Das reale Flugzeug SR-71 wird verglichen mit dem fiktionalen [[X-Men (Filmreihe)|X-Men]] X-Jet Flugzeug:<br /> <br /> {{Zitat|Featured prominently in both comic books and on the big screen, the X-Men’s official mode of transportation is heavily inspired by our SR-71 Blackbird. [...] In the X-Men universe, they use a brainwave-harnessing device called Cerebro to aid in reconnaissance. The SR-71’s primary imaging sensor, a photographic camera or a radar imaging sensor, was located in the nose of the aircraft|Quelle=Quelle: &lt;ref name=lockheed2016 /&gt;}}<br /> <br /> Die dazugehörigen Fotos sind optisch so nachbearbeitet worden, dass sie einem [[Hangar]] aus dem Starwars [[Todesstern]] ähneln&lt;ref name=lockheed2016 /&gt;.<br /> <br /> == Literatur ==<br /> * Katie Hafner und Matthew Lyon: ''Arpa Kadabra oder die Geschichte des Internet''. Übers. aus dem Amerikanischen von Gabriele Herbst. dpunkt-Verlag, Heidelberg 2000, 2. korrigierte Auflage, ISBN 3-932588-59-2.&lt;br /&gt;Originalausgabe: ''Where Wizards Stay Up Late: The Origins of the Internet''. Simon &amp; Schuster, New York 1996, ISBN 0-684-81201-0.<br /> <br /> == Siehe auch ==<br /> * [[DARPA Grand Challenge]]<br /> * [[Verteidigungsforschung]]<br /> * [[UCAS-D]] (Unmanned Combat Air System Demonstrator)<br /> <br /> == Weblinks ==<br /> {{Commonscat|Defense Advanced Research Projects Agency}}<br /> * [http://www.darpa.mil/ Homepage der DARPA]<br /> ** [http://www.darpa.mil/Our_Work/TTO/Programs/ Aktuelle Projekte des Tactical Technology Office der DARPA]<br /> * [https://www.youtube.com/user/DARPAtv DARPAtv] auf [[YouTube]]<br /> * [http://www.fuzo-archiv.at/artikel/253842v2 50 Jahre ARPA: An der Wiege des Internets] (Rückblick von ORF/Futurezone mit weiterführenden Quellangaben)<br /> * [https://www.heise.de/newsticker/meldung/print/103048 50 Jahre (D)ARPA]<br /> * [https://www.washingtonpost.com/wp-dyn/content/article/2008/04/06/AR2008040601821.html?hpid=sec-politics Stephen Barr: Federal Diary – The Idea Factory That Spawned the Internet Turns 50] („[[Washington Post]]“, 7. April 2008)<br /> <br /> == Einzelnachweise ==<br /> &lt;references&gt;<br /> &lt;ref name=blank2008secret&gt;{{cite journal<br /> | author = Blank, Steve<br /> | title = A Secret History of Silicon Valley<br /> | year = 2008<br /> | journal = Computer History Museum <br /> | volume = <br /> | pages = <br /> | url = https://www.youtube.com/watch?v=ZTC_RxWN_xo <br /> }}&lt;/ref&gt;<br /> &lt;ref name=ney2016anniversary&gt;{{cite journal<br /> | author = Ney, Hermann<br /> | title = Anniversary Symposium InterACT--25 years<br /> | year = 2016<br /> | journal = Karlsruhe Institute of Technology (KIT), Baden-Baden, Germany, July 14/15, 2016 <br /> | volume = <br /> | pages = <br /> | url = http://www.interact25.org/downloads/NEY_KIT_Interact25_Architectur_ANNASR_14Jul16.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=Crawford2005&gt;{{cite journal<br /> | author = Crawford, Diane<br /> | title = DARPA (and US) opportunities lost<br /> | year = 2005<br /> | journal = Communications of the ACM <br /> | volume = 48<br /> | pages = 11<br /> | url = http://mesl.ucsd.edu/gupta/DTeic/CACMForum05.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=moreno2004darpa&gt;{{cite journal<br /> | author = Moreno, Jonathan<br /> | title = DARPA on your mind<br /> | year = 2004<br /> | journal = Neuroethics Publications <br /> | volume = <br /> | pages = 30<br /> | url = http://repository.upenn.edu/cgi/viewcontent.cgi?article=1029&amp;context=neuroethics_pubs <br /> }}&lt;/ref&gt;<br /> &lt;ref name=catledge2015debunking&gt;{{cite journal<br /> | author = Catledge, Burton H<br /> | title = Debunking Technical Competency as the Sole Source of Innovation<br /> | year = 2015<br /> | journal = DTIC Document<br /> | volume = <br /> | pages = <br /> | url = http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA618530 <br /> }}&lt;/ref&gt;<br /> &lt;ref name=Weinberger2006&gt;{{cite journal<br /> | author = Weinberger, Sharon<br /> | title = Dr. DARPA—Or How the Pentagon Learned to Stop Worrying and Love…<br /> | year = 2006<br /> | journal = Citeseer <br /> | volume = <br /> | pages = <br /> | url = http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.981.3836&amp;rep=rep1&amp;type=pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=lofgren2014essay&gt;{{cite journal<br /> | author = Lofgren, Mike<br /> | title = Essay: Anatomy of the Deep State<br /> | year = 2014<br /> | journal = Bill Moyers and Company <br /> | volume = <br /> | pages = <br /> | url = http://www.gatherthepeople.org/Downloads/Deep_State.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=mcgarry2015&gt;{{cite journal<br /> | author = Brendan McGarry<br /> | title = Fixing the Pentagon’s Windows XP Problem<br /> | year = 2015<br /> | journal = defensetech.org <br /> | volume = <br /> | pages = <br /> | url = http://defensetech.org/2015/06/24/fixing-the-pentagons-windows-xp-problem/ <br /> }}&lt;/ref&gt;<br /> &lt;ref name=vice2013&gt;{{cite journal<br /> | author = DJ Pangburn<br /> | title = How Google Will Manage Its Role as a Defense Contractor<br /> | year = 2013<br /> | journal = motherboard.vice website <br /> | volume = <br /> | pages = <br /> | url = http://motherboard.vice.com/blog/how-google-will-manage-its-role-as-a-defense-contractor <br /> }}&lt;/ref&gt;<br /> &lt;ref name=lockheed2016&gt;{{cite journal<br /> | author = lockheedmartin.com<br /> | title = How the X-Men’s X-Jet Blackbird Compares to the Original SR-71<br /> | year = 2016<br /> | journal = Website <br /> | volume = <br /> | pages = <br /> | url = http://www.lockheedmartin.com/us/innovations/052416-webt-x-men-x-jet-sr-71-blackbird.html <br /> }}&lt;/ref&gt;<br /> &lt;ref name=lenoirinventing&gt;{{cite journal<br /> | author = Lenoir, Timothy<br /> | title = Inventing the Entrepreneurial University: Stanford and the Co-Evolution of Silicon Valley*(アントレプレナーの地域: スタンフォード 大学とシリコンバレーの共生と進化)<br /> | year = 2004<br /> | journal = Sophia University, Lecture <br /> | volume = <br /> | pages = <br /> | url = http://dept.sophia.ac.jp/is/amecana/J2/PDF/22-01Inventing_the_Enterpreneurial_University.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=evans2007singularity&gt;{{cite journal<br /> | author = Evans, Woody<br /> | title = Singularity warfare: A bibliometric survey of militarized transhumanism<br /> | year = 2007<br /> | journal = Journal of Evolution and Technology <br /> | volume = 16 (1)<br /> | pages = <br /> | url = https://philpapers.org/archive/EVASWA.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=roland2002strategic&gt;{{cite journal<br /> | author = Roland, Alex and Shiman, Philip<br /> | title = Strategic computing: DARPA and the quest for machine intelligence, 1983-1993<br /> | year = 2002<br /> | journal = MIT Press <br /> | volume = <br /> | pages = <br /> | url = https://books.google.de/books?id=eD4taFgeTUYC&amp;printsec=frontcover&amp;dq=darpa&amp;hl=de&amp;sa=X&amp;ved=0ahUKEwjVptTPlIjRAhXeeVAKHW0UCy0Q6AEIHDAA#v=onepage&amp;q=darpa&amp;f=false <br /> }}&lt;/ref&gt;<br /> &lt;ref name=o2016cyber&gt;{{cite journal<br /> | author = O’Malley, Connor<br /> | title = The Cyber-Industrial Complex<br /> | year = 2016<br /> | journal = Bemidji State University, Political Science Senior Thesis <br /> | volume = <br /> | pages = <br /> | url = https://www.bemidjistate.edu/academics/departments/political-science/wp-content/uploads/sites/40/2016/10/Omalley-Final.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=Halchin2015&gt;{{cite journal<br /> | author = L. Elaine Halchin<br /> | title = The Intelligence Community and Its Use of Contractors: Congressional Oversight Issues<br /> | year = 2015<br /> | journal = Congressional Research Service <br /> | volume = <br /> | pages = <br /> | url = https://fas.org/sgp/crs/intel/R44157.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=bamford2012nsa&gt;{{cite journal<br /> | author = Bamford, James<br /> | title = The NSA is building the country’s biggest spy center (watch what you say)<br /> | year = 2012<br /> | journal = Wired, March <br /> | volume = 15<br /> | pages = <br /> | url = http://hotredchiles.com/NSAcenter.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=Wesling2013&gt;{{cite journal<br /> | author = Paul Wesling<br /> | title = The Origins of Silicon Valley<br /> | year = 2013<br /> | journal = Presented at Int’l Wafer Level Packaging Conference <br /> | volume = <br /> | pages = <br /> | url = http://www.e-grid.net/docs/1311-wesling.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=fuchs2009role&gt;{{cite journal<br /> | author = Fuchs, Erica<br /> | title = The Role of DARPA in Seeding and Encouraging New Technology Trajectories: Pre-and Post-Tony Tether in the New Innovation Ecosystem<br /> | year = 2009<br /> | journal = Industry Studies Assocation, Carnegie Mellon <br /> | volume = <br /> | pages = <br /> | url = http://isapapers.pitt.edu/73/1/2009-01_Fuchs.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=grams2003transatlantische&gt;{{cite journal<br /> | author = Grams, Christoph<br /> | title = Transatlantische Rüstungskooperation<br /> | year = 2003<br /> | journal = Wandel und Bedeutung. Kieler Analysen zur Sicherheitspolitik <br /> | volume = 10<br /> | pages = <br /> | url = http://ruestungsexport-info.de/fileadmin/media/Dokumente/Hintergrundinformationen/Studien_Stellungnahmen/ISUK-TransatlantischeRuestungskooperation-Mai2003.pdf <br /> }}&lt;/ref&gt;<br /> &lt;/references&gt;<br /> <br /> {{Normdaten|TYP=k|GND=1029493-4|LCCN=n/79/4228|VIAF=132454617}}<br /> <br /> [[Kategorie:Defense Advanced Research Projects Agency| ]]<br /> [[Kategorie:Verteidigungsbehörde]]<br /> [[Kategorie:Behörde (Vereinigte Staaten)]]<br /> [[Kategorie:Arlington County]]<br /> [[Kategorie:Organisation (Virginia)]]<br /> [[Kategorie:Gegründet 1958]]</div> ManuelRodriguez https://de.wikipedia.org/w/index.php?title=Roboter&diff=161093680 Roboter 2016-12-30T09:19:24Z <p>ManuelRodriguez: Abschnitt soziale Robotik</p> <hr /> <div>{{Dieser Artikel|gibt einen allgemeinen Überblick. Eine Auflistung spezieller Robotertypen findet sich im Abschnitt [[#Roboterarten]].}}<br /> Ein '''Roboter''' ist eine technische Apparatur, die üblicherweise dazu dient, dem Menschen [[Mechanik|mechanische]] [[Arbeit (Physik)|Arbeit]] abzunehmen. Roboter können sowohl ortsfeste als auch mobile [[Maschine]]n sein und werden von [[Computerprogramm]]en gesteuert. Die Wortbedeutung hat sich allerdings im Laufe der Zeit gewandelt.<br /> <br /> == Bezeichnung ==<br /> Der Ursprung des Wortes ''Roboter'' liegt im [[Tschechische Sprache|tschechischen]] Wort ''robota'', das mit ‚[[Frondienst]]‘ oder ‚[[Zwangsarbeit]]‘ übersetzt werden kann. Die Bezeichnung ''robot'' wurde 1920 von [[Josef Čapek]], einem bedeutenden Literaten geprägt, dessen Bruder [[Karel Čapek]] ursprünglich den Namen ''labori'' verwendet hatte, als er in seinem Theaterstück [[R.U.R.]] in Tanks gezüchtete menschenähnliche künstliche Arbeiter auftreten ließ, die dafür geschaffen worden sind, menschliche Arbeit zu übernehmen, und die dagegen revoltieren.&lt;ref&gt;[[Tomáš Sedláček (Ökonom)|Tomáš Sedláček]]: ''Die Ökonomie von Gut und Böse.'' Hanser Verlag, München 2012, ISBN 978-3-446-42823-2, S. 36.&lt;/ref&gt; Mit seinem Werk griff Čapek das klassische, ebenfalls in der Prager Literatur der jüdischen Mystik verbreitete Motiv des [[Golem]]s auf. Heute würde man Čapeks Kunstgeschöpfe als ''[[Androide]]n'' bezeichnen. Vor der Prägung des Wortes ''Roboter'' wurden solche Maschinen ''[[Automat]]en'' oder ''Halbautomaten'' genannt.<br /> <br /> == Definitionen ==<br /> Während der Entwicklung von Handhabungsgeräten, die immer komplizierter wurden, kamen Entwickler auf die Idee, sie „Roboter“ zu nennen. Spätestens ab diesem Zeitpunkt wurde das Wort „Roboter“, welches ursprünglich nur für [[Humanoider Roboter|humanoide Roboter]] verwendet wurde, fast beliebig für verschiedene Geräte benutzt. Entsprechend unterschiedlich ist die Definition eines Roboters von Land zu Land. So kommt es, dass 1983 von Japan 47.000 dort installierte Roboter gemeldet wurden, von denen nach [[VDI-Richtlinie]] 2860 nicht einmal 3.000 als Roboter gegolten hätten.&lt;ref&gt;Michael Naval: ''Roboter-Praxis''. Vogel, Würzburg 1989, ISBN 3-8023-0210-9.&lt;/ref&gt;<br /> <br /> === Definition nach VDI-Richtlinie 2860 ===<br /> {{Zitat|Industrieroboter sind universell einsetzbare Bewegungsautomaten mit mehreren Achsen, deren Bewegungen hinsichtlich Bewegungsfolge und Wegen bzw. Winkeln frei (d.&amp;nbsp;h. ohne mechanischen bzw. menschlichen Eingriff) programmierbar und gegebenenfalls sensorgeführt sind. Sie sind mit Greifern, Werkzeugen oder anderen Fertigungsmitteln ausrüstbar und können Handhabungs- und/oder Fertigungsaufgaben ausführen.|[[VDI-Richtlinie]] 2860}}<br /> <br /> === Definition nach Robotic Industries Association ===<br /> {{Zitat |Text=A robot is a reprogrammable, multifunctional manipulator designed to move material, parts, tools or specialized devices through variable programmed motions for the performance of a variety of tasks |Übersetzung=Ein Roboter ist ein programmierbares Mehrzweck-Handhabungsgerät für das Bewegen von Material, Werkstücken, Werkzeugen oder Spezialgeräten. Der frei programmierbare Bewegungsablauf macht ihn für verschiedenste Aufgaben einsetzbar. |lang=en}}<br /> <br /> Aktueller ist die Auffassung, dass man unter einem Roboter ein Gerät versteht, das mindestens über drei frei bewegliche Achsen verfügt.&lt;ref&gt;http://definitions.uslegal.com/r/robotics/ abgerufen am 16. April 2012.&lt;/ref&gt;<br /> <br /> === Definition nach JARA ===<br /> Die [[Japan Robot Association]] gibt die folgenden Merkmale vor:<br /> * ''Manual Manipulator'': Handhabungsgerät, das kein Programm hat, sondern direkt vom Bediener geführt wird,<br /> * ''Fixed Sequence Robot'': Handhabungsgerät, das wiederholt nach einem konstanten Bewegungsmuster arbeitet. Das Ändern des Bewegungsmusters ist relativ aufwendig,<br /> * ''Variable Sequence Robot'': Handhabungsgerät, wie vorher beschrieben, jedoch mit der Möglichkeit, den Bewegungsablauf schnell und problemlos zu ändern,<br /> * ''Playback Robot'': Der Bewegungsablauf wird diesem Gerät einmal durch den Bediener vorgeführt und dabei im Programmspeicher gespeichert. Mit der im Speicher enthaltenen Information kann der Bewegungsablauf beliebig wiederholt werden,<br /> * ''Numerical Control Robot'': Dieses Handhabungsgerät arbeitet ähnlich wie eine NC-gesteuerte Maschine. Die Information über den Bewegungsablauf wird dem Gerät über Taster, Schalter oder Datenträger zahlenmäßig eingegeben,<br /> * ''Intelligent Robot'': Diese höchste Roboterklasse ist für Geräte gedacht, die über verschiedene Sensoren verfügen und damit in der Lage sind, den Programmablauf selbsttätig den Veränderungen des Werkstücks und der Umwelt anzupassen.<br /> <br /> == Geschichte der Robotik ==<br /> {{Hauptartikel|Robotik}}<br /> <br /> 2004 waren zwei Millionen Roboter im Einsatz.&lt;ref&gt;[http://www.golem.de/0612/49631.html golem.de:] Bill Gates: Ein Roboter in jedem Haushalt bis 2013.&lt;/ref&gt; Die deutsche Roboterbranche steigerte 2007 den Umsatz um 13 Prozent.&lt;ref&gt;[https://www.heise.de/newsticker/meldung/Roboterbranche-boomt-Deutsche-Firmen-rechnen-mit-starkem-Wachstum-211448.html heise.de:] Roboterbranche boomt: Deutsche Firmen rechnen mit starkem Wachstum&lt;/ref&gt; Nach Erhebungen des Robotikverbandes [[International Federation of Robotics]] haben sich im Jahr 2014 die Verkäufe von Industrierobotern im Vergleich zum Vorjahr um 29&amp;nbsp;% auf 229.261 Stück erhöht.&lt;ref&gt;ifr.org: ''[http://www.ifr.org/industrial-robots/statistics/ 2014: By far the highest volume ever recorded]'', Zugriff am 9. Februar 2015.&lt;/ref&gt; [[General Motors]] plant erste unbemannte Pkw im Test ab 2015{{Zukunft|2015}} und in der Serienproduktion ab 2018{{Zukunft|2018}}.&lt;ref&gt;[http://www.spiegel.de/auto/aktuell/0,1518,527135,00.html ''Autofahrer ab 2018 überflüssig''.] In: ''[[Spiegel Online]]'', 7. Januar 2008.&lt;/ref&gt;&lt;ref&gt;[http://www.golem.de/0801/56869.html golem.de:] CES: General Motors plant Autos ohne menschliche Fahrer&lt;/ref&gt;<br /> <br /> == Kulturgeschichte ==<br /> {{Hauptartikel|Kulturgeschichte der Roboter}}<br /> <br /> In der Literatur und anderen Medien wird der Roboter vor allem als „Maschinenmensch“ thematisiert beziehungsweise als autonomes Maschinenwesen, das dem Menschen als Helfer oder aber als Bedrohung gegenübersteht. Der heute im allgemeinen Sprachgebrauch verwurzelte Begriff ''Roboter'' entstammt ursprünglich einem Theaterstück der 1920er Jahre und ist ein Beispiel für die Wechselwirkung zwischen der Fiktion und dem realen Fortschritt der Technik. Roboter treten bereits in der Frühzeit des Films auf und sind, in unterschiedlichster Gestalt, ein wiederkehrendes Thema der [[Science-Fiction]].<br /> <br /> == Robotik ==<br /> {{Hauptartikel|Robotik}}<br /> Durch die häufige Thematisierung von Robotern in Film und Literatur wurde auch die Wissenschaft aufmerksam auf diese Art der Maschinen. Das wissenschaftliche Gebiet, das sich mit der Konstruktion von Robotern beschäftigt, heißt [[Robotik]]. Der Begriff wurde 1942 von [[Isaac Asimov]] in seiner Kurzgeschichte ''Runaround'' erstmals erwähnt. Ein allgemeines theoretisches wissenschaftliches Gebiet, welches sich mit Robotern beschäftigt, gibt es nicht. Sie sind meist Teilgebiete der Elektrotechnik, Informatik, Mechatronik oder des Maschinenbaus.<br /> <br /> === Technische Grundlagen ===<br /> Technisch realisiert werden Roboter hauptsächlich im Zusammenspiel der Disziplinen [[Mechanik]], [[Elektrotechnik]] und [[Informatik]]. Inzwischen hat sich aus der Verbindung dieser drei Disziplinen die [[Mechatronik]] entwickelt. Um autonome Systeme zu entwickeln, die eine gewisse Eigenständigkeit (beispielsweise beim [[Pathfinding]]) aufweisen, werden immer mehr wissenschaftliche Disziplinen in die Robotik eingebunden. Hier liegt ein Schwerpunkt der Verbindung von Konzepten der [[Künstliche Intelligenz|Künstlichen Intelligenz]] oder der [[Neuroinformatik]] und ihrer biologischen Vorbilder ([[Biologische Kybernetik]]). Aus der Verbindung von Biologie und Technik entstand wiederum die [[Bionik]].<br /> <br /> Wichtigste Bestandteile eines Roboters sind die Sensoren zur Erfassung der Umwelt und der Achspositionen, die Aktoren zum Agieren innerhalb der erfassten Umgebung, die Robotersteuerung und das mechanische Gestell inklusive der Getriebe. Ein Roboter muss nicht unbedingt vollständig autonom handeln können. Darum unterscheidet man [[Autonomer mobiler Roboter|autonome]] und ferngesteuerte Roboter.<br /> {{Siehe auch|Synchrodrive}}<br /> <br /> ==== Roboterkinematiken ====<br /> Der mechanische Aufbau eines Roboters wird mit Hilfe der Kinematik beschrieben. Dabei sind folgende Kriterien von Bedeutung:<br /> * Bewegungsform der Achsen<br /> * Anzahl und Anordnung der Achsen<br /> * Formen des Arbeitsraumes (kartesisch, zylindrisch, kugelig)<br /> <br /> Außerdem wird unterschieden in offene Kinematiken und geschlossene Kinematiken. Eine offene Kinematik ist dadurch gekennzeichnet, dass alle Achsen der kinematischen Kette hintereinander liegen, so wie an einem menschlichen Arm. Es ist also nicht jedes Glied der Kette mit zwei anderen Gliedern verbunden. In einer geschlossenen Kinematik hingegen ist jedes Glied mit mindestens zwei anderen Gliedern verbunden (Beispiel: Hexapodroboter).<br /> <br /> Die Begriffe Vorwärtskinematik und Inverse Kinematik (auch Rückwärtskinematik) bezeichnen die mathematische Modellierung der Bewegung von Robotersystemen. In der Vorwärtskinematik werden für jedes Gelenk der kinematischen Kette Einstellparameter vorgegeben (je nach Gelenktyp Winkel oder Strecken) und die daraus resultierende Position und Orientierung des Endeffektors im Raum wird berechnet. Bei der Rückwärtskinematik werden dagegen Position und Orientierung des Endeffektors vorgegeben und die erforderlichen Einstellparameter der Gelenke werden berechnet (Vorwärts- und Rückwärtstransformation).<br /> <br /> ===== Bewegungsform der Achsen =====<br /> Hier wird zwischen [[Translation (Physik)|translatorischen]] und [[Rotation (Physik)|rotatorischen]] [[Koordinatenachse|Achsen]] unterschieden.<br /> <br /> ===== Anzahl und Anordnung der Achsen =====<br /> Zur Beschreibung von Robotern wird sowohl die Anzahl als auch Anordnung der Achsen herangezogen. Hierbei sind die Reihenfolge und die Lage der Achsen zu berücksichtigen. Diese können im Falle einer seriellen (offenen) Kinematik wie mit der so genannten [[Denavit-Hartenberg-Transformation]] beschrieben werden.<br /> <br /> ===== Formen des Arbeitsraumes =====<br /> Obige Kriterien in Verbindung mit den Abständen der Achsen zueinander oder deren „Verfahrwege“ ergeben die Form und Größe des Arbeitsraumes eines Roboters. Gebräuchliche Arbeitsräume sind: Kubus, Zylinder, Kugel oder Quader.<br /> <br /> ==== Mathematik und Roboter ====<br /> ===== Häufig verwendete Koordinatensysteme bei Industrierobotern =====<br /> Die wichtigsten [[Koordinatensystem]]e (Abk. KOS) bei Robotern sind<br /> * das ''Basis- oder Welt-KOS'', das sich in der Regel im Roboterfuss befindet,<br /> * das ''Tool-KOS'', das sich im Roboterflansch befindet. Bezüglich dieses KOS ist der Tool Center Point (Abk. TCP) einzumessen, der den Arbeitspunkt des montierten Tools beschreibt. Der TCP kann in der Regel aus den [[CAD]]-Daten übernommen werden oder wird mit Hilfe des Roboters durch Messfahrten ermittelt,<br /> * das ''Werkstück-KOS'', das die Lage des Prozesses oder Werkstückes beschreibt und es festlegt oder einmisst. Die Positionen, die der Roboter anfährt, werden in der Regel in diesem KOS beschrieben. Der Vorteil eines Werkstückkoordinatensystems zeigt sich bei Änderungen der Anlage, da damit eine Wiederinbetriebnahme einfach durch Einmessung des Werkstück-KOS deutlich erleichtert wird. Zur Vermessung des Werkstück-KOS stehen meistens Routinen von den Roboterherstellern zur Verfügung. Grundsätzlich wird dabei in der Regel durch drei Punkte eine [[Ebene (Mathematik)|Ebene]] beschrieben.<br /> <br /> ===== Mathematische Beschreibung von Robotern =====<br /> Um Roboter überhaupt erstmal in Bewegung setzen zu können, müssen sie mathematisch beschrieben werden. Dies geschieht durch Transformationen (siehe auch ''[[Koordinatentransformation]]''). Dabei beschreibt die Transformation T die Lage eines Koordinatensystems in Relation zu einem Bezugskoordinatensystem. Da sich die Lage des KOS im allgemeinen Fall sowohl durch Verdrehungen als auch durch Translation ergeben kann, sind zur Berechnung ein rotatorischer – die Vektoren A, B und C als Einheitsvektoren – und auch ein translatorischer Anteil P, eine Verschiebung, notwendig.<br /> <br /> Mathematisch wird somit der dreidimensionale, rotatorische Anteil ergänzt um eine weitere Dimension, einen [[Vektor]], die kombiniert zu folgender [[Homogene Matrix|homogenen]] 4 × 4 – [[Matrix (Mathematik)|Matrix]] führen:<br /> <br /> :&lt;math&gt;T=\begin{pmatrix}Ax &amp; Bx &amp; Cx &amp; Px\\ Ay &amp; By &amp; Cy &amp; Py\\ Az &amp; Bz &amp; Cz &amp; Pz\\ 0 &amp; 0 &amp; 0 &amp; 1\end{pmatrix}&lt;/math&gt;<br /> <br /> Wird nun jeder Achse ein Koordinatensystem beispielsweise entsprechend der [[Denavit-Hartenberg-Transformation]] zugeordnet, ist man in der Lage, die Position beliebig vieler, aufeinander folgender Achsen zu berechnen. Praktisch lässt sich bereits die Berechnung von sechs Achsen nur mit einem erheblichen Schreibaufwand realisieren. Um nur eine [[Pose (Technik)|Pose]] (Position und Orientierung) zu berechnen, kann daher ein Hilfsmittel wie eine [[Tabellenkalkulation]] hilfreich sein. Ist die Berechnung mehrerer Posen notwendig, empfiehlt es sich, auf entsprechende mathematisch orientierte Softwareprodukte wie [[Matlab]] oder auf [[FreeMat]] zurückzugreifen.<br /> <br /> ===== Direkte Kinematik =====<br /> Die [[direkte Kinematik]] wird verwendet, um aus den gegebenen Achswinkeln, also den Verschiebungen der Gelenke eines Roboters, die kartesischen Koordinaten und die Orientierung des TCPs zu ermitteln. Sind die Denavit-Hartenberg-Parameter (&lt;math&gt;\theta, d, a, \alpha&lt;/math&gt;) bekannt, so kann mit<br /> :&lt;math&gt;T=\begin{pmatrix}\cos\theta &amp; -\sin\theta \cos\alpha &amp; \sin\theta \sin\alpha &amp; a \cos\theta\\ \sin\theta &amp; \cos\theta \cos\alpha &amp; -\cos\theta \sin\alpha &amp; a \sin\theta\\ 0 &amp; \sin\alpha &amp; \cos\alpha &amp; d\\ 0 &amp; 0 &amp; 0 &amp; 1\end{pmatrix}&lt;/math&gt;<br /> die Transformation zwischen zwei Achsen bestimmt werden. Verallgemeinert ergibt sich:<br /> :&lt;math&gt;{}^{n - 1}T_n<br /> = \begin{pmatrix}<br /> \cos\theta_n &amp; -\sin\theta_n \cos\alpha_n &amp; \sin\theta_n \sin\alpha_n &amp; a_n \cos\theta_n \\<br /> \sin\theta_n &amp; \cos\theta_n \cos\alpha_n &amp; -\cos\theta_n \sin\alpha_n &amp; a_n \sin\theta_n \\<br /> 0 &amp; \sin\alpha_n &amp; \cos\alpha_n &amp; d_n \\<br /> 0 &amp; 0 &amp; 0 &amp; 1<br /> \end{pmatrix}.&lt;/math&gt;<br /> <br /> Für Industrieroboter mit den üblichen sechs Achsen ist diese Transformation somit fünfmal durchzuführen. Um einen TCP zu berücksichtigen, wird eine weitere Transformation angefügt. Bei der Vorwärtstransformation ergibt sich somit für einen sechsachsigen Roboter mit Tool<br /> :&lt;math&gt;T=T_1T_2T_3T_4T_5T_{tcp}.&lt;/math&gt;<br /> Damit kann nun die Position und Orientierung des TCPs bezogen auf den Roboterfuss berechnet werden. Darüber hinaus ist diese Berechnung auch für Roboter mit mehr als sechs Achsen eindeutig.<br /> <br /> ===== Inverse Kinematik =====<br /> Die so genannte [[Inverse Kinematik]] wird eingesetzt, um bei vorgegebener Position und Orientierung des TCP zu berechnen, welche Gelenkparameter (Winkel oder Verschiebung) in den einzelnen Gliedern eingestellt werden müssen, um dieses Ziel zu erreichen. Sie ist somit die Umkehrung der Vorwärtstransformation. Grundsätzlich gibt es zwei Lösungsansätze, einen geometrischen und einen analytischen.<br /> <br /> ==== Roboterauswahl ====<br /> Bei der Wahl eines Roboters sind verschiedene Kriterien von Bedeutung: Traglast, deren Schwerpunkt und Eigenträgheit, der Arbeitsbereich in dem der Prozess stattfinden soll, die Prozessgeschwindigkeit oder die Zykluszeit und die Genauigkeit des Roboters. Letztere wird auf der Basis der ISO 9283 ermittelt. Dabei wird im Wesentlichen zwischen der Genauigkeit der Position (hier wird auch von Pose gesprochen) und der Bahngenauigkeit unterschieden. Für die Pose als auch für die Bahn wird in der Regel sowohl die so genannte Absolut- als auch die Wiederholgenauigkeit ermittelt. Dabei spiegelt die Absolutgenauigkeit den Unterschied zwischen der tatsächlichen und der theoretischen, der programmierten, Pose oder Bahn wider. Hingegen ergibt sich die Wiederholgenauigkeit aus mehreren Fahrten oder Messungen des Roboters auf theoretisch die gleiche Position oder Bahn. Sie ist somit ein Maß für die Streuung, die bei den meisten praktischen Anwendungen von größerer Bedeutung ist als die Absolutgenauigkeit. Im Übrigen kann die Absolutgenauigkeit eines Roboters durch eine [[Roboterkalibrierung]] verbessert werden, hingegen ergibt sich die Wiederholgenauigkeit im Wesentlichen aus dem [[Getriebe]]spiel und kann somit softwaretechnisch praktisch nicht kompensiert werden.<br /> <br /> == Roboterarten ==<br /> [[Datei:2 komponenten einfachdosierer auf portal.jpg|mini|Portalroboter mit [[Linearführung]]en]]<br /> Der Begriff „Roboter“ beschreibt ein weitgefächertes Gebiet, weshalb man Roboter in viele Kategorien einordnet. Einige davon sind:<br /> ;nach Konstruktionsweise<br /> * [[autonome mobile Roboter]]<br /> * [[Beam (Robotik)|Beam]]<br /> * [[humanoide Roboter]]<br /> * [[Kognitive Robotik|kognitive Roboter]]<br /> * [[Laufroboter]]<br /> * [[Portalroboter]]<br /> <br /> ;nach Verwendungszweck<br /> <br /> * Erkundungsroboter<br /> * [[Industrieroboter]]<br /> * [[Medizinroboter]]<br /> * [[Personal Robot]]<br /> * [[Serviceroboter]]<br /> * [[Spielzeugroboter]]<br /> * Transportroboter&lt;ref&gt;[https://www.heise.de/newsticker/meldung/Chaotisches-Roboter-Lager-beschleunigt-Auslieferung-174972.html heise.de:] Chaotisches Roboter-Lager beschleunigt Auslieferung&lt;/ref&gt;<br /> <br /> === Autonome mobile Roboter ===<br /> {{Hauptartikel|Autonomer mobiler Roboter}}<br /> [[Datei:RoboCore Robot Sumo.jpg|mini|[[Robotersumo]]]]<br /> <br /> Autonome, mobile Roboter bewegen sich selbstständig und erledigen ohne menschliche Hilfe eine Aufgabe. Der Bau von autonomen, mobilen Robotern ist ein beliebtes Teilgebiet der [[Hobbyelektronik]]. Typische Funktionen von solchen Robotern sind z.&amp;nbsp;B.: einer Linie auf dem Boden folgen, Hindernissen ausweichen, [[Robotersumo]] oder einer Lichtquelle folgen. Für einige dieser Roboterarten gibt es Wettkämpfe. Der Bau von autonomen, mobilen Robotern wird auch von Schülern als Abschlussarbeit gewählt. Bereits im Kindesalter lassen sich solche Roboter mit Bausätzen wie z.&amp;nbsp;B. mit [[Lego Mindstorms]] bauen.<br /> <br /> Mit [[Compressorhead]] existiert eine komplett aus Robotern bestehende Rockband, die verschiedene bekannte Metal- und Punksongs covert.<br /> <br /> === Humanoide Roboter ===<br /> [[Datei:HONDA ASIMO.jpg|mini|hochkant|Humanoider Roboter ''[[ASIMO]]'']]<br /> [[Datei:Ars Electronica 2008 Kotaro.jpg|mini|links|Humanoider Roboter ''[[Kotaro]]'']]<br /> {{Hauptartikel|Humanoider Roboter}}<br /> Das Bild des humanoiden Roboters in der Literatur wurde, wie bereits erwähnt, maßgeblich durch die Erzählungen Isaac Asimovs in den 1940er Jahren geprägt. Humanoide Roboter waren lange Zeit technisch nicht realisierbar. Für die Entwicklung humanoider Roboter müssen viele wichtige Probleme gelöst werden. Sie sollen autonom in ihrer Umwelt reagieren und möglichst auch interagieren können, wobei ihre Mobilität durch zwei Beine als Fortbewegungsmittel beschränkt ist. Außerdem sollen sie durch zwei künstliche Arme und Hände Arbeiten verrichten können. Seit 2000 ([[ASIMO]] von [[Honda]]&lt;ref&gt;[https://www.heise.de/newsticker/meldung/Hondas-humanoider-Roboter-laeuft-schneller-und-sicherer-131590.html heise.de:] Hondas humanoider Roboter läuft schneller und sicherer&lt;/ref&gt;) scheinen die grundlegenden Probleme gelöst. Inzwischen werden regelmäßig neue Entwicklungen in diesem Bereich vorgestellt (siehe z.B. [[Atlas (Roboter)|Atlas]]).<br /> <br /> Die meisten Humanoiden gehören zur Gattung der [[Laufroboter]], während einige Systeme auch mit einer mobilen Basis auf Rädern ausgestattet sind.<br /> <br /> === Industrieroboter ===<br /> {{Hauptartikel|Industrieroboter}}<br /> [[Datei:Industrieroboter.jpg|mini|[[Industrieroboter]]]]<br /> 1954 meldete George Devol erstmals ein Patent für Industrieroboter an. Heutige Industrieroboter sind in der Regel nicht mobil. Grundsätzlich sind sie vielseitig einsetzbar, jedoch in Verbindung mit dem eingesetzten Werkzeug sind sie speziell auf ein oder wenige Einsatzgebiete festgelegt. Dabei wird das Werkzeug am Flansch des Roboters in der Regel fest montiert und ist im einfachsten Fall ein Greifer, der den Roboter für Handlingaufgaben prädestiniert. Soll der Roboter vielseitiger eingesetzt werden, so kommen Kupplungen zum Einsatz, die einen Tausch des Werkzeuges auch während des Betriebes ermöglichen.<br /> <br /> 1961 wurden sie erstmals bei [[General Motors]] in [[Produktionslinie]]n eingesetzt. In Deutschland wurden Industrieroboter, beispielsweise für [[Schweißen|Schweißarbeiten]] in der [[Automobilindustrie]], seit etwa 1970 eingesetzt. Weitere Einsatzgebiete für Industrieroboter sind Handling, Palettieren, Bestücken, Fügen, Montieren, [[Kleben]], Punkt- und Bahnschweißen und auch Messaufgaben.<br /> <br /> Durch die Vielseitigkeit von Industrierobotern sind diese bis heute am weitesten verbreitet. Zu den Industrierobotern zählen auch die so genannten [[Portalroboter]], die beispielsweise bei der Produktion von [[Wafer]]n, in [[Vergussanlage]]n oder in der [[Messtechnik]] als Koordinatenmessgerät eingesetzt werden. Heute werden auch viele [[Handhabungseinrichtung|Handlingaufgaben]] durch Industrieroboter ausgeführt.<br /> <br /> === Medizinroboter ===<br /> [[Medizinroboter]] werden in verschiedenen Bereichen der Medizin eingesetzt. Diese sind unter anderem Chirurgie, Diagnostik und Pflege. Die bekanntesten kommerziellen Vertreter sind das [[da Vinci-Operationssystem]] (Intuitive Surgical, Sunnyvale, CA, USA), der Artis Zeego (Siemens Healthcare, Erlangen, Deutschland) und der [[Care-O-bot]] (Fraunhofer IPA, Stuttgart, Deutschland; nicht kommerziell erhältlich). Daneben gibt es eine große Zahl an wissenschaftlichen medizinischen Robotersystemen in der Forschung.<br /> <br /> === Serviceroboter ===<br /> {{Hauptartikel|Serviceroboter}}<br /> ==== Serviceroboter für Privatpersonen ====<br /> [[Datei:FRIEND-III klein.png|mini|[[Assistenzroboter FRIEND]]]]<br /> Serviceroboter verrichten selbständig Arbeiten im Haushalt. Bekannte Anwendungen umfassen:<br /> * [[Staubsaugerroboter]], beispielsweise von ''[[Electrolux]],'' ''[[Siemens]]'' oder ''[[iRobot]]''<br /> * [[Rasenmähroboter]]<br /> * [[Fensterreinigungsroboter]]<br /> * [[Assistenzroboter]] bzw. AAL-Roboter (Ambient Assisted Living), beispielsweise der [[Assistenzroboter FRIEND]], der am Institut für Automatisierungstechnik der Universität Bremen entwickelt wurde und behinderte und ältere Personen bei den Aktivitäten des täglichen Lebens unterstützen und ihnen eine Reintegration ins Berufsleben ermöglichen soll, oder [[Care-O-bot]].<br /> * [[Mobilisse]], Sprachgesteuerter Auskunfts- und Serviceroboter im Verkehrsumfeld die z.&amp;nbsp;B. für mobilitätseingeschränkte Reisende einfache Handgriffe erledigen und schwere Lasten abnehmen (Information, Wegeleitung, Gepäcktransport, Einstiegshilfe).<br /> <br /> {{Siehe auch|Personal Robot}}<br /> <br /> ==== Professionelle Serviceroboter ====<br /> Professionelle Serviceroboter erbringen Dienstleistungen für Menschen außerhalb des Haushalts. Eine professionelle Anwendung wurde z.&amp;nbsp;B. im Umweltbereich im Forschungsvorhaben PV-Servitor&lt;ref&gt;[http://de.pv-servitor.eu/Hauptseite.shtml PV-Servitor:] Autonomer Reinigungsroboter für Solarkraftwerke in Europa&lt;/ref&gt; erforscht. Als professioneller Service wurde die automatische Reinigung und Inspektion großflächiger Photovoltaik Freilandanlagen in Europa untersucht.<br /> * Serviceroboter zur Reinigung und Inspektion von Solarkraftwerken<br /> <br /> === Spielzeugroboter ===<br /> [[Datei:Robocup 2005 Aibos.jpg|mini|Der [[Spielzeugroboter]] [[Aibo]] im Turnier]]<br /> {{Hauptartikel|Spielzeugroboter}}<br /> Die meisten roboterähnlichen Spielzeuge sind keine Roboter, da ansonsten sämtliche selbst bewegende Gegenstände als Roboter anzusehen wären. Trotzdem gibt es Roboter, die man als Spielroboter bezeichnet, da ihr automatisierter Funktionsumfang im Wesentlichen keinen arbeits- oder forschungstechnischen Nutzen hat. Ein Beispiel hierfür ist der einem Hund ähnelnde Lauf- und Spielroboter [[Aibo]] von [[Sony]] oder der [[Robosapien]] von [[WowWee]]. Diese Spieleroboter werden in der Four-Legged League beim jährlichen [[Robocup|Roboterfußball]] eingesetzt. Seine Produktion wurde trotzdem eingestellt.<br /> Ein weiteres Beispiel ist die [[Lego Mindstorms|Lego-Mindstorms-Serie]], die zu Bildungszwecken in Schulen verwendet wird.&lt;ref&gt;[http://www.roberta-home.de/ &quot;Roberta - Lernen mit Robotern&quot;] Eine Initiative von Fraunhofer IAIS&lt;/ref&gt; Es lassen sich allerdings auch umfangreichere Maschinen mit den Mindstorms herstellen, deren Funktionalitäten denen professioneller [[Serviceroboter]] entspricht.<br /> <br /> === Erkundungsroboter ===<br /> [[Datei:Global Hawk - ILA2002.jpg|mini|[[Global Hawk]] auf der ILA 2002]]<br /> Unter ''Erkundungsrobotern'' versteht man Roboter, die an Orten operieren, die für den Menschen (lebens-)gefährlich oder gar unzugänglich sind und ferngesteuert oder (teilweise) autark operieren. Dies gilt für Gebiete, in denen ein militärischer Konflikt ausgetragen wird. Aber auch für Gegenden, die bisher für den Menschen nur sehr schwer oder gar nicht erreichbar sind, wie die Mond- oder Marsoberfläche. Schon allein wegen der riesigen Entfernung der anderen Planeten ist eine Fernsteuerung von der Erde aus unmöglich, weil die Signale hin und zurück Stunden benötigen würden. In diesen Fällen muss dem Roboter eine Vielzahl von möglichen Verhaltensweisen einprogrammiert werden, wovon er die sinnvollste wählen und ausführen muss.<br /> <br /> Zur Erkundung enger [[Pyramide (Bauwerk)|Pyramidenschächte]], in die Menschen nicht eindringen können, wurden schon mit [[Sensor]]en bestückte Roboter eingesetzt. Es wird auch darüber nachgedacht, einen sogenannten Cryobot, der sich durch Eis schmilzt, in den [[Wostoksee]] herab zu lassen. Dieser ist von der Außenwelt durch eine über drei Kilometer dicke Eisschicht hermetisch abgeriegelt. Forscher vermuten in diesem ein unberührtes Ökosystem, was auf gar keinen Fall durch „oberirdische“ Mikroben kontaminiert werden soll.<br /> <br /> ==== Militärroboter ====<br /> {{Hauptartikel|Militärroboter}}<br /> ''Militärroboter'' sind Roboter, die zu militärischen Aufklärungs- und Kampfzwecken eingesetzt werden. Diese können sich in der Luft, zu Land oder auf und unter Wasser selbstständig also autark bewegen. Beispiele hierfür sind die luftgestützte [[Global Hawk]] oder die landgestützte [[SWORDS]]. Diese können sowohl zur reinen Selbstverteidigung als auch zum aktiven Angriff auf Ziele Waffen mit sich tragen.<br /> <br /> ==== Rover und Lander ====<br /> Unter einem ''[[Rover (Raumfahrt)|Rover]]'' versteht man in der Raumfahrt Roboter, die sich mobil auf der Oberfläche anderer Himmelskörper fortbewegen. Beispiele hierfür sind die sowjetischen [[Lunochod]]-Mondmobile oder die Zwillingsroboter [[Spirit (Raumsonde)|Spirit]] und [[Opportunity]]. Letztere können sich unabhängig von der Bodenkontrolle ihren Weg suchen. Auch nichtmobile Einheiten, sogenannte ''[[Lander]]'', können als Roboter bezeichnet werden. Die [[Lunar Roving Vehicle|Mondrover]] der Apollomissionen waren keine Roboter, weil sie direkt von Menschen gesteuert wurden.<br /> <br /> ==== Personal Robots ====<br /> {{Hauptartikel|Personal Robot}}<br /> Personal Robots (kurz ''PR'', engl. für „persönlicher Roboter“) sind Roboter, die im Gegensatz zu Industrierobotern dazu bestimmt sind, mit Personen und anderen Personal Robots in Netzwerken zu kommunizieren und zu interagieren. Personal Robots können von einer einzelnen Person bedient, genutzt und gesteuert werden.<br /> <br /> Eine Unterteilung in öffentlich genutzte Personal Roboter wie Serviceroboter und personengebundene Personal Roboter wie Spielzeugroboter ist, wie bei den Personal Computern, sinnvoll. Durch die abgeschlossene Konstruktion der PR funktionieren diese Maschinen weitgehend unabhängig, autonom, autark und selbständig. Die Personal Robots sind zunehmend lernfähig. Vielfache Schnittstellen ermöglichen eine Kommunikation in Netzwerken. So mit anderen Robotern, Computern usw. Personal Robots reagieren mit Ihren Sensoren auf äußere Einflüsse wie Berührungen, Töne, Laute, optische Veränderungen usw. Personal Robots speichern Daten und Informationen. Erworbene Erfahrungen beeinflussen sie und so realisieren die PRs mit diesen Erkenntnissen ihr weiteres Handeln.<br /> <br /> ==== Sonstige Erkundungsroboter ====<br /> [[Datei:Roboter 2.jpg|mini|hochkant|Roboter der [[Polizei (Israel)|israelischen Polizei]] bei der Untersuchung eines verdächtigen Gegenstandes]]<br /> Ebenfalls als Roboter bezeichnet man mobile Einheiten, die zum Aufspüren, Entschärfen oder Sprengen von Bomben oder Minen eingesetzt werden, wie der sogenannte [[TALON]]-Roboter. Auch gibt es Roboter, die in Trümmern nach verschütteten Menschen suchen können, sog. Rettungsroboter ( engl.Rescue robots).&lt;ref&gt;[http://www.th-nuernberg.de/institutionen/fakultaeten/elektrotechnik-feinwerktechnik-informationstechnik/1/prof-dr-may/prof-dr-stefan-may/projekte/rettungsroboter/page.html Roboterassistenz für die Erkundung in Rettungsmissionen] th-nuernberg.de; [[:en:Rescue robot|Rescue robot]] wp.en&lt;/ref&gt;&lt;ref&gt;Robin R. Murphy: ''Disaster Robotics.'' MIT Press, Cambridge, 2014, ISBN 978-0-262-02735-9.&lt;/ref&gt; Mittlerweile gibt es auch den sog. Killer-Roboter (vgl. auch [[Kampfroboter]]).&lt;ref&gt;[http://www.golem.de/0701/50167.html golem.de:] Samsung entwickelt Killer-Roboter für die Objektsicherung&lt;/ref&gt;&amp;nbsp;&lt;ref&gt;[https://www.heise.de/newsticker/meldung/Robocop-soll-die-innerkoreanische-Grenze-schuetzen-138623.html heise.de:] Robocop soll die innerkoreanische Grenze schützen&lt;/ref&gt; [[Autonomous Underwater Vehicle]] sind autonome Tauchroboter für Aufgaben im Meer.<br /> <br /> === Soziale Robotik ===<br /> ''Soziale Robotik'' erforscht Interaktionsmöglichkeiten zwischen Robotern und ihrer Umwelt. Anwendungsmöglichkeiten sind die [[Autismus]]therapie für Kinder&lt;ref name=savicic2010gesprachsakzeptanz /&gt; und die [[Altenpflege|Pflege älterer Menschen]]&lt;ref name=Hirmann2015 /&gt;. Wichtige Forscher auf dem Gebiet sind [[Cynthia Breazeal]] und [[Frauke Zeller]].<br /> <br /> Soziale Robotik kann man als Gegenentwurf zu Industrierobotern betrachten. Es fehlt eine praktisch nutzbare Funktion&lt;ref name=scholtz2008taglich /&gt;, sie bauen soziale Beziehungen auf und passen sich an ihre Umwelt an. In einigen Diskursen wird die Rolle von &quot;social Robotics&quot; noch weiter gefasst. So werden Roboter als Lebewesen betrachtet und es wird von Unterordnung in Form eines [[Sozialstruktur|sozialen Gefälles]] gesprochen&lt;ref name=krahling2006between /&gt;.<br /> <br /> ==== Geschichte ====<br /> [[William Grey Walter]] hat in den 1940'er Jahren Schildkrötenroboter gebaut&lt;ref name=savicic2010gesprachsakzeptanz /&gt;. Diese sind bekannt geworden unter der Bezeichnung &quot;Tortoises&quot;&lt;ref name=Hoggett2011 /&gt;. Mark W. Tilden hat in den 1990'er Jahren sogenannte [[Beam (Robotik)|BEAM Roboter]] erfunden:<br /> {{Zitat<br /> |Text=The BEAM robots follow a similar approach to the early Braitenberg Vehicle designs in that they use simple interlinked behaviours and mostly direct connections between sensors and actuators.<br /> |Quelle=&lt;ref name=rosenkind2015creating /&gt; page 63<br /> }}<br /> <br /> Ab den 2000'er kam es zu einem regelrechten Boom:<br /> * [[Kismet (Roboter)]]&lt;ref name=Klug2012 /&gt;<br /> * Leonardo (Roboter)<br /> * [[Paro (Roboter)]]<br /> * [[Aibo]]<br /> * [[Hitchbot]]&lt;ref name=Smith2016 /&gt;<br /> <br /> ==== Technische Realisierung ====<br /> Die Hardware besteht aus einem flauschigem Fell, Kulleraugen und Sound-Ausgabe, meist in Anlehnung an einen [[Teddybär]]. Zusätzlich kommen noch [[Aktor]]en zum Einsatz um die Beine und Arme zu bewegen. Die Steuerung erfolgt üblicherweise manuell wie bei den Modellen, die in der Autismustherapie eingesetzt werden&lt;ref name=wagner2009tele /&gt;. Es gibt aber erste Ansätze [[Künstliche Intelligenz]] zu nutzen, genauer gesagt die [[BDI-Agent|BDI Architektur]], um autonome soziale Roboter zu realisieren&lt;ref name=Klug2012 /&gt;.<br /> <br /> <br /> === Sonstige Roboterarten ===<br /> Insbesondere mobile Robotersysteme werden zunehmend an Schulen und Hochschulen zu Ausbildungszwecken eingesetzt.&lt;ref&gt;[http://www.volksbot-lab.de/ VolksBot-Lab] Ausbildungsrobotik-System von Fraunhofer IAIS&lt;/ref&gt; Diese Roboter zeichnen sich durch gute Handhabbarkeit, einfache Programmierung und Erweiterbarkeit aus. Beispiele für sogenannte Ausbildungsroboter sind [[Robotino]] oder der [[Lego Mindstorms NXT]].<br /> <br /> Im nun entstehenden Theaterstück ''Frankenstein'' der Salzburger Künstlergruppe ''gold extra'' werken Roboter in einem Krankenhaus und &quot;bauen nach alten Plänen einen Menschen nach&quot;.&lt;ref&gt;http://salzburg.orf.at/news/stories/2622066/ Roboter als Schauspieler, salzburg.ORF.at vom 24. Dezember 2013.&lt;/ref&gt;<br /> <br /> == Übernahme des Begriffs in der Informatik ==<br /> In der [[Informatik]] werden Computerprogramme, die weitgehend automatisch sich ständig wiederholende Aufgaben abarbeiten, als [[Bot]] (Kurzform von ''Roboter'') bezeichnet.<br /> <br /> == Filmische Dokumentationen ==<br /> * [https://www.youtube.com/watch?v=u0YZhJdoT9Y humanoider Roboter Asimo, Show , 2016]<br /> * [https://www.youtube.com/watch?v=rVlhMGQgDkY humanoider Roboter Atlas, 2016]<br /> * [https://www.youtube.com/watch?v=3H1c_6_AxrQ VW Golf 7 Produktion Wolfsburg, Industrieroboter, 2013]<br /> * [https://www.youtube.com/watch?v=pa5_tudyAF8 BMW i3 Factory Production Tour, Industrieroboter, 2014]<br /> <br /> == Siehe auch ==<br /> * [[Robot Wars]]<br /> <br /> == Literatur ==<br /> <br /> * {{Literatur | Autor=[[Gero von Randow]] | Titel=Roboter. Unsere nächsten Verwandten | Verlag=Rowohlt| Ort=Reinbek | Jahr=1997 | ISBN=3-498-05744-8 }}<br /> * G. Lawitzky, M. Buss u. a. (Hrsg.): ''Service Roboter.'' Schwerpunktthemenheft der Zeitschrift ''it – Information Technology.'' Oldenbourg Verlag, München [http://www.atypon-link.com/OLD/toc/itit/49/4 49(2007)4]<br /> * {{Literatur|Autor=Wolfgang Weber|Titel=Industrieroboter. Methoden der Steuerung und Regelung. Mit 33 Übungsaufgaben|Verlag=Fachbuchverlag Leipzig|Jahr=2002|ISBN=3-446-21604-9}}<br /> * {{Literatur|Autor=Bodo-Michael Baumunk|Titel=Die Roboter kommen. Mensch, Maschine, Kommunikation|Verlag=Wachter Verlag |Ort=Heidelberg |Jahr=2007 |ISBN=978-3-89904-268-9 |Kommentar=Begleitband zur gleichnamigen Ausstellung in den Museen für Kommunikation}}<br /> * {{Literatur|Autor=Anne Foerst |Titel=Von Robotern, Mensch und Gott. Künstliche Intelligenz und die existentielle Dimension des Lebens |Verlag=Vandenhoeck &amp; Ruprecht |Ort=Göttingen |Jahr=2008 |ISBN=978-3-525-56965-8 |Kommentar=Aus dem Englischen von Regine Kather}}<br /> * {{Literatur|Autor=Daniel Ichbiah|Titel=Roboter: Geschichte – Technik – Entwicklung |Verlag=Knesebeck |Ort=München |Jahr=2005 |ISBN=3-89660-276-4|Kommentar=Aus dem Französischen von Monika Cyrol}}<br /> * {{Literatur|Autor=Cosima Wagner|Titel=Robotopia Nipponica. Recherchen zur Akzeptanz von Robotern in Japan |Verlag=Tectum Verlag |Ort=Marburg |Jahr=2013 |ISBN=978-3-8288-3171-1}}<br /> <br /> == Ausstellung ==<br /> <br /> * 2011: ''Roboterträume'', [[Museum Tinguely]], Basel und [[Kunsthaus Graz]]<br /> <br /> == Weblinks ==<br /> <br /> {{Wiktionary}}<br /> {{Commonscat|Robots|Roboter}}<br /> * [http://rn-wissen.de/wiki/index.php/Hauptseite Deutsches Robotik und Elektronik Wiki]<br /> * [http://www.roboternetz.de/community/content/1-Roboternetz-Startseite Größte deutsche Robotik Community]<br /> * [http://www.roboticsportal.it/ Robotics Portal]<br /> * [http://www.worldrobotics.org/ Welt-Roboterstatistik der International Federation of Robotics (IFR)]<br /> * [http://www.ifr.org/ International Federation of Robotics (IFR)]<br /> * {{Webarchiv | url=http://www.robotstore.de/roboter_in_filmen.htm | wayback=20101130122714 | text=Chronologische Übersicht aller Roboter und Androiden im Film}}<br /> * [http://www.vdma.org/r+a VDMA Robotik + Automation (Wirtschaftsverband)]<br /> * [http://www.roberta-home.de/ Einsatz von Spielzeugroboter zum Zweck der MINT- und Mädchen-Förderung in Deutschland]<br /> <br /> == Einzelnachweise ==<br /> &lt;references&gt;<br /> &lt;ref name=rosenkind2015creating&gt;{{cite journal<br /> | author = Rosenkind, Micah Marlon<br /> | title = Creating Believable, Emergent Behaviour in Virtual Agents, Using a ‘Synthetic Psychology’Approach<br /> | year = 2015<br /> | journal = University of Brighton<br /> | volume = <br /> | pages = <br /> | url = http://eprints.brighton.ac.uk/15451/1/MPhil_Thesis_Final_2016.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=Hirmann2015&gt;{{cite journal<br /> | author = Hirmann, Thomas<br /> | title = Die Möglichkeiten und Auswirkungen von Sozial-emotionalen Robotern, insbesondere der Robbe Paro, im Einsatz in der Pflege<br /> | year = 2015<br /> | journal = Fachbereichsarbeit <br /> | volume = <br /> | pages = <br /> | url = https://www.researchgate.net/profile/Thomas_Hirmann/publication/309950720_Moglichkeiten_und_Auswirkungen_von_sozial-_emotionalen_Robotern_insbesondere_der_Robbe_Paro_im_Einsatz_in_der_Pflege/links/5826f7e008ae5c0137ed81a9.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=savicic2010gesprachsakzeptanz&gt;{{cite journal<br /> | author = Savicic, Aleksandra<br /> | title = Gesprächsakzeptanz von Robotern<br /> | year = 2010<br /> | journal = Magisterarbeit Universit{\&quot;a}t Wien Wien, {\&quot;O}sterreich <br /> | volume = <br /> | pages = <br /> | url = http://othes.univie.ac.at/9502/1/2010-04-21_0305617.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=krahling2006between&gt;{{cite journal<br /> | author = Krähling, Maren<br /> | title = In Between Companion and Cyborg: The Double Diffracted Being Else-where of a Robodog<br /> | year = 2006<br /> | journal = Ethics in Robotics <br /> | volume = 6<br /> | pages = 69<br /> | url = http://fiz1.fh-potsdam.de/volltext/ijie/07250.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=Klug2012&gt;{{cite journal<br /> | author = Klug, Marius<br /> | title = Mensch-Roboter-Interaktion<br /> | year = 2012<br /> | journal = Bachelorarbeit <br /> | volume = <br /> | pages = <br /> | url = https://www.researchgate.net/profile/Marius_Klug/publication/233400966_University_of_Tuebingen_Bachelor_Thesis_Marius_Klug_Emotionsbasierte_Mensch-Roboter-Interaktion/links/09e4150a3b7d7228b0000000.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=Smith2016&gt;{{cite journal<br /> | author = Smith, David Harris and Zeller, Frauke<br /> | title = Post-hitchBOT-ism -- Interviewed by Andrea Zeffiro<br /> | year = 2016<br /> | journal = Wi: Journal of Mobile Media 2016 10: 01 <br /> | volume = <br /> | pages = <br /> | url = http://wi.mobilities.ca/wp-content/uploads/2016/02/wi_journal_10.1.5_zellersmith.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=wagner2009tele&gt;{{cite journal<br /> | author = Wagner, Cosima<br /> | title = Tele-Altenpflege und Robotertherapie: Leben mit Robotern als Vision und Realität für die alternde Gesellschaft Japans<br /> | year = 2009<br /> | journal = Japanstudien <br /> | volume = 21<br /> | pages = 271--298<br /> | url = http://contemporary-japan.org/japanstudien/japanstudien_21_altern/JS21_wagner.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=scholtz2008taglich&gt;{{cite journal<br /> | author = Scholtz, CP<br /> | title = Und täglich grüßt der Roboter<br /> | year = 2008<br /> | journal = Analysen und Reflexionen des Alltags mit dem Roboterhund Aibo, Volkskunde in Rheinland Pfalz. Informationen der Gesellschaft für Volkskunde in Rheinland-Pfalz <br /> | volume = 23<br /> | pages = 139--154<br /> | url = http://c-p-scholtz.de/Und_taeglich_gruesst_der_Roboter.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=Hoggett2011&gt;{{cite journal<br /> | author = Reuben Hoggett<br /> | title = W. Grey Walter and his Tortoises<br /> | year = 2011<br /> | journal = http://cyberneticzoo.com <br /> | volume = <br /> | pages = <br /> | url = http://cyberneticzoo.com/cyberneticanimals/w-grey-walter-and-his-tortoises/ <br /> }}&lt;/ref&gt;<br /> &lt;/references&gt;<br /> <br /> {{Normdaten|TYP=s|GND=4050208-9}}<br /> <br /> [[Kategorie:Roboter| ]]<br /> [[Kategorie:Handhabungstechnik]]</div> ManuelRodriguez https://de.wikipedia.org/w/index.php?title=Prozedurale_Animation&diff=161061191 Prozedurale Animation 2016-12-29T10:03:00Z <p>ManuelRodriguez: Abschnitt Programmierung</p> <hr /> <div>'''Prozedurale Animation''' (engl.: ''procedural animation'') ist ein Sammelbegriff für eine Reihe von [[Animation]]stechniken für [[Film]]e und [[Computerspiel]]e, bei denen Bewegungen nicht anhand von [[Schlüsselbildanimation|Schlüsselbildern]], sondern anhand definierter Regeln und Abläufe berechnet und kontrolliert werden. Sie werden hauptsächlich zur Darstellungen physikalischer Phänomene (Feuer, Rauch) und natürlicher Bewegungsabläufe (Gestiken, Vogelflug, u.&amp;nbsp;ä.) eingesetzt (&lt;ref name=siemon2013 /&gt; Seite 38).<br /> <br /> == Beschreibung ==<br /> Prozedurale Animationen basieren auf algorithmischen Verhaltensbeschreibungen und enthalten sämtliche Details einer Animation. Anhand des zugrunde liegenden Regelwerks müssen Animationen nicht zuvor exakt spezifiziert, im Voraus erstellt und abgespeichert werden, sondern können bei Bedarf situationsgerecht errechnet werden. Das erfolgt durch die Übergabe entsprechender Parameter, beispielsweise über eine Benutzeroberfläche oder auch durch andere Programme&lt;ref name=dill2011building /&gt;. Die Zahl der Parameter ist üblicherweise kleiner als die für eine exakte Animationsbeschreibung notwendige Informationsmenge, weswegen hier auch von einer Datenvermehrung (database amplification) gesprochen wird und ein wesentliches Merkmal prozeduraler Animationen ist. Ebenfalls kennzeichnend ist das sogenannte Kontrollproblem der prozeduralen Animationen, denn nach der Initiierung der Animation gibt es nur noch wenige Möglichkeiten, das Ergebnis zu beeinflussen. Lösungsansätze sind entweder die Anpassung der zugrunde liegenden Funktion oder die Veränderung der Parameter.&lt;ref&gt;Jackèl et al. 2006, 141f.&lt;/ref&gt;<br /> <br /> Prozedurale Animationen haben den Vorteil, dass sie aufgrund ihrer Eigenschaften sehr kompakt sind und in der Regel wenig Speicherplatz verbrauchen. Auch sind sie nicht in der Auflösung festgelegt, sondern können an die Anforderung angepasst werden. Nachteilig ist dagegen, dass sie einen hohen Entwicklungsaufwand mit sich bringen, sowie schwer zu implementieren und zu testen sind. Für neue Animationseffekte müssen zudem entsprechende Spezialfunktionen entwickelt werden. Auch können aufgrund des Kontrollverlusts bei der Ausführung unerwartete Ergebnisse entstehen.&lt;ref&gt;Jackèl et al. 2006, 142.&lt;/ref&gt;<br /> <br /> [[Datei:TRUE Procedural Animation En.gif|frame|zentriert|In diesem Beispiel einer prozeduralen Animation treibt ein Rad ein zweites Rad an, das wiederum ein drittes bewegt. Der Radius und die Position des zweiten Rads variieren dabei mit der Zeit, die Geschwindigkeit und Rotation des dritten Rads werden durch Berechnung entsprechend daran angepasst.]]<br /> <br /> '''Verwendung im Film:'''<br /> <br /> In ''[[Star Trek II: Der Zorn des Khan]]'' kamen erstmals Partikelanimationen in einem Kinofilm zur Anwendung, um das Feuer der sogenannten Genesis-Sequenz zu simulieren. Mit Hilfe sogenannter Flocking-Systeme wird das Verhalten von Schwärmen berechnet, wie etwa die Bewegungen zahlreicher Büffel einer Herde in Disneys ''[[Der König der Löwen]]''.&lt;ref&gt;[[Barbara Flückiger]]: [http://filmlexikon.uni-kiel.de/index.php?action=lexikon&amp;tag=det&amp;id=6953 Computer-Animation II: Verfahren]. In: Lexikon der Filmbegriffe, Institut für Neuere Deutsche Literatur und Medien, [[Christian-Albrechts-Universität zu Kiel]]. Zuletzt abgerufen am 11. Juli 2012.&lt;/ref&gt;<br /> <br /> '''In Computerspielen:'''<br /> <br /> Im Computerspiel-Bereich bilden prozedurale Animation den Kern von [[Grafik-Engine]]s, beispielsweise in Form von [[Partikelsystem]]en zur Animation von Feuer-, Rauch- oder Explosionseffekten. Das Action-Adventure ''[[Outcast (Computerspiel)|Outcast]]'' verwendet prozedurale Animationen zur Darstellung von Gestiken und Bewegungsabläufen der Spielfiguren, hier auch in Verbindung mit [[Schlüsselbildanimation]] und [[Motion Capture]].<br /> <br /> ==Programmierung==<br /> Prozedurale Animation wurde ursprünglich im Bereich [[Computeranimation]] verwendet&lt;ref name=reynolds1982computer /&gt;, später erkannte man jedoch, dass es auch für die Steuerung von [[Humanoider Roboter|humanoiden Robotern]] angewendet werden kann. Es werden Computerprogramme genutzt, um die Animation zu berechnen. In seiner Basis-Funktionalität bestehen diese Computerprogramme aus einer sogenannten [[Endlicher Automat|Finite-State-Maschine]]&lt;ref name=kalisiak2001grasp /&gt;. Das ist in der Informatik die kleinste Form eines Computerprogramms. Es kann genau einen Zustand einnehmen und dann zu einem anderen Zustand wechseln. Man kann eine [[Endlicher Automat|Finite-State-Maschine]] auch in der Sprache [[C (Programmiersprache)|C]] implementieren, dazu erstellt man eine globale Variable, welche den aktuellen Status des Programms besitzt, und im Programm nutzt man if-then-Bedingungen um die Variable zu verändern.<br /> <br /> Obwohl derartige Automaten nicht sehr praxistauglich scheinen, werden sie in der Kreativ-Branche zur Entwicklung von [[Computerspiel|Computerspielen]] häufig eingesetzt. Ein Charakter kann sich immer nur in einem Modus befinden: schwimmen, gehen, rennen oder springen. Über einen Tastendruck kann der Spieler den Modus ändern, wodurch eine vorgefertigte Animation abgespielt wird. Um das Jahr 2000 herum hat die Firma [[NaturalMotion]] dieses Konzept zu einer [[Euphoria (Software)|Animation Engine]] erweitert&lt;ref name=Arikan_2003 /&gt;, welche in zahlreichen Computerspielen eingesetzt wird. Das neue daran ist, dass auch die Übergänge zwischen den Aktionen flüssig sind und eine realistische Animation erlauben.<br /> <br /> Von Anfang an wurde prozedurale Animation mit verschiedenen Techniken implementiert. Einmal die bereits genannte [[Endlicher Automat|Finite-State-Maschine]], aber auch objektorientierte Techniken(&lt;ref name=faloutsos2001composable /&gt;, page 86ff), neuronale Netze (&lt;ref name=brock2008motion /&gt; page 16) oder genetische Algorithmen wurden verwendet. Als klassische echte prozedurale Animation gilt jedoch bis heute diejenenige, welche aus manuell erstelltem [[Quelltext|Sourcecode]] besteht, meist in der Programmiersprache [[C++]]. Um den Programmieraufwand zu minimieren, wurden diese Programme in [[Programmbibliothek|Bibliotheken]] gekapselt. Meist als closedSource Projekte aber in neuerer Zeit auch als [[Open Source]]&lt;ref name=gillies2010comparing /&gt;.<br /> <br /> Um eine simple Prozedurale Animation zu programmieren, reichen weniger als 100 Zeilen Quellcode aus. Man definiert darin eine [[Klasse (Objektorientierung)|Klasse]], die verschiedene [[Methode (Programmierung)|Methoden]] enthält und jede Methode aktiviert eine vordefinierte Animationsabfolge. Jetzt kann man die Klassenmethoden von außerhalb triggern (beispielsweise über eine Joystickabfrage) und wenn der Spieler auf die Taste A drückt, wird Motion Sequence A abgespielt. Dieses Konzept lässt sich nach oben skalieren, indem man den Codeumfang erhöht, mehr [[Motion Primitive]] einbaut, und einen Planner nutzt um Bewegungsübergänge zu berechnen. Teilweise werden auch [[Inverse Kinematik|Inverse Kinematiken]] und gait-Patterns&lt;ref name=karim2012procedural /&gt; (Vorgaben zum Setzen von Beinen) mit in eine Animation Engine aufgenommen.<br /> <br /> Programmtechnisch als schwer zu realisieren gelten komplexe Animationen, bei denen eine Figur ein Objekt aufnehmen soll und die Finger realistisch animiert sind.&lt;ref name=wheatland2015state /&gt; In einfachen Spielen wird auf derartig hochentwickelte prozedurale Animation verzichtet und die Bewegung wird nur angedeutet. Das beste Beispiel ist im Computerspiel [[Maniac Mansion]] zu sehen, wo nur sehr primitive Animationen implementiert sind.<br /> <br /> Schaut man sich die Geschichte der prozeduralen Animation an, so stand das Konzept von Anfang an in der Kritik, weil der Programmieraufwand als zu hoch eingeschätzt wurde. Man hat früh damit begonnen, nach vermeintlichen Alternativen zu suchen&lt;ref name=gillies2010comparing /&gt;. Beispielsweise dadurch, dass man mit [[Motion Tracking]] zuerst Datenbanken von Schauspielern erzeugt hat, diese in Einzelsequenzen unterteilt hat und dann die Sequenzen neu zusammengebaut hat. Tatsächlich ist für diese Animationsfolge keine Programmierung erforderlich, vielmehr arbeitet das Konzept [[Motion Capture|datengetrieben]] (datadriven)&lt;ref name=lee2010data /&gt;. Leider wirken die Resultate häufig unrealistisch, so dass bis heute keine Alternative zur prozeduralen Animation in Sicht ist.<br /> <br /> <br /> == Literatur ==<br /> * {{Literatur<br /> | Autor= [[Barbara Flückiger]]<br /> | Titel= Visual Effects. Filmbilder aus dem Computer<br /> | Auflage=<br /> | Verlag= [[Schüren Verlag]]<br /> | Ort= Marburg<br /> | Jahr= 2008<br /> | ISBN= 978-3-89472-518-1<br /> | Seiten= 105-153<br /> }}<br /> * {{Literatur<br /> | Autor= Dietmar Jackèl / Stephan Neunreither / Friedrich Wagner<br /> | Titel= Methoden der Computeranimation<br /> | Auflage=<br /> | Verlag= [[Springer Science+Business Media|Springer]]<br /> | Ort= Berlin<br /> | Jahr= 2006<br /> | ISBN= 978-3540261148<br /> | Seiten= 141-164<br /> }}<br /> * {{Literatur<br /> | Autor= Isaac V. Kerlow<br /> | Titel= The Art of 3D. Computer Animation and Effects<br /> | Auflage=<br /> | Verlag= [[John Wiley &amp; Sons]]<br /> | Ort= [[Hoboken (New Jersey)]]<br /> | Jahr= 2004<br /> | ISBN= 978-0470084908<br /> | Seiten=<br /> }}<br /> <br /> == Weblinks ==<br /> * [[Barbara Flückiger]]: [http://filmlexikon.uni-kiel.de/index.php?action=lexikon&amp;tag=det&amp;id=6953 Computer-Animation II: Verfahren]. In: Lexikon der Filmbegriffe, Institut für Neuere Deutsche Literatur und Medien, [[Christian-Albrechts-Universität zu Kiel]]. Zuletzt abgerufen am 11. Juli 2012.<br /> <br /> ==Einzelnachweise==<br /> &lt;references&gt;<br /> &lt;ref name=kalisiak2001grasp&gt;{{cite journal<br /> | author = Kalisiak, Maciej and Van de Panne, Michiel<br /> | title = A grasp-based motion planning algorithm for character animation<br /> | year = 2001<br /> | journal = The Journal of Visualization and Computer Animation Wiley Online Library <br /> | volume = 12<br /> | pages = 117--129<br /> | url = http://www.dgp.toronto.edu/~mac/pubs/jvca2001-kalisiak.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=siemon2013&gt;{{cite journal<br /> | author = Siemon, Andreas<br /> | title = Avatare in Katastrophensimulationen -- Entwicklung eines Katastrophen-Trainings-Systems zur Darstellung von Beteiligten in Großschadenslagen<br /> | year = 2013<br /> | journal = Dissertation, kassel university press <br /> | volume = <br /> | pages = <br /> | url = http://www.uni-kassel.de/upress/online/frei/978-3-86219-610-4.volltext.frei.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=dill2011building&gt;{{cite journal<br /> | author = Dill, Kevin and Dreger, Oliver<br /> | title = Building an Angry Grandmother<br /> | year = 2011<br /> | journal = Proceedings of the 2011 Spring Simulation Interoperability Workshop <br /> | volume = <br /> | pages = <br /> | url = https://www.sisostds.org/DesktopModules/Bring2mind/DMX/Download.aspx?Command=Core_Download&amp;EntryId=32428&amp;PortalId=0&amp;TabId=105 <br /> }}&lt;/ref&gt;<br /> &lt;ref name=gillies2010comparing&gt;{{cite journal<br /> | author = Gillies, Marco and Spanlang, Bernhard<br /> | title = Comparing and evaluating real time character engines for virtual environments<br /> | year = 2010<br /> | journal = Presence MIT Press <br /> | volume = 19<br /> | pages = 95--117<br /> | url = http://research.gold.ac.uk/3282/1/PiavcaPresence.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=faloutsos2001composable&gt;{{cite journal<br /> | author = Faloutsos, Petros and Van de Panne, Michiel and Terzopoulos, Demetri<br /> | title = Composable controllers for physics-based character animation<br /> | year = 2001<br /> | journal = Proceedings of the 28th annual conference on Computer graphics and interactive techniques ACM <br /> | volume = <br /> | pages = 251--260<br /> | url = http://www.cs.toronto.edu/dcs/theses/PhD/2001-02/Faloutsos.phd.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=reynolds1982computer&gt;{{cite journal<br /> | author = Reynolds, Craig W<br /> | title = Computer animation with scripts and actors<br /> | year = 1982<br /> | journal = ACM SIGGRAPH Computer Graphics ACM <br /> | volume = 16<br /> | pages = 289--296<br /> | url = https://www.researchgate.net/profile/Craig_Reynolds2/publication/232906191_Computer_Animation_With_Scripts_And_Actors/links/0912f5099de58641e2000000.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=lee2010data&gt;{{cite journal<br /> | author = Lee, Yoonsang and Kim, Sungeun and Lee, Jehee<br /> | title = Data-driven biped control<br /> | year = 2010<br /> | journal = ACM Transactions on Graphics (TOG) ACM <br /> | volume = 29<br /> | pages = 129<br /> | url = http://mrl.snu.ac.kr/research/ProjectDataDrivenBiped/DataDrivenBipedControl_2010.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=brock2008motion&gt;{{cite journal<br /> | author = Brock, Oliver and Kuffner, James and Xiao, Jing<br /> | title = Motion for manipulation tasks<br /> | year = 2008<br /> | journal = Springer Handbook of Robotics Springer <br /> | volume = <br /> | pages = 615--645<br /> | url = https://www.researchgate.net/profile/James_Kuffner/publication/226132716_Motion_for_Manipulation_Tasks/links/00b7d519c6f31733d1000000.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=Arikan_2003&gt;{{cite journal<br /> | author = Okan Arikan and David A. Forsyth and James F. O Brien<br /> | title = Motion synthesis from annotations<br /> | year = 2003<br /> | journal = ACM SIGGRAPH 2003 Papers on - SIGGRAPH 03 Association for Computing Machinery ({ACM}) <br /> | volume = <br /> | pages = <br /> | url = http://graphics.berkeley.edu/papers/Arikan-MSF-2003-08/Arikan-MSF-2003-08.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=karim2012procedural&gt;{{cite journal<br /> | author = Karim, Ahmad Abdul<br /> | title = Procedural locomotion of multi-legged characters in complex dynamic environments: real-time applications<br /> | year = 2012<br /> | journal = Universite Claude Bernard-Lyon I<br /> | volume = <br /> | pages = <br /> | url = http://liris.cnrs.fr/Documents/Liris-5801.pdf <br /> }}&lt;/ref&gt;<br /> &lt;ref name=wheatland2015state&gt;{{cite journal<br /> | author = Wheatland, Nkenge and Wang, Yingying and Song, Huaguang and Neff, Michael and Zordan, Victor and Jörg, Sophie<br /> | title = State of the art in hand and finger modeling and animation<br /> | year = 2015<br /> | journal = Computer Graphics Forum Wiley Online Library <br /> | volume = 34<br /> | pages = 735--760<br /> | url = http://web.cs.ucdavis.edu/~neff/papers/Fingers_STAR_final.pdf <br /> }}&lt;/ref&gt;<br /> &lt;/references&gt;<br /> <br /> [[Kategorie:Animation]]<br /> [[Kategorie:Filmtechnik]]</div> ManuelRodriguez https://de.wikipedia.org/w/index.php?title=Diskussion:JabRef&diff=160934787 Diskussion:JabRef 2016-12-24T07:14:07Z <p>ManuelRodriguez: Link auf Stackoverflow</p> <hr /> <div>== Gibt es Export-Filter für die Wikipedia? ==<br /> <br /> Vorstellung: Markierter Eintrag / Einträge aus Jabref exportieren als gewöhnliche Text-Datei (oder in den Zwischenspeicher) in das (vorgeschriebene) Wiki-Format für Referenzen. Gruß, --[[Benutzer:Gkln|Gkln]] ([[Benutzer Diskussion:Gkln|Diskussion]]) 22:06, 26. Mai 2015 (CEST)<br /> :[[Benutzer:Gkln|Gkln]], so etwas gibt es für standardmäßig für [[Zotero]].--[[Benutzer:Aschmidt|Aschmidt]] ([[Benutzer Diskussion:Aschmidt|Diskussion]]) 23:53, 22. Apr. 2016 (CEST)<br /> ::Danke, aber ich bin eigentlich daran interessiert, möglichst alles mit einem einzigen Literaturverwaltungstool zu erledigen. Ist deiner Meinung nach Zotero besser in dieser Hinsicht oder &quot;ganz etwas anderes&quot; als JabRef? Hatte den Eindruck, dass Zotero besondere Stärken beim Erfassen von Online-Quellen hat. Derzeit ist jedoch die meiste Literatur noch offline, die ich verwalten will. Gruß, --[[Benutzer:Gkln|Gkln]] ([[Benutzer Diskussion:Gkln|Diskussion]]) 00:06, 23. Apr. 2016 (CEST)<br /> :::Zotero hat einen ganz anderen Ansatz. Es ist universell, importiert bibliographische Daten aus Microformats (einschl. Wikipedia, soweit die Vorlagen für Internetquellen und Literatur verwendet worden sind) und sonstigen Quellen (via Importern) und hält die Daten in einem eigenen Datenbankformat. BibTeX ist dann nur ein Ausgabeformat, es gibt hunderte andere zum Nachinstallieren. Dazu kommen Plugins für Textverarbeitungen (nicht auf dem Mac). JabRef ist dagegen nur ein Frontend zu BibTeX. Insoweit ist JabRef also sozusagen ''ganz etwas anderes''. ;) Ein Wikipedia-Export aus JabRef wäre aber etwa so wie der entsprechende Export aus Zotero. Am Ende stände eine ausgefüllte cite-Vorlage als plain text. Und für Zotero gibt es das schon seit vielen Jahren, wenn auch vorrangig für die englische Wikipedia.--[[Benutzer:Aschmidt|Aschmidt]] ([[Benutzer Diskussion:Aschmidt|Diskussion]]) 01:07, 23. Apr. 2016 (CEST)<br /> <br /> :Ja, man muss manuell einen Export-Filter einrichten: http://stackoverflow.com/questions/41280281/jabref-exportfilter-for-wikipedia-citation --[[Benutzer:ManuelRodriguez|ManuelRodriguez]] ([[Benutzer Diskussion:ManuelRodriguez|Diskussion]]) 08:13, 24. Dez. 2016 (CET)</div> ManuelRodriguez https://de.wikipedia.org/w/index.php?title=Benutzer:ManuelRodriguez&diff=160903633 Benutzer:ManuelRodriguez 2016-12-22T19:37:41Z <p>ManuelRodriguez: /* Literatur zitieren */</p> <hr /> <div>== Literatur zitieren ==<br /> 1. Erstellen einer Jabref-Datenbank<br /> <br /> 2. Erstellen eines Jabref Exportfilters<br /> <br /> &lt;source&gt;<br /> wikicite.layout:<br /> &lt;ref name=\bibtexkey&gt;{{cite book<br /> | author = \author<br /> | title = \title<br /> | year = \year<br /> | journal = \journal<br /> | volume = \volume<br /> | pages = \pages<br /> | url = \url <br /> }}&lt;/ref&gt;<br /> <br /> wikicite.begin.layout:<br /> ==Einzelnachweise==<br /> &lt;references&gt;<br /> <br /> wikicite.end.layout<br /> &lt;/references&gt;<br /> &lt;/source&gt;<br /> <br /> 3. Jabref Export Filter einrichten: options -&gt; manage custom exports -&gt; add new<br /> <br /> 4. Export der Jabref Datei als Wiki-Syntax und einbinden im Text über &lt;pre&gt;&lt;ref name=bibtexkey /&gt;&quot;&lt;/pre&gt;</div> ManuelRodriguez https://de.wikipedia.org/w/index.php?title=Rapidly-exploring_random_tree&diff=160903606 Rapidly-exploring random tree 2016-12-22T19:36:04Z <p>ManuelRodriguez: DARRT</p> <hr /> <div>[[File:Rapidly-exploring Random Tree (RRT) 500x373.gif|thumb|Rapidly-exploring Random Tree (RRT) 500x373]]<br /> '''Rapidly-exploring random tree (RRT)''' (dt. etwa ''schnell erkundender zufälliger Baum'') ist ein [[Suchverfahren|Suchalgorithmus]] (und dessen zugrunde liegende [[Baum (Graphentheorie)|Baum-Datenstruktur]]), der hochdimensionale [[Suchraum|Suchräume]] zufällig nach möglichen Pfaden absucht. In der [[Robotik]] werden der Algorithmus und Variationen davon häufig für [[Motion planning]] verwendet, also für die Planung von effizienten Bewegungen, z.B. von Greifarmen.&lt;ref name=Lavalle1998&gt;{{cite journal<br /> | author = Lavalle, S.M.<br /> | year = 1998<br /> | title = Rapidly-exploring random trees: A new tool for path planning<br /> | journal = Computer Science Dept, Iowa State University, Tech. Rep. TR<br /> | pages = 98–11<br /> | url = http://citeseer.ist.psu.edu/311812.html <br /> }}&lt;/ref&gt;<br /> <br /> ==Geschichte==<br /> Um Pfadplanung für Roboter um Hindernisse herum durchzuführen wurde relativ früh in der Informatik der [[A*-Algorithmus]] entwickelt (1960'er Jahre). Dieser sucht in einem Graphen nach dem kürzesten Pfad von A nach B. RRT erweitert [[A*-Algorithmus|A*]] um zwei wesentliche Elemente: einmal wird ein [[Voronoi-Diagramm|Voronoi bias]] verwendet, der den Problemraum in gleichmäßige Bereiche unterteilt und zweitens kann der Graph an einer beliebigen zufälligen Stelle um neue Knoten erweitert werden. Der Voronoi Bias kommt überwiegend bei geometrischen Pfadplannungs-Problemen zum Einsatz. Das Ziel ist es, den Graphen überall dort zu erweitern wo bisher der Raum nicht gut ausgeleuchtet wurde. Damit ist es möglich, auch Wege zu planen die zunächst durch eine Verengung führen und sich dann aufgabeln wie es bei komplizierten Labyrinthen der Fall ist. Die Möglichkeit an einer beliebigen Stelle neue Nodes hinzuzufügen ist dafür erforderlich.&lt;ref name=&quot;rohrmoserimplementierung&quot; /&gt;<br /> <br /> Performancemäßig ist RRT leistungsfähiger als [[A*-Algorithmus|A*]]. RRT gilt als eines der effizientesten Verfahren um in Labyrinthen und unter Berücksichtigung von Hindernissen Wege zu planen. Neben dem ursprünglichen RRT Algorithmus wurden viele Erweiterungen entwickelt, wovon RRTConnect die bekannteste ist. Aber, die Leistungssteigerung von RRT gegenüber dem originalen [[A*-Algorithmus]] ist in der Praxis nicht höher als um den Faktor 3 bis 4. Auch A* verwendet bereits einen Graphen, der effizient nach dem kürzesten Weg durchsucht wird. In einigen Fällen schneidet RRT sogar schlechter ab als ein klassischer [[Dijkstra-Algorithmus]]&lt;ref name=&quot;knispel2013performance&quot; /&gt;. <br /> <br /> ==Voronoi Bias==<br /> Der Voronoi Bias dient dazu, das Wachstum des RRT-Baumes zu steuern&lt;ref name=&quot;urmson2003approaches&quot; /&gt; und wird daher auch als &quot;guided policy search&quot; oder als &quot;shaping&quot; bezeichnet. Die Spielfläche wird in gleichmäßige Kästchen unterteilt, von jedem Quadranten die Anzahl der darin enthaltenen [[Knoten_(Graphentheorie)|Nodes]] bestimmt und der Bereich mit den wenigsten Nodes wird um einen neuen Node erweitert.<br /> <br /> Diese Möglichkeit der Effizienzsteigerung funktioniert leider nicht bei weiteren Problemen aus der Robotik wie z.B. Graspplanning weil dort der Problemraum sich nicht als 2D Spielfeld abbilden lässt sondern eine höhere Anzahl von Variablen vorliegt. In solchen Fällen lässt sich nicht berechnen welche Bereiche des Spielfeldes eng nebeneinander liegen und welche weit voneinander entfernt sind. Anders ausgedrückt, es mangelt an einem Gütekriterium um die Ausbreitung des RRT Baumes einzuschätzen.<br /> <br /> ==DARRT==<br /> '''Diverse Action Rapidly-exploring Random Tree (DARRT)''' ist ein spezieller RRT-Algorithmus, welcher Motion Primitive mit einem RRT-Solver kombiniert. Damit können komplexe Robotik Aufgaben wie das Greifen eines Objektes oder das Gehen in unwegsamem Gelände bewältigt werden.<br /> <br /> ===Beschreibung===<br /> Ausgangspunkt für die Entwicklung von DARRT war die Frage wie man einen bestimmten Sollzustand im [[Konfigurationsraum|C-Space]] (Configuration space) erreicht. Normalerweise ist der Problemraum zu groß um ihn manuell durchzuprobieren mittels [[Brute-Force-Methode|Brute-Force]]. In der Vergangenheit ist an dieser Herausforderung jedes Robot-Control-System gescheitert. DARRT löst das Problem dadurch, dass in einem ersten Schritt bestimmte Motion Primitive definiert werden (Diverse Actions). Diese Motion Primitive werden mit Hilfe eines Solvers durchprobiert und zwar in Form eines Graph. Daher auch der Zusatz RRT.<br /> <br /> Ein Motion Primitive kann sein &quot;walk forward&quot;, &quot;grasp&quot; oder &quot;reachpoint&quot;. Das Konzept der Motion Primitive ist abgeleitet von der [[Prozedurale_Animation|prozeduralen Animation]] wo soetwas schon länger eingesetzt wird um Charaktere in Computerspielen realistisch zu animieren. Das RRT-Sampling hingegen basiert auf einer [[Suchverfahren#Suche_in_Graphen|graphenbasierenden Suche]]. Jeder Node entspricht einem Zustand der [[Physik-Engine]], von dem ausgehend Sub-Knoten generiert werden. Auf diese Weise braucht eine Forward Simulation der [[Physik-Engine]] nur für einen kleinen Moment ausgeführt werden, was CPU Zeit einspart. Ursprünglich entstammt RRT dem pathplanning wird aber bei DARRT eingesetzt um Instanzen von [[Box2D]], [[Open_Dynamics_Engine|ODE]] oder anderen Physik-Engines zu sampeln.<br /> <br /> Eine Implementierung als ausführbares Programm von DARRT befindet sich als OpenSource auf den Webseiten des ROS Projektes&lt;ref name=&quot;ros2013&quot; /&gt;. Das Greifen von Objekten wird hier &lt;ref name=&quot;kaelbling2015intelligence&quot; /&gt; erläutert.<br /> <br /> '''Erfinder'''<br /> <br /> Jennifer L. Barry ist die Erfinderin von DARRT. Sie hat das Verfahren erstmals im Jahr 2013 in ihrer Dissertation beschrieben&lt;ref name=&quot;barry2013thesis&quot; /&gt;. Jennifer L. Barry ist bei [[Boston_Dynamics|Boston Dynamics]] angestellt&lt;ref name=&quot;linkedln&quot; /&gt;. Zuvor war sie bei [[Rethink_Robotics]] und am [[Massachusetts_Institute_of_Technology|MIT]] tätig. Auf dem Server des MIT ist ihre Webseite abrufbar&lt;ref name=&quot;mitwebsite&quot; /&gt;, wo DARRT und weitere Projekte der Öffentlichkeit vorgestellt werden.<br /> <br /> '''Hybridsystem'''<br /> <br /> Der Grund warum bei DARRT sowohl Motion Primitive als auch RRT eingesetzt wird, hat damit zu tun, dass beide Verfahren Stärken als auch Schwächen haben, die sich optimal ergänzen. RRT alleine gilt als zu rechenaufwendig, ist aber programmiertechnisch leicht zu implementieren. Motion Primitive benötigen nur wenig CPU-Ressourcen, lassen sich aber nur schwer programmieren, da manueller C++ Sourcecode erstellt werden muss der stark vom konkreten Problem abhängig ist. Kombiniert man jedoch beide Verfahren erhält man einerseits einen Algorithmus der wenig CPU Leistung benötigt gleichzeitig aber sehr mächtig ist.<br /> <br /> '''Verallgemeinerung'''<br /> <br /> DARRT ist ein sogenannter Multi-Modal-Planner&lt;ref name=&quot;jentzsch2015mopl&quot; /&gt;. Dieser Begriff entstammt dem [[PDDL]] Umfeld und definiert Macroactions um komplexe hierarchische Probleme zu lösen. Beispielsweise eine Aufgabe, bei dem ein Roboter zuerst einen Schlüssel aus einem Zimmer holen muss, um mit diesem eine Schatztruhe zu öffnen. Solche Probleme lassen sich mit herkömmlichen Verfahren der Künstlichen Intelligenz nicht lösen.<br /> <br /> ===Anwendungsmöglichkeiten===<br /> Der DARRT Algorithmus wurde bisher auf dem [[Robot_Operating_System|ROS]] Standardroboter PR2 implementiert. Es gibt dazu Videos&lt;ref name=&quot;barry2013thesis&quot; /&gt; die zeigen, wie dieser eine komplexe Aktionsfolge plant und ausführt. Zuerst fährt er zu einem Tisch, führt dann eine Push-Aktion mit einem Teller durch, greift diesen an der Tischkante, fährt mit dem Teller zu einem zweiten Tisch, legt den Teller dort ab und führt eine erneut eine Push Aktion aus. An diesem Ablauf erkennt man wie DARRT in der Praxis arbeitet. Es gibt eine Reihe von vordefinierten Motion Primitiven die hintereinander ausgeführt werden. Die genaueren Parameter sowie die Reihenfolge werden über einen Planner bestimmt.<br /> <br /> Weiterhin wurde DARRT im Rahmen des [[Defense_Advanced_Research_Projects_Agency|DARPA]] ARM-S Projektes auch für &quot;dexterous grasping&quot; Aufgaben eingesetzt&lt;ref name=&quot;arms&quot; /&gt;. Dort bestand die Aufgabe darin, für den &quot;[[Carnegie_Mellon_University|CMU]] Andy Roboter&quot; eine Software zu schreiben, die ein Werkzeug von einem Tisch aufnimmt und an einer anderen Stelle wieder ablegt. DARRT wurde verwendet um den Behavior-Tree on-the-fly zu generieren, der die Aktionsfolge plant.<br /> <br /> Weitere Anwendungen in der Praxis waren:<br /> * auf einem Baxter-Roboter der Firma Rethink Robotics im Rahmen eines Workshops&lt;ref name=&quot;barry2013workshop&quot; /&gt;<br /> * zum Sortieren von Lego-Steinen durch einen PR2 Roboter&lt;ref name=&quot;gupta2015using&quot; /&gt; (ein dem DARRT-Algorithmus verwandtes Verfahren)<br /> * Steuerung von Roboterarmen um ein Objekt auf dem Tisch zu verschieben&lt;ref name=&quot;king2015nonprehensile&quot; /&gt;<br /> <br /> ==Einzelnachweise==<br /> &lt;references&gt;<br /> &lt;ref name=&quot;urmson2003approaches&quot;&gt;<br /> {{cite book|<br /> title = Approaches for heuristically biasing RRT growth.|<br /> author=Chris Urmson, Raid G Simmons|<br /> journal = IROS|<br /> volume = 2|<br /> pages = 1178–1183|<br /> year = 2003|<br /> url = http://www-preview.ri.cmu.edu/pub_files/pub4/urmson_christopher_2003_1/urmson_christopher_2003_1.pdf<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;rohrmoserimplementierung&quot;&gt;<br /> {{cite book|<br /> title = Implementierung einer Bewegungplanung für einen Roboterann Implementation of a path-planning algorithm for a robot arm|<br /> last1 = Rohrmoser|<br /> first1 = Dipl-Ing Bertram|<br /> last2 = Parlitz|<br /> first2 = Christopher|<br /> last3 = Fraunhofer|<br /> first3 = IPA|<br /> journal = |<br /> url = http://www.morpha.de/download/publications/IPA_Implementation_of_PathPlanningAlgorithm_Robotic2002.pdf<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;knispel2013performance&quot;&gt;<br /> {{cite book|<br /> title = A Performance Comparison of Rapidly-exploring Random Tree and Dijkstra’s Algorithm for Holonomic Robot Path Planning|<br /> last1 = Knispel|<br /> first1 = Lukas|<br /> last2 = Matousek|<br /> first2 = Radomil|<br /> journal = Institute of Automation and Computer Science, Faculty of Mechanical Engineerig, Brno University of Technology|<br /> year = 2013|<br /> url = http://www.wseas.us/e-library/conferences/2013/Budapest/MATH/MATH-22.pdf<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;ros2013&quot;&gt;<br /> {{cite book|<br /> title = darrt Documentation|<br /> last1 = ROS.org|<br /> first1 = |<br /> year = 2013|<br /> journal = |<br /> url = http://wiki.ros.org/darrt|<br /> accessdate = December 21, 2016<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;mitwebsite&quot;&gt;<br /> {{cite book|<br /> title = Personal Website Jennifer Barry|<br /> last1 = MIT|<br /> first1 = CSAIL|<br /> year = 2013|<br /> journal = |<br /> url = http://people.csail.mit.edu/jbarry/|<br /> accessdate = December 21, 2016<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;arms&quot;&gt;<br /> {{cite book|<br /> title = Youtube Video: DARRT Tool Regrasp (4x)|<br /> last1 = Klingensmith|<br /> first1 = Matt|<br /> journal = |<br /> year = 2014|<br /> url = https://www.youtube.com/watch?v=bQL90xah33M|<br /> accessdate = December 21, 2016<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;linkedln&quot;&gt;<br /> {{cite book|<br /> title = Jennifer Barry professional biography|<br /> last1 = Linkedln|<br /> journal = |<br /> year = 2016|<br /> url = https://www.linkedin.com/in/jennifer-barry-742a0799|<br /> accessdate = December 21, 2016<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;barry2013workshop&quot;&gt;<br /> {{cite book|<br /> title = Planning and Manufacturing Robots, NSF Workshop on Robot Planning in the Real World|<br /> last1 = Barry|<br /> first1 = Jennifer Lynn|<br /> journal = |<br /> year = October 28, 2013|<br /> url = http://robotics.cs.unc.edu/PlanningWorkshop2013/slides/Barry.pdf<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;kaelbling2015intelligence&quot;&gt;<br /> {{cite book|<br /> title = Intelligence in the Now: Robust Intelligence in Complex Domains|<br /> last1 = Kaelbling|<br /> first1 = Leslie P|<br /> last2 = Lozano-Perez|<br /> first2 = Thomas|<br /> journal = |<br /> year = 2015|<br /> institution = DTIC Document|<br /> url = http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA627156<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;jentzsch2015mopl&quot;&gt;<br /> {{cite book|<br /> title = MOPL: A multi-modal path planner for generic manipulation tasks|<br /> last1 = Jentzsch|<br /> first1 = Sören|<br /> last2 = Gaschler|<br /> first2 = Andre|<br /> last3 = Khatib|<br /> first3 = Oussama|<br /> last4 = Knoll|<br /> first4 = Alois|<br /> journal = Intelligent Robots and Systems (IROS), 2015 IEEE/RSJ International Conference on|<br /> pages = 6208–6214|<br /> year = 2015|<br /> organization = IEEE|<br /> url = http://www6.in.tum.de/Main/Publications/mopl.pdf<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;barry2013thesis&quot;&gt;<br /> {{cite book|<br /> title = Manipulation with diverse actions|<br /> last1 = Barry|<br /> first1 = Jennifer Lynn|<br /> year = 2013|<br /> journal = |<br /> school = Massachusetts Institute of Technology|<br /> url = http://dspace.mit.edu/bitstream/handle/1721.1/82342/861700257-MIT.pdf<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;gupta2015using&quot;&gt;<br /> {{cite book|<br /> title = Using manipulation primitives for object sorting in cluttered environments|<br /> last1 = Gupta|<br /> first1 = Megha|<br /> last2 = Müller|<br /> first2 = Jörg|<br /> last3 = Sukhatme|<br /> first3 = Gaurav S|<br /> journal = IEEE transactions on Automation Science and Engineering|<br /> volume = 12|<br /> number = 2|<br /> pages = 608–614|<br /> year = 2015|<br /> publisher = IEEE|<br /> url = https://pdfs.semanticscholar.org/713c/4bf10611caec8d460667be936ac4b342a1f6.pdf<br /> }}<br /> &lt;/ref&gt;<br /> &lt;ref name=&quot;king2015nonprehensile&quot;&gt;<br /> {{cite book|<br /> title = Nonprehensile whole arm rearrangement planning on physics manifolds|<br /> last1 = King|<br /> first1 = Jennifer E|<br /> last2 = Haustein|<br /> first2 = Joshua A|<br /> last3 = Srinivasa|<br /> first3 = Siddhartha S|<br /> last4 = Asfour|<br /> first4 = Tamim|<br /> journal = 2015 IEEE International Conference on Robotics and Automation (ICRA)|<br /> pages = 2508–2515|<br /> year = 2015|<br /> organization = IEEE|<br /> url = https://www.ri.cmu.edu/pub_files/2015/5/ICRA15_1356_FI.pdf<br /> }}<br /> &lt;/ref&gt;<br /> &lt;/references&gt;<br /> <br /> [[Kategorie:Robotik]]<br /> [[Kategorie:Suchalgorithmus]]</div> ManuelRodriguez https://de.wikipedia.org/w/index.php?title=Benutzer:ManuelRodriguez&diff=160902940 Benutzer:ManuelRodriguez 2016-12-22T18:57:33Z <p>ManuelRodriguez: Jabref Exportfilter</p> <hr /> <div>== Literatur zitieren ==<br /> 1. Erstellen einer Jabref-Datenbank<br /> <br /> 2. Erstellen eines Jabref Exportfilters<br /> <br /> &lt;source&gt;<br /> wikicite.layout:<br /> &lt;ref name=\bibtexkey&gt;{{cite journal<br /> | author = \author<br /> | title = \title<br /> | year = \year<br /> | journal = \journal<br /> | volume = \volume<br /> | pages = \pages<br /> | url = \url <br /> }}&lt;/ref&gt;<br /> <br /> wikicite.begin.layout:<br /> ==Einzelnachweise==<br /> &lt;references&gt;<br /> <br /> wikicite.end.layout<br /> &lt;/references&gt;<br /> &lt;/source&gt;<br /> <br /> 3. Jabref Export Filter einrichten: options -&gt; manage custom exports -&gt; add new<br /> <br /> 4. Export der Jabref Datei als Wiki-Syntax und einbinden im Text über &lt;pre&gt;&lt;ref name=bibtexkey /&gt;&quot;&lt;/pre&gt;</div> ManuelRodriguez