ROS-Roboterarm-3D-Simulation

Wenn wir ein neues Gerät entwerfen, müssen wir ein 3D-Modell erstellen, um dessen Gesamterscheinung, Größe, Montageparameter, Herstellbarkeit, Finite-Elemente-Analyse usw. zu beurteilen. Aber diese Modelle sind mehr oder weniger virtuell und wir können sie manuell verschieben. Aber nehmen wir an, Sie entwerfen einen Roboter, ein selbstfahrendes Auto, eine Drohne. Vor der Herstellung ist es am besten, die Vorbereitung des Steuerungssystems abzuschließen, damit wir wirklich verstehen können, wie es funktioniert. Dies hilft auch sehr bei der Auswahl der richtigen Teile. Wir können das Design optimieren, anstatt es zu überdesignen.

Empfohlene NSDT-ToolsThree.js AI Texture Development Kit  –  YOLO-Generator für synthetische Daten  –  GLTF/GLB-Online-Bearbeitung  –  Online-Konvertierung des 3D-Modellformats  –  programmierbarer 3D-Szeneneditor  –  REVIT-Export-3D-Modell-Plug-in  –  semantische Suchmaschine für 3D-Modelle

Um dies zu erreichen, können wir eine Vielzahl von Werkzeugen einsetzen. Wenn Sie etwas wirklich theoretisch testen möchten und viele individuelle mathematische Modellierungen durchführen müssen, ist MATLAB Simulink die beste Wahl. Es erleichtert die Visualisierung von Steuerungssystemen und verfügt über zahlreiche Funktionen. Der Umfang von MATLAB ist wirklich endlos. Aber es ist teure Software, es ist schwerfällig und manchmal ziemlich komplex.

Es gibt noch eine andere Möglichkeit. Robot Operating System (ROS) mit Gazebo/Rviz. ROS ist das verwendete Framework und Gazebo/Rviz ist das Simulationstool. Eine nützliche Funktion dabei ist, dass Sie (neben der Simulation) einen von Ihnen erstellten ROS-Arbeitsbereich nehmen und ihn mit einigen geringfügigen Änderungen direkt in die Hardware integrieren können. Allerdings müssen Sie die ROS-Umgebung verstehen und sich ein wenig daran gewöhnen.

Zusammenfassend ist beides gut. Aber nur eines ist Open Source und günstig.

Die meisten Leute, die mit der Nutzung von ROS beginnen, nutzen verfügbare Pakete wie Panda/UR/Kuka Robots, die bereits 3D-Modelle enthalten. Diese Pakete werden hauptsächlich zur Simulation vorhandener Roboterarme verwendet. Wenn Sie jedoch Ihr eigenes Design herausbringen und überprüfen möchten, wie es mit Kinematikalgorithmen funktioniert und auf Kollisionen prüft, müssen Sie Ihr Design in eine URDF-Datei (Unified Robot Description Format) konvertieren. Wir werden sehen, wie das mit Solidworks geht und wie man die Datei in einer ROS-Umgebung über MoveIt! verwendet. und Revitz.

Sie müssen Ubuntu für ROS und Rviz-Teile sowie Solidworks für die Modellierung installieren. Ich verwende Solidworks 2018 und Ubuntu 18.04 mit ROS Melodic.

Lasst uns beginnen.

1、Solidworks

Ich gehe davon aus, dass jeder, der diesen Artikel liest, bereits einen in Solidworks entworfenen Roboterarm besitzt. Der in MoveIt! bereitgestellte Löser wird hauptsächlich von einem Roboterarm mit 6 Freiheitsgraden unterstützt. Um es einfach zu halten, simuliere ich einen Arm mit 6 Freiheitsgraden.

Zunächst muss das Solidworks URDF Exporter-Plugin in Solidworks installiert werden. Laden Sie den Urdf-Exporter hier herunter . Schließen Sie alle geöffneten SolidWorks-Fenster und installieren Sie es. Öffnen Sie das SolidWorks-Plugin und aktivieren Sie den URDF-Exporter:

Bei einigen Versionen befindet sich der Exporter unter „Datei“ > „Nach URDF exportieren“ und bei einigen Versionen befindet sich der Exporter unter „Extras“ > „Nach URDF exportieren“.

Ich habe ein einfaches kleines 3D-gedrucktes Robotermodell erstellt. Der Endeffektor ist derzeit offen.

Die 6 Gelenke sind im Bild oben dargestellt. Bei dieser Art von Design ist es im Allgemeinen eine gute Designpraxis, für jeden Link eine andere Unterkomponente zu verwenden. In diesem Fall müssen Sie für jeden Link in der Komponente eine andere Unterkomponente verwenden. Der Designbaum sollte so aussehen.

Wie Sie sehen, verfügt jeder Link über eine eigene untergeordnete Komponente. Wenn Sie Unterbaugruppen verwenden, machen Sie die Unterbaugruppe starr. Aber meiner Erfahrung nach ist es besser, diese Unterbaugruppen in Teiledateien zu konvertieren. Der URDF-Konverter ist immer noch nicht perfekt und es treten einige ungewöhnliche Fehler auf. Es gibt ein ungewöhnliches Problem, bei dem Teile in einer Unterbaugruppe nach der Konvertierung in URDF schweben (siehe Abbildung unten). Daher ist es am besten, Unterbaugruppen in Teiledateien zu konvertieren.

Als nächstes kommt es auf die Zusammenarbeit an. Da es sich bei allen Gelenken um Drehgelenke handelt, werden in diesem Fall nur deckungsgleiche und konzentrische Verknüpfungen verwendet. Bei einer Basisverbindung können Sie diese entweder feststecken oder mit einer deckungsgleichen Verknüpfung auf eine Baugruppenebene beschränken (unter Verwendung der Hauptebene in der Basisverbindung). Siehe das Bild unten, Abschnitt „Verknüpfungen“ des Designbaums.

Es gibt drei deckungsgleiche Verknüpfungen zwischen der Basisverbindungsebene und der Montageebene (gelbes Feld), gefolgt von 6 konzentrischen Verbindungen, 6 deckungsgleichen Verbindungen für jede Verbindung jeder Verbindung. Sie können die Beziehung zwischen den einzelnen Gelenken im Bild oben beobachten. Es ist ein 6-DOF-Roboter, also gibt es 6 Gelenke (die übliche Namenskonvention ist jedoch 0-5). Sobald alle Komponenten zusammenpassen, müssen wir über die Farbe nachdenken. Wenn es sich um ein Teil einer Baugruppe handelt, nimmt das URDF meiner Erfahrung nach das auf Teileebene vorgegebene Erscheinungsbild an. Nachdem alle verknüpften Unterbaugruppen in Teiledateien konvertiert und zusammengebaut wurden, wird daher jedem Verbindungsteil in der Baugruppe ein Erscheinungsbild hinzugefügt. Der einzige Nachteil besteht darin, dass jeder Link nur eine einzige Farbe hat. Sie können jedoch gerne damit experimentieren, indem Sie Baugruppen auf Funktionsebene mit Farbe versehen.

Lassen Sie uns nun tatsächlich die URDF-Datei generieren. In meinem Solidworks 2018 SP 0.1 befindet es sich unter „Extras“ > „Als URDF exportieren“ und bei einigen Versionen unter „Datei“ > „Als URDF exportieren“. In beiden Fällen erhalten Sie ein Fenster zur Immobilienverwaltung, wie unten dargestellt.

Offensichtlich hängen alle nachfolgenden Gelenke nach der Basis von der Bewegung der Basis ab, alle Verbindungen nach Verbindung 1 hängen von der Bewegung der Basis und Verbindung 1 ab und so weiter. Dies ist eine offene kinematische Kette. Daher müssen wir es im Exporter definieren. Die einzelnen Schritte sehen so aus.

Was wir hier tun, ist, Beziehungen zwischen Komponenten zu definieren. Wie Sie in 1 sehen können, habe ich der Basis den Namen Link_0 gegeben und das Teil/die Unterbaugruppe der Basis in der Baugruppe ausgewählt. Klicken Sie einfach auf den Sockel im Modell, um ihn zu identifizieren. Dann müssen wir die Basisanzahl der Unterlinks auswählen. Da es sich um eine kinematische Kette handelt, gibt es nur ein Unterglied, daher ist die Eingabe 1. Wenn Sie auswählen, werden die untergeordneten Entitäten von Link_0 unten angezeigt. Wenn Sie 2 (bei einem zweirädrigen Auto) wählen, wird es so sein.

Sobald Sie auf den Unterlink klicken, sehen Sie, wie sich das Fenster „Property Manager“ in das zweite Fenster oben ändert. Benennen Sie wie zuvor den Link, wählen Sie das Modell und dann den Sublink aus. Das einzig Neue ist die Benennung des Gelenks. Alle nachfolgenden Fenster für alle Links sehen gleich aus und das letzte Fenster nach Eingabe des letzten Links sieht aus wie das dritte Fenster im Bild. In diesem Fenster können Sie kinetische Ketten und die allgemeinen Beziehungen zwischen Verbindungen anzeigen. Wenn Sie fertig sind, klicken Sie auf die Schaltfläche „Vorschau und Export“. Dadurch wird die erforderliche Referenzgeometrie generiert. Genauso wie Koordinatensysteme und Rotationsachsen. Nach der Generierung wird ein Fenster wie „Solidworks Assembly to URDF Exporter“ generiert.

In diesem Fenster wird ein URDF generiert. Zuvor müssen wir jedoch einige Dinge überprüfen. Versuchen Sie also, dies jetzt zu minimieren.

Bei der Verwendung von MoveIt! und ROS müssen wir eine Konvention befolgen. Weitere Informationen zu Konventionen finden Sie in  Abschnitt 1.1 des offiziellen ROS-Leitfadens. Aber im Grunde bedeutet es, dass die Z-Achse nach oben und die X-Achse nach vorne zeigt (was die Richtung wäre, in die Link 0 zeigt, wenn der Gelenk-0-Winkel 0 ist). Wenn Sie sich das vom URDF-Exportprogramm generierte Koordinatensystem und die Achsen ansehen, sieht es folgendermaßen aus.

Der Ursprung definiert global die Platzierungsposition des Roboterarms im globalen Koordinatensystem von Rviz/Gazebo. In Solidworks wird dies automatisch am Hauptkoordinatensystem der Baugruppe ausgerichtet. Generell bevorzuge ich, dass sich der Roboter im Zentrum der simulierten Umgebung befindet. Um dies zu erreichen, sollte der Ursprung des Bauteils in der Mitte der Roboterbasis liegen. Aber oft ist das nicht der Fall. Daher müssen wir Origin_global des URDF-Modells in die Mitte der Basis verschieben. Dazu müssen wir die Punkte mit der Methode „Flächenmitte“ projizieren (oder mit einer anderen Methode, die für Ihr Modell geeignet ist), wie unten gezeigt

Ich hoffe, dass hier die Rviz/Gazebo-Umgebung entstehen wird. Erstellen Sie den Punkt, bearbeiten Sie dann die Punktfunktion „Origin_global“ und geben Sie den von uns erstellten Punkt als Ursprung des Koordinatensystems an. Bevor Sie dies tun, denken Sie daran, den von uns erstellten Punkt über Origin_global im Designbaum zu verschieben. Die Position des Koordinatensystems ist abgeschlossen. Jetzt Richtung. Wir können Kanten im Modell verwenden, um die Richtung der Achse zu definieren. Der URDF-Generator erstellt jedoch eine Skizze wie die folgende, die einfacher und fehlerfreier als Koordinatensystemreferenz verwendet werden kann. Definieren Sie nun nur noch den Ursprung. Aber wir können das Koordinatensystem nutzen und die Ausgangsposition des Roboterarms korrekt definieren

Überprüfen Sie nach dem Anpassen des Koordinatensystems, ob die Achsen ordnungsgemäß mit den Rotations-/Prismengelenken ausgerichtet sind. Schließen Sie dann das angezeigte Dialogfeld. Es wird Sie zum Speichern der geänderten Konfiguration auffordern. Dies sollte ein klares „Ja“ sein.

Starten Sie dann den URDF-Exporter neu, ohne Einstellungen zu ändern, und klicken Sie wie zuvor auf „Vorschau und Export“, um das Fenster „Solidworks Assembly to URDF Exporter“ zu öffnen. Da es sich hierbei um ein Einsteiger-Tutorial handelt, möchten wir noch nichts ändern. Klicken Sie auf Weiter und Sie sehen ein Fenster wie dieses.

Dadurch werden verknüpfte Trägheitsdaten, Kollisionsdaten und Texturen angezeigt. Aber darüber wollen wir jetzt nicht diskutieren. Klicken Sie einfach auf „URDF und Mesh exportieren“. Und es wird ein Dialogfeld zum Speichern angezeigt. Die Assembly wird xxxx.SLDASM genannt. Lösch das. Und ersetzen Sie es durch etwas ohne Zahlen oder Punkte im Namen. Sie können Unterstriche verwenden. Zum Beispiel: robot_arm_one ist ein guter Name. Die Benennungskonvention sollte der Namenskonvention in ROS folgen. Im Allgemeinen sind Kleinbuchstaben und Unterstriche die besten Benennungspraktiken und dürfen nicht mit Zahlen beginnen oder enden.

Nach dem Speichern im Ordner sollte der Ordner so aussehen:

Sie können den gesamten Ordner auf einem externen Laufwerk speichern und in Ubuntu verwenden. Wenn Sie denselben PC im Dual-Boot-Modus verwenden, navigieren Sie einfach zum Speicherort. Nachdem wir nun mit der Generierung des URDF fertig sind, sehen wir uns an, wie man es in ROS über MoveIt verwendet!

2. Unter Ubuntu

Starten Sie Ubuntu und installieren Sie ROS, falls Sie es noch nicht getan haben. Ich empfehle die Verwendung von Melodic Morenia, da Kinetic Kame mittlerweile ziemlich alt ist und Melodic fast alles unterstützt. Sie können auch Telekinese nutzen. Dies gilt für Moveit 1, das ROS1 verwendet, und Moveit 2, das ROS2 (Foxy Fitzroy) verwendet, aber darauf gehen wir hier nicht ein.

Um ROS zu installieren, befolgen Sie dieses Tutorial . Verwenden Sie dann diese Anleitung , um MoveIt! zu installieren. Bewegungsplanungsrahmen. Der Installationsprozess ist sehr einfach: Öffnen Sie mit Strg+Alt+T ein Terminal und kopieren Sie die Befehle aus dem Tutorial und fügen Sie sie ein. Um diesen Vorgang durchführen zu können, benötigen Sie eine gute Internetverbindung.

Nach der Installation von MoveIt und ROS sollte Ihr Home-Verzeichnis einen Ordner „ws_moveit“ (oder einen anderen Namen, den Sie Ihrem Arbeitsbereich gegeben haben) enthalten. Kopieren Sie den Ordner, den wir aus Solidworks generiert haben, und fügen Sie ihn in /src/ ein. Öffnen Sie zu diesem Zeitpunkt ein Terminal und führen Sie die folgenden Befehle aus:

Cd ~/ws_moveit

Catkin build

Das sollte eine Weile dauern und ungefähr so ​​aussehen (die Anzahl der Pakete hängt von den Ordnern im src-Ordner ab, in meinem Fall hatte ich 8 andere Modelle)

Danach treten Sie ein

source devel/setup.bash

Dadurch erhalten Sie den Ordner, den Sie gerade erstellt haben. Jetzt verwenden wir den MoveIt-Setup-Assistenten. Dies erleichtert die Erstellung von Konfigurationsdateien (was eine komplexe Aufgabe wäre) erheblich. Verwenden Sie dasselbe Terminal und geben Sie den folgenden Befehl ein:

roslaunch moveit_setup_assistant setup_assistant.launch

Dadurch wird dieses Fenster geöffnet, in dem wir das URDF konfigurieren können, das wir gerade mit SolidWorks erstellt haben

Um das URDF zu laden, klicken Sie auf die Schaltfläche „Durchsuchen“ und navigieren Sie zu  ws_moveit/src/<urdf_folder_name>/urdf .

Darin sollten sich eine CSV-Datei und eine Urdf-Datei befinden. Wählen Sie urdf aus und öffnen Sie es

Klicken Sie dann auf Datei laden.

Wenn ein Fehler auftritt, liegt dies möglicherweise daran, dass die Datei nicht erstellt und abgerufen wurde und die Namenskonvention falsch ist. Beim Laden auf Fehler prüfen.

Nach dem Laden sollte das Modell korrekt angezeigt werden. Farben wie diese (falls zutreffend).

Dann müssen wir Schritt für Schritt alle Gelenkbedingungen, Endeffektorinformationen usw. konfigurieren.

Wechseln Sie zur Registerkarte „Selbstkollision“. Klicken Sie, um die Kollisionsmatrix zu generieren. Es sollte eine Tabelle wie diese angezeigt werden:

Dadurch wird nach Links gesucht, bei denen ein Konflikt auftreten könnte, und Linkpaare werden deaktiviert, bei denen kein Konflikt auftritt oder bei denen die Wahrscheinlichkeit eines Konflikts am geringsten ist. Beispielsweise ist die Wahrscheinlichkeit eines Konflikts zwischen dem Basislink und Link eins sehr gering, daher können wir Konflikte zwischen diesen beiden Links sicher deaktivieren. Im Allgemeinen kollidieren benachbarte Verbindungen nicht, aber beispielsweise ein Endeffektor und eine Basis kollidieren wahrscheinlich. Daher wird für diese die Kollisionserkennung aktiviert. Sie können zur Matrixansicht wechseln und erhalten ein klareres Bild.

Gehen Sie als nächstes zu den virtuellen Gelenken. Ich muss die Basis des Roboters reparieren; daher kann ich in diesem Abschnitt eine Scheinverbindung zwischen der Basis und dem Außenrahmen (entweder einem Rviz oder einem Pavillon) erstellen und sie an einer Stelle befestigen.

Klicken Sie auf „Verbindung hinzufügen“, geben Sie den Dummy-Verbindungsnamen und den Namen des übergeordneten Rahmens ein, wählen Sie die Verbindung aus, die Sie reparieren möchten, und legen Sie den Verbindungstyp fest (ich wähle „Fest“ aus, da ich möchte, dass es stationär ist, aber vorausgesetzt, Sie simulieren ein Auto, Sie kann Planar (2 DOF) verwenden (vorausgesetzt, Sie simulieren eine Drohne), Float (3 DOF) kann ebenfalls verwendet werden). Wenn es fertig ist, sollte es so aussehen

Fahren Sie dann mit der Planungsgruppe fort. Dadurch werden die vorhandenen Links gruppiert. Oder besser gesagt, es kombiniert verschiedene kinematische Ketten im Roboter. In diesem 6-DOF-Arm gibt es nur eine kinematische Kette und daher nur eine kinematische Gruppe. Aber wenn Sie beispielsweise einen Zweihandroboter haben, werden die beiden Hände zwei Gruppen haben, weil es sich um zwei unabhängige kinematische Ketten handelt. Geben Sie dazu den Namen der Kinematikgruppe an und wählen Sie den Kinematiklöser aus. Sie können kdl_kinematics_plugin/KDLKinematicsPlugin verwenden, was in den meisten Fällen sehr gut ist, aber Sie können natürlich auch andere Löser verwenden. Klicken Sie auf „Verbindung hinzufügen“ und ein Fenster wie dieses wird angezeigt

Wählen Sie alle Gelenke (oder die gewünschten Gelenke in dieser bestimmten Gruppe) aus und drücken Sie >. Dadurch werden die Gelenke ausgewählt und in eine einzige Gruppe verschoben. Klicken Sie dann auf Speichern, um die Gruppe zu speichern

Gehen Sie als nächstes in die Roboterpose. Wir können damit die Standardhaltung des Roboters definieren (zum Beispiel: Standard-0-Position, Reparaturposition, Kalibrierungsposition usw.)

Stellen Sie den gewünschten Winkel ein und klicken Sie auf Speichern.

Als nächstes fahren Sie mit dem Hinzufügen des Endeffektors fort. Wählen Sie den übergeordneten Link des Endeffektors aus (in diesem Fall Link 5), geben Sie dem Endeffektor einen Namen und legen Sie „Speichern“ fest.

Als nächstes kommen passive Gelenke, also nicht angetriebene Gelenke, die hier nicht zur Anwendung kommen. Das ROS-Thema veröffentlicht nicht den gemeinsamen Status dieser spezifischen Verbindungen. Dann betreten wir den ROS-Kontrollteil. Hier legen wir fest, welche Art von Steuerung wir für den Arm wünschen: Positionssteuerung, Geschwindigkeitssteuerung, Drehmomentsteuerung usw. Es hängt wirklich von den Vorlieben und der Anwendung des Roboters ab, aber für eine normale Roboterhand wie diese, die normalerweise für Pick-and-Place-Vorgänge verwendet wird, wäre eine Positionskontrolle besser geeignet. Fügen Sie also im Abschnitt „ROS-Steuerung“ einen Controller hinzu, geben Sie dem Controller einen Namen (denken Sie an die Namenskonvention), wählen Sie den gewünschten Controller-Typ aus  position_controllers/JointPositionControllersund klicken Sie auf „Speichern“.

Als nächstes richten wir die Autoreninformationen ein und richten den Namen und die E-Mail-Adresse der Person/Firma ein, die diese Informationen verwaltet.

Speichern Sie abschließend die Konfigurationsdatei. Jetzt müssen Sie nur noch den Pfad und den Namen des Konfigurationsordners festlegen (Namenskonvention beachten) und speichern. Speichern Sie die Konfiguration im Ordner src des Catkin-Arbeitsbereichs (MoveIt!-Arbeitsbereich). und das Paket generieren.

Schließen Sie den Einrichtungsassistenten und prüfen Sie, ob alle Ordner vorhanden sind. Es sollte eine Ordnerstruktur wie diese haben.

Nachdem wir nun die Konfigurationsdatei erstellt haben, müssen wir sie nur noch in Rviz simulieren. Der Build-Prozess generiert automatisch eine Demo-Startumgebung mit ausschließlich Ihrem Modell. Nachdem wir diese Datei geladen haben, können wir den Roboterarm in einer offenen Umgebung testen.

Wir müssen ein Terminal im Catkin-Arbeitsbereich öffnen, erstellen und die Konfigurationsdatei abrufen. Führen Sie die folgenden Befehle in einem neuen Terminal aus.

cd ~/ws_moveit

Catkin build

source devel/setup.bash

Öffnen Sie die Simulation und führen Sie den folgenden Befehl aus

roslaunch evo_arm_vtwo_config demo.launch

Dadurch wird die Rviz-Simulationsumgebung gestartet.

Mithilfe der Pfeile und Ziehen können Sie den Roboter neu ausrichten. Wenn Sie nicht über die Bewegungsplanungsoption verfügen, gehen Sie zum Panel-Menü in der Menüleiste und aktivieren Sie die folgenden Optionen

Um zu sehen, wie sich der Roboter bewegt, bewegen Sie den Roboter mithilfe der im Endeffektor gezeigten Dreifachachsen. Sie können sehen, dass einige Links rot werden, um auf einen Konflikt hinzuweisen. Klicken Sie nach dem Verschieben auf die Registerkarte „Kontext“ des Bedienfelds „MotionPlanning“ und richten Sie die Planungsbibliothek wie folgt ein.

Gehen Sie dann zur Registerkarte „Plan“ und führen Sie den Plan und die Ausführung aus. Sie sehen die Flugbahn des Roboterarms und den Algorithmus, der den Weg findet, um den Roboter von der Ausgangsposition in die von Ihnen festgelegte Position zu bewegen. Sie können den Schieberegler für die Flugbahn auch über das Bedienfeldmenü aktivieren, um den Roboterarm an einem beliebigen Punkt seiner Flugbahn anzuhalten.

3. Fazit

Dies ist im Wesentlichen die Art und Weise, wie Sie Ihre Solidworks-Entwürfe von Solidworks in eine ROS-Umgebung portieren. Sie können dies auch mit Gazebo anstelle von Rviz oder mit beiden simulieren (insbesondere, wenn Sie einen Awareness-Ansatz wie ein Cloud-Setup verfolgen). Dies ist ein sehr einfaches Tutorial. Dies könnte ein sehr leistungsfähiges Werkzeug sein, wenn seine Fähigkeiten weiter erforscht werden.


Ursprünglicher Link: ROS-Roboterarmsimulation-BimAnt

Supongo que te gusta

Origin blog.csdn.net/shebao3333/article/details/135448720
Recomendado
Clasificación