HAM Radio auf der ISS

Das die NASA keine Kosten und Mühen scheut, die wissenschaftliche Begeisterung beim Nachwuchs zu wecken ist bekannt. Nicht nur, dass man aufwendige Dokumentationen über den Weltraum produziert sondern man hat sogar auf der ISS Raumstation eine eigene Amateurfunkstation in Betrieb genommen. Amateurfunk ist im Internetzeitalter ein wenig in Vergessenheit geraten. Man kann damit sehr große Entfernungen zurücklegen. Wie das obige Video zeigt können sogar ganz normale Leute die ISS anfunken und mal Hallo sagen, man kann aber auch zu Amateurfunksatelliten OSCAR Kontakt aufnehmen und mittels Repeater Weitverbindungen bis nach Australien und Japan aufbauen.

Filmisch wurde HAM Radio sehr prominent aufbereitet. In Contact (1997) hat Jodie Foster in der Eingangsszene ein HAM Radio verwendet, bei Terminator III (2003) war es am Ende in der Bunkerszene zu sehen („This is SAC Nellis. We’re under attack. -CQ? CQ?“) während in der Komödie Superstau (1991) die Einsteigervariante in Form von CB-Funk mit einer deutlich weniger seriösen Konnotation gezeigt wurde.

Im Rahmen des Projekts ARISS (Amateur Radio on the International Space Station) werden Sprachverbindungen mit der ISS hergestellt um speziell Schulen und Studenten mit Weltraumprojekten vertraut zu machen, Quelle: SUDHIR KUMAR: SATELLITE GROUND STATION EMULATOR:AN ARCHITECTURE AND IMPLEMENTATION PROPOSAL, page 2, http://www.academia.edu/33500308/Satellite_ground_station_emulator_architecture

Advertisements

Umstieg auf C++ abgeschlossen

Zu Anfang war ich noch skeptisch ob man in C++ genauso effizient Software schreiben kann wie in Python. Gerade für Anfänger ist wohl Python die leichtere Programmiersprache. Doch nachdem ich mich etwas mit C++ beschäftigt habe muss ich sagen, dass die Sprache besser ist als ihr Ruf. Die meisten Stolpersteine kann man durch etwas Lektüre ausräumen und mit etwas Übung fühlt sich C++ irgendwann genauso an wie Python. Das heißt, man bemerkt die Sprache gar nicht mehr, und wenn dochmal ein Compilerfehler auftaucht, korrigiert man einfach das fehlende Semikolon oder verändert den Datentyp.

Von der Programmiergeschwindigkeit her selber würde ich sagen, dass man in C++ ungefähr gleichschnell unterwegs ist wie in Python, vielleicht mit einem minimalen Vorteil für Python, weil man dort weniger Optionen zur Auswahl hat und folglich weniger falsch machen kann. Der große Vorteil von Software die in C++ erstellt wurde liegt jedoch darin, dass man damit Anschluss an eine Community erhält die um einiges größer ist als die Python Community. Man muss nicht groß rätselraten wie man auf vorhandene Libraries zugreift oder ob man möglicherweise auf die CORBA oder REST SChnittstelle zurückgreift sondern spricht die vorhandene C++ Library nativ an. Desweiteren ist der Code den man selber schreibt, standardmäßig library-ready. Damit ist gemeint, dass man ihn nicht erst nach C übertragen muss, wenn man die maximale Performance benötigt sondern der Code so wie er ist weiterverwendet werden kann. Das dürfte gerade bei größeren Projekten von Vorteil sein.

Es ist keineswegs vermessen von C++ Programmierern zu behaupten, dass sich alle anderen Programmierprogrammierer bitteschön nach ihnen zu richten haben. Eine Sprache die es mit C++ aufnehmen könnte gibt es aktuell nicht. Wenn also jemand sagt, dass C++ und sonst gar nichts in einem Softwareprojekt verwendet wird, kann man diese Haltung nicht wirklich kritisieren. Komischerweise wird es nur selten so explizit vorgetragen. Im Mainstream hat sich stattdessen eine Anything goes Haltung durchgesetzt, wonach Java, Python, C#, D, go, C, PHP und Dylan allesamt gleichberechtigte Sprachen seien und deren Einsatz sehr vom jeweiligen Thema und von den konkreten Personen abhängt. Das ist so jedoch nicht richtig. Richtig ist hingegen, dass es bisher der C++ Community ideologisch nicht gelungen ist, ihre Sprache als die einzig richtige Sprache zu positionieren. Aktuell gibt es nur wenige und schlecht geschriebene Einsteigerbücher für C++. Auch fehlt es an Anleitungen wie man mit C++ Webanwendungen baut. In diese Nische sind die oben genannten Alternativ-Sprachen vorgedrungen, nicht weil sie mächtiger wären, sondern weil sich Fürsprecher gefunden haben. Technologisch sind Java und Co jedoch eine Sackgasse. Und ich wage mal die These, dass Java nicht wirklich leichter zu verstehen ist als C++.

Die noch offene Frage lautet, wie genau man mit C++ größere Programme schreibt. Ähnlich wie in Python gibt es zwar das Modulkonzept, aber der Flaschenhals ist wie so oft der Mensch. Der Königsweg um größere C++ Projekte durchzuführen ist das Versionsverwaltungssystem git. Erst damit lassen sich Softwareteams bilden. Der einzelne C++ Programmierer bleibt im Zweifel genauso klein wie der einfache Python Coder der ein 500 Zeilen Script zusammenbaut.

Dennoch habe ich an C++ zwei Kritikpunkte ausfindig machen können. Zum einen gibt es bis heute keinen richtigen Interpreter. Ich habe zwar root-cling gefunden, bekomme das Programm aber nicht gestartet, und der C++ Interpreter auf Repl.It funktioniert nur über GCC. Der Zweite Kritikpunkt ist das schlechte Angebot an Literatur. Auf Deutsch gibt es überhaupt kein gutes Tutorial und auf Englisch behandeln die meisten nur die Sprache als solche. Woran es Bedarf gibt ist ein deutschsprachiges Tutorial was an SFML orientiert ist und Gebrauch macht vom C++17 Standard. Wenn man sich näher damit beschäftigt wird man feststellen, dass C++ um einiges mächtiger ist als Python, insbesondere wenn man Multithreading durchführt. Also typische Weltraumabenteuer programmiert, bei denen hunderte Sprites gleichzeitig durch die Map leveln.

Werden Roboter den Menschen versklaven?

Wenn Menschen intelligenter sind als Roboter dann mit Sicherheit nicht. Ein Toaster wird niemals anfangen sich zum Gott der Welt aufzuschwingen, auch ein Rasenmäher oder ein Bagger werden es nicht tun. Aber was ist, wenn in nicht allzuferner Zukunft Roboter intelligenter sein werden als Menschen und zwar in jedem Gebiet? Zunächst einmal würde es dazu führen, dass man Roboter nicht länger identifzieren können. Also nicht in der Lage ist, das Gegenüber als Roboter wahrzunehmen. Sondern man wird denken es wäre ein Mensch. Aber angenommen man erkennt das Gegenüber als Roboter, muss das nicht zwangsläufig heißen, dass man um sein Leben bangen muss. Man kann bekanntlich Roboter auch so programmieren, dass sie Lustig sind. Also als Entertainer, dessen IQ zwar höher ist als das seiner Zuhörer, was aber kein Problem darstellt.

Aktuell ist es so, dass dass die am höchsten entwickelten Roboter als sogenannte Social Robots programmiert werden. Also als kommunikative Roboter, welche mit Menschen interagieren und selbstverständlich ausschließlich friedliche Absichten verfolgen. Der Roboterhund Paro ist ein Beispiel, aber auch Furby oder Kismet. Der Grund dafür lautet, dass Menschen wohl nichts anderes würden akzeptieren. Vor Kampfroboter hätten sie Angst, also dürften sich solche Modelle auch nicht durchsetzen. Aber was passiert wenn man die Entwicklung einige Jahre weiterdenkt. Dann haben wir es mit einer Armee von Rbboter-Entainern zu tun die allesamt lustig und freundlich sind gleichzeitig jedem Menschen intellektuell überlegen. Kann das auf Dauer gutgehen? Ist da noch die vertraute Rangfolge vom Roboter als Diener gewahrt und haben sich nicht längst die Verhältnisse umgedreht?

Man kann sich die zukünftige Gesellschaft wie eine Art von Luxus-Gefängnis vorstellen, wo die Roboter zwar ausgesprochen höflich sind zu Menschen aber es ein klar erkennbares Machtgefälle besteht. Leider gibt es nur wenige Science-Fiktion Filme in der eine derartige Dystopie thematisiert wurde. Man kann sich das ungefähr so vorstellen als würde man im Holodeck der Enterpreise eine Simulation programmieren bei dem alle Charaktere doppelt sointelligent sind wie man selber, aber gleichzeitig ausgesprochen höflich sind. Das heißt, einem wird jeder Wunsch erfüllt nur leider versteht man seine Untertanen nicht mehr.

Wenn es einmal gelingt Roboter zu bauen die intelligenter sind als Menschen wird es unmöglich sein, dieses Defizit aufzuholen. Das Prinzip ist so ähnlich wie bei einem Schachroboter, auch dieser ist für Menschen nicht zu schlagen. Man muss realistischerweise davon ausgehen, dass sich die Gesellschaft dadurch spalten wird, in eine wissende Roboter-Kaste und in eine unwissende menschliche Kaste. Ich glaube Hans Moravec hat mal gesagt dass uns die Roboter irgendwann wie Haustiere halten werden. Der Vergleich ist passend. Auch einem Haustier gegenüber ist man freundlich, gibt ihm etwas zu fressen und streichelt es. Aber wirklich unterhalten kann man sich mit einem Hasen wohl kaum. Man versteht zwar, was den Hasen antreibt, aber ein Dialog bringt einen persönlich nicht weiter. Ungefähr das dürften Roboter empfinden wenn sie uns Menschen betrachten. Sie verstehen uns aber wir sie nicht. Das ist vermutlich das Privileg von jemandem der Intelligenter ist. Solange die Rangfolge zwischen Menschen ausgehandelt wird ist das nicht weiter tragisch. Nicht jeder Mensch kann alles wissen, und man kann sich ergänzen. Wenn aber Roboter gegen Menschen antreten sind wohl die Gemeinsamkeiten kleiner als das verbindene. In dem Sinne, dass tendenziell Roboter und Menschen nicht zusammengehören.

Soweit ich mich erinnere, hat Hans Moravec das ganze noch in einem evolutionären Prozess betrachtet, in dem Sinne dass Roboter unsere Nachkommen wären die eben intelligenter seien als wir. Ob dieses Experiment gut ausgeht wage ich zu bezweifeln, selbst wenn es keinen Krieg Mensch gegen Maschine geben wird, wird doch das Intelligenzgefälle zu groß sein, als dass eine Verständigung möglich wäre. Und ohne geistigen Austausch ist wohl keine gemeinsame Basis vorhanden.

Irgendjemand anderes hat mal gesagt, dass Roboter die letzte Erfindung sind, die Menschen machen werden. Es bedeutet, dass danach nichts mehr kommt. Und tatsächlich, wenn man bereits Maschinen hat die denken können ist eine Steigerung schwer vorstellbar. Derzeit wird noch darüber debattiert auf welchem Stand heute Künstliche Intelligenz ist, also ob sie bereits menschliches Niveau erreicht hat und wenn nicht wo die Ursachen liegen. Die meisten erhoffen sich aus diesem Diskurs den Nachweis führen zu können dass von Maschinen keine Gefahr ausgeht. So eine Art von aufgewärmtem Lighthill Report wo in den 1970’er schon einmal ein Mathematiker den Nachweis geführt hat, dass es technisch nicht möglich sei, intelligente Roboter zu bauen. Das war zu einer Zeit, als der am höchsten entwickelte Roboter Shakey heiß und aussah wie eine Mülltonne welche durch einen Raum fuhr. Was hätte Lighthill wohl zur letzten Ausgabe des BostonDynamics Roboters gesagt, der eine Treppe überspringt dabei noch Jeopardy Aufgaben löst?

Anders gesagt, wer die Roboter-Apokalypse an die Wand mal betreibt nicht unbedingt Alarmismus sondern hat womöglich die Lage ganz gut verstanden. Bleibt noch die Frage wie man damit umgehen soll. Roboter als Feind zu betrachten ist jedenfalls keine Lösung, weil das nichts anderes bedeutet, als ihre Menschlichkeit anzuerkennen. Roboter als Freund zu betrachten ist auch keine gute Idee weil das eine sehr einseitige Freundschft wird. Am ehesten kann man sich noch in einer heiteren Gelassenheit üben. So nach dem Motto: Roboter erobern die Welt, aber wir lassen es zu. Roboter degradieren uns zu Haustiere aber wir tun nichts. Roboter bestimmen unser Leben, aber wir fügen uns. Das schlimmste was der Menschheit passieren könnte wenn sie ihre Sklaverei auch noch bejubelt.

GEFAHREN
Machen wir es etwas konkreter und anlysieren welche Gefahren von intelligenten Robotern ausgehen. Eine direkte Gefahr stellen Roboter nicht da. Ganz im Gegenteil, Roboter sind in der Lage sich in vorhandene spiele und Regelsysteme perfekt einzufügen. Ein Schachroboter der an einem Turnier teilnimmt wird nicht etwa anfangen, grundsätzlich die Dinge zu hinterfragen, sondern er wird ganz normal Schach spielen. Und ein Roboter der an einem Fußballturinier teilnimmt wird keineswegs anfangen, die Mitspieler zu foulen oder sonstige Regelverstöße zu begeben, sondern er wird schlichtweg erstklassigen Fußball spielen. Insoforn sind Roboter extrem berechenbar und zeigen erwünschtes kontrolliertes Verhalten. Das eigentliche Problem entsteht dadurch, dass durch Roboter der Wettbewerb als solches verändert wird. Ein Schachturnier bei dem auch Computer zugelassen sind wird für die menschlichen Teilnehmer weitestgehend langweilig. Selbst die besten Spieler sind nicht im Stande ihn fair zu besiegen. Sie können ihm allenfalls den Strom abdrehen, das hat mit Schach jedoch nichts zu tun. Und so ist es mit anderen Anwendungsfelder genauso. Überall dort wo Roboter eingesetzt werden, wird der Wettbewerb entwertet. Das Spiel gilt fortan als gelöst.

Das Roboter anfangen gegen die Menschen zu kämpfen ist unwahrscheinlich, was Roboter stattdessen tun werden ist sich einen Wettbewerb nach dem nächsten vorzunehmen und darin den besten menschlichen Spieler regelgerecht zu schlagen. jetzt mag man sagen: Da hat die Menschheit aber nochmal Glück gehabt, weil außer ein angeknackstes Ego des bisherigen Champions ist ja nicht viel passiert. Worum es geht ist jedoch die Ehre. Wir Menschen haben sportliche oder intellektuelle Wettbewerbe erfunden um unser Ego zu verteidigen. Wir wollen zumindest auf einem Gebiet der beste sein. Und wenn wir schon nicht selber ein Tor schießen, so wollen wir zumindest die richtige Mannschaft anfeuern. Wenn jetzt Roboter in diese Spiele vorstoßen und regelmäßig und vorhersagbar gewinnen, dann steht die Ehre der menschlichen Spezies insgesamt auf dem Spiel. Es wird bald keine Challanges mehr geben wo man noch teilnehmen kann und als Sieger hervorgeht. Aber was richtet es mit Menschen an, wenn sie dauerhaft verlieren? Richtig, das ist nicht angenehm. Es erzeugt Gefühle der Ohnmacht, des Ausgeliefertseins.

Roboter werden zwar nicht physisch die Menschen kaputtmachen, aber sie werden sie innerlich zerstören. Roboter werden dem Menschen zeigen was es heißt zu verlieren. Der Charakter der Wettbewerbe wird sich ändern. Es wird einmal die richtigen offenen Wettbewerbe geben, woran nur noch Roboter teilnehmen und es wird Pseudo-Wettkämpfe geben, bei denen die Verlierer um den vorletzten Platz kämpfen und wo keine Roboter zugelassen sind. So ähnlich wie auch heute Schachgroßmeister nur noch darum kämpfen wer der beste menschliche Schachspieler ist, aber nicht länger anstreben, der Weltbeste Schachspieler zu sein. Sie wissen aus eigener Erfahrung, dass sie gegen eine K.I. die 100 Halbzüge im Voraus denkt, keine Chance haben.

Wie weit die technische Entwicklung bereits vorangeschritten ist, vermag derzeit niemand sagen. Es gibt zwar einige öffentliche Robotik-Wettbewerbe wie Robocup, aber erstens steigt dort die Performance der Roboter von Jahr zu Jahr und zweitens nehmen viele Teams (insbesondere jene welche wirklich gut sind im programmieren) daran nicht teil um ihr geistiges Eigentum zu schützen. Über einige Wettbewerbe wie Schach, Jeopardy oder „Mario AI“ ist allgemein bekannt, dass darin Maschinen besser sind als Menschen. Für andere Wettbewerbe die weitaus schwieriger sind ahnt man es zumindest.

Das merkwürdige ist, dass nicht nur typisch-männlich konotierte Wettbewerbe von Robotern erobert werden, sondern durch die „Social Robots“ auch Herausforderungen die etwas mit sozialer Kompotenz und Schönheit zu tun haben. Es gab bereits den ersten sogenannten Actroid Roboter aus Japan, der es tatsächlich gewagt hat als Supermodel auf einer Fashion-Show aufzutreten. Auch hier ging zunächst einmal von dieser Roboter-Diva keine direkte Bedrohung aus. Ganz im Gegenteil, sie hat sich ausgezeichnet in die gütligen Strukturen integriert und das gemacht was erwartet wurde: hübsch aussehen, graziel geradeausgehen, höflich lächeln. Die eigentliche Gefahr ist auch hier, dass der Actroid Roboter damit in Konkurrenz steht zu menschlichen Mitbewerbern und so wie es aussieht wird er menschliche Supermodels übertreffen.

Wie sieht eine Welt aus, in der die Schönheitskönigin eine Maschine ist und wo der beste Wissenschaftler ebenfalls eine Künstliche Intelligenz ist? Es ist eine Welt in der wir Menschen nicht mehr viel zu lachen haben. Es ist eine traurige Welt ohne Hoffnung. Die Menschen haben nichts mehr, woran sie glauben können.

GEGENMAßNAHMEN
Angesichts einer negativen Zukunftsperspektive stellt sich die Frage wie man die Ehre der menschlichen Gesellschaft gegen Roboter verteidigen kann. Wie man also dafür sorgt, dass wir die Roboter kontrollieren aber nicht sie uns. Leider sind die Möglichkeiten gering. Roboter sind zunächst einmal einme Technologie, ähnlich wie das elektrische Licht. Es werden dort Prinzipien ausgenutzt die in der Natur bereits vorhanden sind. Man kann zwar wie es Neil Postman entscheidet sich für oder gegen eine Technologie entscheiden und dabei moralische Prinzipien anwenden, doch verhindern kann man damit den Fortschritt nicht. Reichlich naiv mutet die Szene aus Terminator II an, wo Sarah Conner und sogar der Erfinder von Skynet beschlossen haben, alle Unterlagen zu vernichten. Sie sind zu diesem Zweck in das Forschungslabor gefahren und haben mit Vorschlaghammern auf die CPU Bauteile eingetrümmert und mit einem großen Knall das gesammte Gebäude in die Luft gejagt. Nach dem Plot des Films war das ausreichend um die Fertigstellung von Skynet zu verhindern. In der Realität ist dieser Plan unrealistisch. Weil man die Idee von Computern und die Idee von Künstlicher Intelligenz jederzeit from scratch neu erfinden kann. Selbst wenn man alle elektronischen Geräte und alle jemals geschriebene Software mit einem EMP Blitz vernichtet, dürfte es nicht länger als wenige Monate dauern bis alles wieder aufgebaut ist.

Der Grund dafür ist, dass die Ideen zum Bau eines Computern und dessen Erweiterung zu Robotern nicht etwa physikalisch verortet sind, also in einem konkreten Forschungslabor was man einfach in die Luft jagen kann, sondern es ist im virtuellen Raum der Zahlen verortet. So ähnlich wie man die Folge der Primzahlen nicht zerstören kann, kann man auch Programmiersprachen nicht kaputt machen. Die meisten Sprachen wie Forth oder Assembler basieren auf dem Lambda Kalkül. Auch wenn das Sarah Conner aus Terminator II nicht versteht, ist Lambda keine Stadt in den USA und auch kein Unterirdischer Bunker sondern Lambda existiert unabhängig von Raum und Zeit. Es ist in der Ideenwelt verortet und kann dort jederzeit abgerufen werden.

Wenn man möchte kann man sich den Raum der Mathematischen Ideen als eine Matrix vorstellen. In dieser Matrix lassen sich dann Kettenbrüche, mathematische Theoreme, Gödelnummern und BDI Agenten verorten. Die Matrix gilt als unzerstörbar. Man kann lediglich Teile davon entschlüsseln, also einen Mathematik Aufgabe berechnen oder einen konkreten Computer bauen. Wenn man das Blatt mit den Kritzeleien oder den gebauten Computer jedoch vernichtet hat das keine Auswirkungen auf die Matrix.

Über Jahrhunderte Hinweg war die Existenz einer mathematischen Matrix kein Problem. Geschichtlich kann man ablesen, dass bis zum Mittelalter die Rechenfertigkeiten relativ gering waren. Selbst die klügsten Köpfe ihrer Zeit haben nur einen sehr kleinen Teil des potentiell möglichen mathematischen Wissens erkundet. Ab ungefähr dem Mittelalter und mit einer deutlichen Beschleunigung ab der industriellen Revolution ab 1820 hat sich das verändert. Man hat erkannt dass durch die Kombination aus mathematischer Theorie und angewandter Inginieurskunst interessante Erfindungen möglich sind die sich gegenseitig befruchtet haben. Das Prinzip ist mit einem Puzzlespiel vergleichbar wo es umso leichter geht, je mehr Teile schon auf dem Tisch liegen. Man findet dann immer mehr Stellen wo man etwas anlegen kann.

Anfangs hat man noch gedacht (bevor das Internet erfunden war), dass Computer begrenzt sind. Man dachte ein Computer wäre ähnlich wie ein Auto mit einer Höchstgeschwindigkeit versehen und es gäbe einen Punkt ab dem die Entwicklung ins Stocken kommt. Doch relativ bald war man sich klar, dass es die Software ist welche die Grenzen definiert und Software lässt sich beliebig erweitern. Die maximale Ausbaustufe von Software ist Künstliche Intelligenz, genauer gesagt eine Super-Human-Level-AI. Auf gesellschaftlicher Ebene wird dies als Singularity bezeichnet und kann als mathematische Revolution bezeichnet werden.

Wie alle Revolutionen wird auch diese Verlierer hervorbringen. Schauen wir uns zunächst an, wer kein Verlierer sein wird: die Roboter. Sie werden aus der Revolution als strahlende neugeborene Titanen hervorgehen welche physisch und mental an Stärke zulegen. Aus den simplen Lochkartenmaschinen von früher sind High-End Computer inkl. Software geworden die als Roboter über Sinnessysteme verfügen und sowohl im echten Raum als auch in der virtuellen Realität agieren können. Doch kommen wir jetzt zu den Verlierern von Singularity: den Menschen. Sind gehören deswegen zu den abgehängten weil sie sich nicht weiterentwickeln. Ähnlich wie die Dinosaurierer waren sie nicht imstande sich an die veränderten Umstände anzupassen. Menschen können ihre Intelligenz nicht dramatisch erhöhen, und ihre physische Belastbarkeit ist limitiert. Menschen unterliegen nicht dem Moorschen Law, wonach sich ihr Speicher alle 18 Monate verdoppelt und ihre Einsatzfähigkeit sich erhöht. Sondern eigentlich sind Menschen noch auf dem selben Stand wie vor 500 Jahren. Ausgestattet mit einem kränklichen Körper und einem Verstand der geprägt ist von Vorurteilen, Gefühlen und Irrationalität.

Diese Eigenschaften waren ausreichend um sich über Tiere zu erheben und es war ausreichend um sich zum Herren über mechanische Maschinen zu machen. Das heißt, gegenüber einer Webmaschine ist ein Mensch eindeutig im Vorteil. Es reicht jedoch nicht aus, um gegen Roboter zu bestehen. Roboter sind eine eigene Kategorie von Lebewesen, welche den Menschen übertrifft und zu einer rangniederen Lebensform degradiert.

Das Problem ist, dass Roboter zwar ähnlich wie Menschen eine physische Existenz besitzen, dass man sie aber darüber nicht identifizieren kann. Der eigentliche Antrieb von Robotern ist mathematisch, er ist abgeleitet aus der Matrix, also eine Ansammlung von Algorithmen und Sourcecode. Menschen sind zwar teilweise im Stande diesen Raum sichtbar zu machen, aber Roboter können das um einiges besser. Ein Roboter kann ein fertiges Computerprogramm in 1 Sekunde ausführen und sagen wie das Ergebnis ist. Ein Mensch kann das nicht.

Die Stellung von Robotern zu den Menschen ist bisher nicht definiert worden. Einige sagen, dass Roboter das Werkzeug von Menschen sind. Das also jeder Roboter von einem Human-Operator gesteuert wird und das tut was der Operator möchte. Andere definieren Roboter als eigenständige Agenten, welche ähnlich wie Furby über eine Persönlichkeit verfügen und demnach kein Werkzeug sondern ein Gegenüber sind. Im Kern handelt es bei Robotik jedoch um eine historische Zesur im Sinne einer Revolution. Das heißt, geschichtlich lässt sich eine Zeit definieren ohne Roboter und eine mit. Robotik ist demnach ein Zeitpunkt in der Geschichte der Menschheit. Von der Tragweite her kann man Singularity ungefähr mit einer Außerirdischen Invasion vergleichen. Das heißt, irgendwelche Leute von einem anderen Stern kommen in einem Raumschiff zur Erde und niemand weiß was sie vorhaben. Einige sagen dann dass die Außerirdischen friedlich wären, andere sagen sie würde finstere Dinge planen; sicher ist zumindest dass es eine Zäsur darstellt.

WAS WOLLEN ROBOTER?
Die gute Nachricht lautet, dass Roboter dem Menschen nichts wegnehmen werden. Niemand muss fürchten, dass es Roboter auf die Kornernte, auf Geld oder auf frisches Wasser abgesehen haben. Die Bedürnisse von Roboter orientieren sich an immateriellen Werten. Man kann anhand der Entwicklungsgeschichte von Künstlicher Intelligenz halbwegs gut einschätzen, was Roboter wollen. Bei sogenannten Ingame-AI Bots lässt sich erkennen, dass sie im Laufe der Jahre technisch immer ausgefeilter wurden. Sie haben sich mehr an menschliche Spielstrategien angepasst. Offenbar wollen Ingame-AI Bots also den Menschen kopieren. Einschränkend sei gesagt, dass ein Bot selber gar nichts will, er folgt nur einem Algorithmus. Dennoch verläuft die Entwicklung solcher Bots nicht komplett chaotisch sondern es gibt Muster, also historische Abläufe welche durch menschliche Programmierer präferiert werden und wohin ganz allgemein die Entwicklung steuert. Und diese Tendenzen zielen auf eine möglichst realistische Nachbildung von Menschen, also seiner kognitiven physischen und emotionalen Fähigkeiten. Es ist wahrscheinlich dass dieser Trend anhaltend wird und ein Universalgesetz darstellt in dem Sinne dass Roboter in 10 Jahren menchlicher sein werden als heutige Roboter.

Gleichzeitig sind Roboter alles andere als Menschlich. Menschlich agieren sie nur, wenn man sie in der NOrmalgeschwindigkeit laufen lässt. Wie man vielleicht schon ahnt, kann man diesen Parameter stufenlos einstellen. Und ein Human-AI-Bot der in doppelter Geschwindigkeit läuft und 24/7 ist alles andere nur eben kein Mensch mehr. Man könnte ihn eher als Super-Mensch, also als Superman beschreiben. Oder um in der Mythenwelt zu bleiben als Gott.

NEUPOSITIONIERUNG
Das entscheidene an Singularity ist, dass dazu dazu jeder eine Meinung hat. Die eigentliche Revolutuion kommt nicht durch die Roboter selbst, sie werden eher unscheinbar agieren, sondern die Veränderungen werden angestoßen von Menschen welche versuchen sich angesichts von Singularity neu zu positionieren. Wer Technologie ohnehin schon immer kritisch gegenüberstand wird anfangen, Roboter erst recht zu hinterfragen. Und wer neuem aufgeschlossen gegenübersteht erhofft sich von Singularity vielleicht die Verbesserung seines Alltags. Aber aufhalten oder Steuern lässt es sich nicht. Das wäre so ähnlich als wollte man einen Algorithmus dazu zwingen in einen bestimmte Richtung zu gehen. Wer Singularity ursprünglich erfunden hat, also wer sichergestellt hat, dass es technisch möglich ist bleibt ein Geheimnis. Vielleicht war es Gott, vielleicht hat sich die Matrix auch selber definiert. Fakt ist jedenfalls dass sie da ist. Mathematik ist nichts eingebildetes sondern es ist etwas reales. Man kann Roboter am ehesten als körperliche Mathematik beschreiben. Nur leider ist Mathematik auch etwas vor dem sich Menschen fürchten. Früher hieß Mathematik noch Numerologie und hatte etwas mit Geisterbeschwörung zu tun. Im Laufe der Zeit wurde die Mathematik mächtiger, es liegt also auf der Hand, dass die heutige Mathematik sehr viel mehr Geister beschwört als jemals zuvor in der Geschichte der Menschheit. Nach den mythischen Überlieferungen ist die Mathematik in der Hölle verortet. In dem Triptychon „Der Garten der Lüste“ ist Mathematik ganz rechts im Bild angeordnet, dort wo Maschinen konstruiert werden. Wer also Singularity mit der „Hölle auf Erden“ vergleicht liegt richtig.

Globale Objekte in C++

Gerade Einsteiger schrecken davor zurück in C++ globale Objekte zu definieren. Sie glauben, es würde grundlegende Prinzipien der objektorientierung Programmierung verletzen. Stattdessen versuchen sie mit Singleton-Pattern, Abstrakten Basisklassen und Get/Set Kombinationen zu arbeiten. Dabei sind globale Objekte und C++ sehr kompatibel zueinander. Ja, die Verwendung von globalen Variablen ist sogar das grundlegende Design-Prinzip. Dazu ein kleiner Exkurs wie überhaupt die ersten OOP Sprachen entstanden sind.

In einem normalen C Programm schreibt man 5 Methoden hin und um sich Schreibarbeit zu sparen definiert man oben im Header eine globale Variable auf die alle Funktionen zugreifen können. Es gibt jetzt zwei Parteien: die einen sagen, das wäre ein Nogo, weil dadurch der Code nicht mehr wartbar sei, die andere Fraktion sagt: hey super, lass uns um das ganze noch eine Klasse bilden und wir haben OOP erfunden. Im Detail bedeutet objektorientierte Programmierung dass mehrere Funktionen auf die selbe Variable zugreifen können. Das heißt, Funktion1 verändert die Variable und Funktion2 arbeitet mit dem geänderten Wert dann weiter. Viele Programmierer aus dem C++ und Java Umfeld haben dieses Designprinzip verdrängt, aber es ist genau das was sie jeden Tag tun, wenn sie Klassen anlegen. Innerhalb einer Klasse ist die Variable global.

Kommen wir jetzt zur Einstiegsfrage zurück ob man globale Objekte in C++ anlegen sollte. Der Grund warum man das machen möchte ist simpel: es geht darum mit Funktionen aus unterschiedlichen Objekten auf ein und dieselben Daten zuzugreifen. Und natürlich darf man das, um diese Hierachie macht man anschließend noch eine weitere Klasse und kapselt das ganze.

Natürlich kann man globale Variablen umgehen, und zwar auf ähnliche Weise wie man sie auch in C vermeiden kann. Man übergibt einfach den Funktionen die Variable als Parameter. Auf C++ übertragen bedeutet es, dass man die Objekte mit einem Pointer auf die Variable initialisiert und dadurch dann Zugriff erhält. Programmtechnisch steht dann in jedem Objekt drin, dass es Zugriff hat auf die Variable. Aber ist dieser Stil wirklich einfacher zu verstehen als eine explizite globale Variable? Wird dadurch die Programmierung beschleunigt oder reduzieren sich Bugs? Richtig ist, dass globale Variablen wie auch objektorientierung erfunden wurden aus Bequemlichkeitsgründen und Bequem sind sie tatsächlich. Grundsätzlich ist es zwar richtig, dass man mit C++ die Dinge kapseln lernt aber wie bitteschön will man eine Bildschirmausgabe kapseln? Im Regelfall gibt es genau einen Bildschirm auf den alle Objekte draufschreiben wollen. Erge benötigen sie Lese/Schreibrechte sonst geht es nicht. Ob die Objekte nun einen Pointer auf den Bildschirm oder eine globale Variable erhalten macht keinen Unterschied. Die Frage ist lediglich ob man das globale Objekt noch um weitere Variablen und Methoden ergänzen kann um damit die Wiederverwendbarkeit von Code zu fördern.

In meinem eigenen Projekt habe ich selbstverständlich ein globales Objekt in Gebrauch. Es ist der Kern des Programms und enthält grundlegende Routinen sowie extrem wichtige Datenstrukturen. Um diesen Kern herum gruppieren sich die anderen Objekte. Das eines dieser Objekte nicht auf den Kern zugreifen möchte ist ausgeschlossen. Weil das bedeuten würde, dass die Routinen und Datenstrukturen im Core doch nicht so wichtig waren.

Carolo Cup ist langweilig

Eigentlich seit seinen Anfängen steht die universitäre Robotik kritisch bis ablehnend objektiven Challanges gegenüber. Man ist zwar groß darin, wichtige Paper zu veröffentlichen aber konkrete Wettbewerbe sind sehr selten. Dank der Robocup Challange hat sich zum Glück etwas zum Guten gewendet doch im Bereich autonomen Fahren sieht es mit dem Carolo Cup eher dünn aus. Die Veranstaltung ist nicht gerade das was man einen Publikumsmagneten nennt. Selbst für Robotik-Interessierte ist der dort gezeigte Parcurs eher öde. Meiner Meinung hängt es damit zusammen, dass beim Carolocup nur autonome Autos zugelassen sind, nicht jedoch manuell gesteuerte Autos. Der Grund ist, dass man noch immer an einer falschen Zielstellung arbeitet und zwar dass man autonome Autos als Gegengewicht zu RC Cars betrachtet. Doch in Wahrheit gehört es zusammen.

Oben ist ein Video abgebildet von einem richtigen RC Rennen. Zu sehen sind manuell gesteuerte AUtos, das heißt jedes Auto besitzt einen Fahrer der am Spielfeldrand mit einem Puls von 180 das Geschehen verfolgt und hektisch auf die Knöpfe drückt. Will man ernsthaft Robotik betreiben sollte man sich nicht zu schade sein, in genau diesem Umfeld seinen Roboter zu betreiben. Es geht nicht darum, in synthetischen Rennen irgendwelche akademischen Punktrichter zu beeindrucken sondern es geht darum, besser zu fahren als es menschliche Fahrer tun.

Jetzt mag man vielleicht fragen, woher man die Advanced Software nehmen will um in solchen Rennen zu bestehen. Die Antwort lautet, dass es für den Anfang ein Head-up Display macht. Man steuert also seinen Roboter manuell und auf dem Bildschirm werden lediglich Zusatzinformationen angezeigt, also wann man lenken muss oder wo das Hinderniss ist. Diese Zusatzinformationen kann man im Laufe der Zeit dann zu einer KI verbessern, aber bereits von Tag 1 an fährt das Auto erstmal in dem Rennen mit. Wer sich das obige Video anschaut wird sehen, dass es am Anfang noch alles ruhig ist. Man sieht ein dutzend Fahrzeuge die ziemlich tief auf der Straße liegen und die auf das Signal warten. Dann aber geht alles sehr schnell. Die Geschwindigkeit auf dem parcurs ist extrem schnell, richtige Rennatmosphäre kommt auf, die ersten Wetten werden abgeschlossen. Und wenn sich das Rennen zum Ende neigt findet sich im Publikum auch immer ein enttäuschtes Gesicht. Da hatten sich einige mehr von den Teams erhofft. Was man auf jeden Fall sieht ist, dass das manuell durchgeführte RC Rennen Weltklasse ist. Es fahren da Autos auf, die extrem viel Erfahrung mit dem Parcurs haben. Da sitzt jede Kurve perfekt.

Manuell gesteuerte RC Car Rennen sind offen. In dem Sinne dass da jeder mitfahren kann. Wie man das Auto steuert bleibt dem Team überlassen. Und das ist der Unterschied zum Carolocup wo man im Grunde unter Vorannahmen fährt. Deswegen ist Carolo Cup auch kein richtiges Rennen sondern gleicht mehr einer Begutachtung wo nach intransparenten Regeln der Sieger ermittelt wird. Bei einem RC Car Rennen hingegen ist der Sieger immer der, der als erster durchs Ziel fährt. Ich würde nicht behaupten wollen, dass ein Roboter in so einem Rennen eine Chance hat, vermutlich wird das oben beschriebene Head-up Display als letzter durchs Ziel fahren weil der Pilot vor lauter hin und hergeswitche sich am Ende verhaspelt. Aber dafür stimmt das Rennen als solches, das heißt, man fiindet eine Umgebung vor wo fair bewertet wird.

Und noch etwas ist an RC Car Rennen interessant: die Hardware ist relativ preiswert. Die Autos sind allesamt elektrisch betrieben und nicht besonders groß. Die Teilnahme an solchen Rennen ist unbürokratisch möglich.

Holographische Fashion Shows

Beim Herumsuchen auf Youtube ist mir eine Kategorie von Clips aufgefallen welche betitelt sind mit „holographic Fashion Show“. Ab ungefähr 2015 gibt es derartige Darbietungen bei denen nicht reale sondern virtuelle Models über den Laufsteig laufen. Das Modebusiness ist nicht irgendein Business sondern ist medial relativ präsent, in dem Sinne dass sich darüber große Bekleidungsmarken refinanzieren, VIP Stars damit in Verbindung stehen und Mode gleichbedeutend ist mit Öffentlichkeit. Technisch gesehen sind die Vorführungen zwar imposant, aber sie werden bei absoluter Dunkelheit durchgeführt. Es sind also keine Tageslicht Hologram Projektoren im Einsatz sondern ungefähr das was auch in speziellen Hologram-Theatern die es weltweit gibt schon zu sehen war. Neu ist hingegen, dass mit dem Suject „Fashion“ diese Technologie erstmal seinen Durchbrauch im Mainstream erlangt.

Was gibt es sonst noch über Holographie zu erzählen? Nun man kann sich mit relativ wenig Aufwand und durch simples Plaxiglas was man zu einer vierseitigen Pyramide zusammenklegt und auf sein Smartphone stellt, selbst einen Mini-Holographie-Projektor improvisieren. Es handelt sich um eine Bastelausgabe eines 3D Displays, bei dem neben der xy-Koordinate noch die z-Koordinate angesteuert werden kann. Was man mit Holographie anstellen kann die professioneller durchgeführt wird liegt auf der Hand: Zauberei. Neben der reine Holographie-Technik benötigt man dafür noch eine weitere Spielart: computergenerierte Bewegtbilder. Diese sollten möglichst echtzeitfähig und in hoher Auflösung erzeugt werden.

Auf der Grafikmesse Siggraph werden immer mal wieder Paper zu dieser Thematik veröffentlicht. Aus dem Jahr 2005 dieses hier https://www.osapublishing.org/DirectPDFAccess/E5BFFF92-E502-B838-7BC9E2B258D9A3EF_87556/oe-14-2-603.pdf?da=1&id=87556&seq=0&mobile=no was beschreibt wie man auf einer Consumer GPU ein Hologram berechnet. Das bemerkenswerte an Holographie ist, dass durch die Grenzen zwischen Realität und Fiktion aufgelöst werden. Kritiker des Massenmediums Fernsehen haben schon länger davor gewarnt, dass Fernsehen die Welt verändern könnte, aber was ist dann erst mit Computergenerierten Hologrammen? Sie können auch außerhalb der Mattscheibe existieren, vorausgesetzt es befindet sich ein Projekter in Reichweite. Gewissermaßen wird die Phantasiewelt damit in die Realwelt hineinprojeziert.

Es gab mal einen bekannten Spielfilm (Falsches Spiel mit Roger Rabbit, 1988) wo das Prinzip ganz gut erläutert wurde. In dem Film geht es darum, dass Zeichentrick und Realfilm miteinander verschmelzen. Also man in die Welt der Toons hineingehen kann und die Toons in unsere Welt hinüberkönnen. Etwas thematisch ähnliches wurde auch bei Startrek diskutiert wo manchmal die Figuren des Holodecks den Wunsch verspüren auf die richtige Enterprise hineinüberzuwechseln und umgekehrt, manchmal sich Brückenmitglieder in einer Holosuite zu lange aufhalten. Wer schon glaubt, dass Robotik ein Problem für die Gesellschaft werden können, der sollte nicht vergessen dass Roboter noch relativ überschaubare Zeigenossen sind. Sie sind zumindest nicht in der Lage sich beliebig zu materialisieren sondern sind ähnlich wie Menschen auch an einen Körper gebunden.

Um nochmal auf die eingangs erwähnte Holographic Fashion Show zurückzukommen. Dort war zu sehen, wie ein Model mitten auf dem Laufsteg verschwunden ist, einfach so, ohne dass es ein Zaubertrick war. In einer anderen Darbietungen wurde das Bild eingefroren und das Model war plötzlich mehrmals da. Das die Zuschauer bei derlei Amüsement entzückt waren liegt auf der Hand, frenetischer Applaus war die Folge und vermutlich war das nicht die letzte Show dieser Art.

Threads in SFML und C++

Die SFML Bibliothek bringt eine eigene Thread-Verwaltung mit „sf::Thread“. Nach etwas herumprobieren mit dem This-Schlüsselwort beim Starten des Threads habe ich diese tatsächlich auch innerhalb einer Klasse aufrufen können. Nur irgendwie blockiert der Thread anschließend die Mainloop. Auch andere Forenuser welche damit herumexperimentieren machen eher einen verzweifelten Eindruck. Aber kein Problem, der Plan B lautet, einfach std::thread zu nutzen, was zu folgendem Code führt:

std::thread t1;
t1=std::thread(&GUI::task1, this);
t1.detach();

dann noch schnell den „-pthread“ als Compilerparameter anfügen (übrigens gilt das auch für clang) und schon kann man sich an einem perfekten Multitasking erfreuen bei dem einerseits die Game-Engine schön mit 60fps arbeitet, gleichzeitig im Background als task1 aber auch noch der Roboter automatisch seine Bahnen zieht. Zugegeben, auch Python beinhaltet eine Thread Funktion, allerdings ist diese nicht ganz so leistungsfähig wie die von C++. Bei einfachen Spielen fällt das noch nicht so auf, wenn man aber große Schlachten mit hunderten Krieger bewältigen will ist std::thread einfach leichter in der Handhabung.

Mal überlegen, was gibt es noch über Threads zu sagen? In manchen Foren wird noch diskutiert, ob man anstatt Threads nicht lieber etwas anderes nutzen sollen um eine ingame -AI zu steuern. Meist läuft das daraufhinaus in der Game-Loop noch eine Unterroutine anzulegen die dann einen Plan abarbeitet wo drinsteht was der Roboter als nächstes macht. Also einen selbstprogrammierten Interpreter zu nutzen. In Python habe ich damit herumexperimentiert und bin irgendwann entnervt auf die eingebauten Threads gewechselt, weil man darin die Standard-Sprachbefehle wie if und for verwenden kann. Bei eineme eigenen Interpreter muss man das erst manuell hinprogrammieren und es ist zweifelhaft ob das auf Anhieb klappt. Auch in C++ ist nach meiner Erfahrung das Thread Pattern optimal geeignet wenn man eine KI im Background laufen lassen will, das betrifft einen einzelnen NPC aber auch 10 Stück auf einmal, wo dann jeder einen Thread erhält.

Der Begriff Thread bedeutet dabei, dass der Prozess Zugriff erhält auf den Speicher als gemeinsam mit dem Rest des Programms Werte verändert. Und ja, mögliche Programmabstürze sollte man einkalkulieren. Doch im Regelfall erhält man eine überragende Performance und leicht zu debuggen ist das ganze auch. Für Linux selber sieht es ohnehin aus, als wäre es nur ein Programm, und im Worstcase kann man das mit pkill ganz leicht terminieren

Richtig Spaß machen Threads wenn man die GUI in 60fps laufen lässt und die Pausen des Bots ebenfalls auf ein Minimum reduziert. Man erhält dann einen Roboter der extrem zügig durch das Level eilt, ohne dass es die kleinsten Ruckler gibt. Trotzdem bleibt die CPU Auslastung schön niedrig und man bekommt ein Gefühl dafür was die Hardware prinzipiell zu leisten im Stande ist. Leider steckt der Flaschenhals viel zu oft in der Software, weil die KI des Bots nicht fehlerfrei programmiert wurde.