{"id":12475,"date":"2024-05-28T10:15:02","date_gmt":"2024-05-28T08:15:02","guid":{"rendered":"https:\/\/pib.rocks\/cad-klon-einen-digitalen-zwilling-fuer-pib-erstellen\/"},"modified":"2024-05-28T14:12:42","modified_gmt":"2024-05-28T12:12:42","slug":"cad-klon-einen-digitalen-zwilling-fuer-pib-erstellen","status":"publish","type":"post","link":"https:\/\/pib.rocks\/de\/cad-klon-einen-digitalen-zwilling-fuer-pib-erstellen\/","title":{"rendered":"CAD-Klon: Einen digitalen Zwilling f\u00fcr pib erstellen"},"content":{"rendered":"<p>F\u00fcr unseren humanoiden Roboter pib haben wir erfolgreich einen digitalen Zwilling erstellt und implementiert. Aber was genau ist ein digitaler Zwilling und welche Vorteile bietet er?<\/p>\n<h3>Was ist ein digitaler Zwilling?<\/h3>\n<p>F\u00fcr unsere Zwecke ist ein digitaler Zwilling eine besondere Art der Simulation: Er ist das virtuelle Abbild eines physischen Objekts, an das er eng gekoppelt werden kann. Das Ziel des digitalen Zwillings ist es, dass der physische Roboter und das virtuelle Modell auf jede Interaktion in genau derselben Weise reagieren. Dies erm\u00f6glicht eine genaue Ann\u00e4herung an den Roboter, ohne die Nachteile eines physischen Exemplars zu haben.<\/p>\n<p>Wir erwarten von pibs digitalem Zwilling folgendes:<\/p>\n<ul>\n<li>Sieht aus und verh\u00e4lt sich \u00e4hnlich wie sein physisches Abbild<\/li>\n<li>Auf die gleiche Weise steuerbar wie seine physische Darstellung<\/li>\n<li>Kann aus unseren Onshape CAD-Dateien generiert werden<\/li>\n<li>Auf dem neuesten Stand sein<\/li>\n<li>Einfach zu erzeugen sein<\/li>\n<\/ul>\n<h3>Was ist das Ziel eines digitalen Zwillings?<\/h3>\n<p>Unser Ziel war es, eine rein digitale Version von pib zu haben, die sich \u00e4hnlich verh\u00e4lt wie der physische pib und die leicht und weithin zug\u00e4nglich ist. Damit k\u00f6nnen wir einige der Hardware-Probleme beseitigen, die bei der Entwicklung oder bei der Interaktion mit pib auftreten.<\/p>\n<p>Mit Cerebra, der pib-eigenen Steuerungssoftware, kann jeder einfach eine Weboberfl\u00e4che \u00f6ffnen und die Kontrolle \u00fcber pib \u00fcbernehmen, indem er zum Beispiel die Motoren bewegt oder den Sprachassistenten benutzt. Wir arbeiten am physischenpib und entwickeln gleichzeitig Cerebra, was zu Frustrationen f\u00fchren kann. Wenn ein neues Element nicht so funktioniert, wie es sollte, gibt es viele M\u00f6glichkeiten &#8211; es k\u00f6nnte am Element selbst liegen, am Framework, an der Internetverbindung, am Motor, am Kabel&#8230; Wir m\u00fcssen also viel Zeit und M\u00fche aufwenden, um den Fehler zu finden, obwohl es mit einem digitalen Zwilling so viel einfacher w\u00e4re. Schafft man es, dass sich eine rein virtuelle Version genauso verh\u00e4lt und kontrolliert wird wie die physische, lassen sich solche Fehler viel schneller finden und beheben.<\/p>\n<h3>Reinforcement Learning in einer virtuellen Umgebung<\/h3>\n<p>Jeder Schieberegler in Cerebra sollte den physischen pib auf die gleiche Weise steuern wie den virtuellen, damit der Benutzer eine gute Vorstellung davon bekommt, wie sich die pib im wirklichen Leben verh\u00e4lt. Ein gro\u00dfer Vorteil eines digitalen Zwillings ist die M\u00f6glichkeit, Reinforcement Learnings durchzuf\u00fchren oder Algorithmen f\u00fcr maschinelles Lernen auf virtuellen Versionen deines Roboters vorzutrainieren. Wenn wir zum Beispiel wollen, dass pib eine Tasse greift und erkennt, k\u00f6nnten wir es auf dem physischen Roboter trainieren und der k\u00f6nnte nach dem ersten Versuch zusammenbrechen, weil die Motoren nachgeben. Deshalb ist es viel g\u00fcnstiger und zeitsparender, das gesamte Vortraining in einer sehr \u00e4hnlichen virtuellen Umgebung durchzuf\u00fchren. Auf diese Weise k\u00f6nnen wir eine Kopie von pib in unsere Simulation laden und so viele Trainingsl\u00e4ufe durchf\u00fchren, bis der Roboter wei\u00df, wie er eine Tasse greifen kann. Als N\u00e4chstes nehmen wir die Ergebnisse und laden sie auf einen physischen pib, der dann schon wei\u00df, wie er die Tasse greifen muss.<\/p>\n<p>Der digitale Zwilling ist auch ein gro\u00dfer Vorteil f\u00fcr unser pib@school-Programm, bei dem Sch\u00fclerinnen und Sch\u00fcler ihre eigene Version von pib drucken und bauen. Es bietet zus\u00e4tzliche M\u00f6glichkeiten f\u00fcr eine Gruppe von Teilnehmenden, gleichzeitig an pib zu arbeiten. Au\u00dferdem kann jeder, der haupts\u00e4chlich an der Steuerung des Roboters interessiert ist, mit dem digitalen Zwilling arbeiten, ohne zuerst einen kompletten pib zu bauen.<\/p>\n<h3>Das erste Hindernis: Der Wechsel von .stl zu .urdf<\/h3>\n<p>F\u00fcr uns ist es sehr wichtig, dass der digitale Zwilling von pib aus unseren CAD-Dateien erstellt wird. CAD steht f\u00fcr Computer Assisted Design und unser Programm der Wahl ist Onshape, mit dem du auf unser 3D-Modell von pib zugreifen kannst. Das Modell besteht aus .stl-Dateien, die wir nun in eine simulierbare Kopie von sich selbst verwandeln wollen.<\/p>\n<p>.stl-Dateien werden verwendet, um Teile zu entwerfen und zu drucken &#8211; f\u00fcr die Verwendung in Simulationen sind sie jedoch nicht ideal. Das .urdf-Dateiformat (Unified Robot Description Format) verspricht eine L\u00f6sung.<\/p>\n<p>Wenn man bedenkt, dass pib ein Open-Source-Projekt ist und sich die CAD-Dateien st\u00e4ndig \u00e4ndern, wird es f\u00fcr den digitalen Zwilling schwieriger, immer passgenau zu bleiben. Deshalb mussten wir uns eine einfache L\u00f6sung einfallen lassen, um ihn zu erstellen. Unser Ziel ist es, eine automatisierte Pipeline zu haben, damit wir auf Knopfdruck eine neue Kopie unseres digitalen Zwillings erstellen k\u00f6nnen.<\/p>\n<p>.stls sind so gut wie nur Zahlen, w\u00e4hrend .urdf-Dateien ein sehr spezifisches Format haben. Sie basieren auf .xml. Die .stl-Dateien sind in zwei Teile aufgeteilt: Links und Joints. Der Unterarm ist zum Beispiel ein Link und der Oberarm auch. Das Gelenk ist der Joint zwischen diesen beiden Teilen &#8211; es ist kein echtes Teil, aber das Programm wei\u00df, dass es eine Verbindung gibt und nutzt diese Information, um sicherzustellen, dass sich die Teile drehen oder bewegen, wie sie sollen. Wenn du all diese Joints und Links zusammenf\u00fcgst, erh\u00e4ltst du eine Baumform.<\/p>\n<p>Der &#8222;unified&#8220; Teil von .urdf h\u00e4lt jedoch nicht immer, was er verspricht. Er funktioniert gut f\u00fcr <strong>Gazebo<\/strong> aber es gibt auch andere Simulationsprogramme, die ihr eigenes Dateiformat haben, wie z.B. <strong>Webots<\/strong> die nicht direkt mit .urdf kompatibel ist. Mit <strong>MuJoCo<\/strong>kannst du .urdf-Dateien nicht direkt verwenden, aber sie bieten eine gewisse Grundkompatibilit\u00e4t: Das MuJoCo-Format kann mit URDF umgehen, indem es einen Header einbindet. Um von .urdf nach .porto zu gelangen, ist eine aufw\u00e4ndigere Konvertierung erforderlich, aber zum Gl\u00fcck gibt es Tools, die bei der Konvertierung und dem Export helfen: <strong>onshape2robot<\/strong> bietet eine Schnittstelle, die Onshape-Assemblies in .urdf wandelt, und <strong>urdf2webots<\/strong> wandelt diese .urdfs in .porto-Dateien um.<\/p>\n<h3>Was kommt als N\u00e4chstes?<\/h3>\n<p>Wir wollen, dass die Menschen diese digitalen Zwillinge so nutzen k\u00f6nnen, dass es ihnen leichter f\u00e4llt, Reinforcement Learnings umzusetzen. Deshalb arbeiten wir daran, die Dateien zu verbessern, damit sie einfacher zu exportieren und zu verwenden sind.<\/p>\n<p>Das hei\u00dft: Wir sind gerade dabei, einen digitalen Zwilling f\u00fcr MuJoCo zu erstellen, was bedeutet, dass wir die URDF durch das Hinzuf\u00fcgen von Collidern erweitern. Wir sind auch dabei, eine Pipeline f\u00fcr den Export von digitalen Zwillingen aus unserem CAD-Repository in die Dateitypen verschiedener Simulationsprogramme einzurichten. Als n\u00e4chstes werden wir den digitalen Zwilling und die dazugeh\u00f6rige Trainingsumgebung f\u00fcr Reinforcement-Learnings \u00f6ffentlich zug\u00e4nglich machen<\/p>\n<p>F\u00fcr alle, die den digitalen Zwilling von pib ausprobieren wollen, wird unser Webots-Paket standardm\u00e4\u00dfig installiert, wenn du die Software von pib herunterl\u00e4dst. Das Software-Setup findest du hier: <a href=\"https:\/\/github.com\/pib-rocks\/pib-backend\" target=\"_blank\" rel=\"noopener\">GitHub &#8211; pib-rocks\/pib-backend<\/a><\/p>\n<p>Wir empfehlen, entweder einen RaspberryPi oder eine virtuelle Maschine mit Ubuntu zu verwenden.<\/p>\n<h3>Was kann ich tun?<\/h3>\n<p>Wir sind immer auf der Suche nach neuen Mitentwicklern, <a href=\"https:\/\/discord.gg\/GRdpyeDu7P\" target=\"_blank\" rel=\"noopener\">f\u00fcr unsere wachsende Community<\/a> Unterst\u00fctze uns bei diesen Bem\u00fchungen! Du wei\u00dft nicht, was du in unserer Community tun kannst? Eines unserer Mitglieder hat zum Beispiel bereits eine .proto-Datei f\u00fcr Webots optimiert und sie sogar \u00fcber Cerebra steuerbar gemacht. Tritt uns jetzt auf Discord bei und nimm dein eigenes Projekt in Angriff!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>F\u00fcr unseren humanoiden Roboter pib haben wir erfolgreich einen digitalen Zwilling erstellt und implementiert. Aber was genau ist ein digitaler Zwilling und welche Vorteile bietet er? Was ist ein digitaler Zwilling? F\u00fcr unsere Zwecke ist ein digitaler Zwilling eine besondere Art der Simulation: Er ist das virtuelle Abbild eines physischen Objekts, an das er eng<\/p>\n","protected":false},"author":1,"featured_media":12471,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[84,98],"tags":[],"class_list":["post-12475","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pib-news-de","category-rnd-de"],"_links":{"self":[{"href":"https:\/\/pib.rocks\/de\/wp-json\/wp\/v2\/posts\/12475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pib.rocks\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pib.rocks\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pib.rocks\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pib.rocks\/de\/wp-json\/wp\/v2\/comments?post=12475"}],"version-history":[{"count":1,"href":"https:\/\/pib.rocks\/de\/wp-json\/wp\/v2\/posts\/12475\/revisions"}],"predecessor-version":[{"id":12487,"href":"https:\/\/pib.rocks\/de\/wp-json\/wp\/v2\/posts\/12475\/revisions\/12487"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pib.rocks\/de\/wp-json\/wp\/v2\/media\/12471"}],"wp:attachment":[{"href":"https:\/\/pib.rocks\/de\/wp-json\/wp\/v2\/media?parent=12475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pib.rocks\/de\/wp-json\/wp\/v2\/categories?post=12475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pib.rocks\/de\/wp-json\/wp\/v2\/tags?post=12475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}