Franka Emika Panda: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Nils.betten@stud.hshl.de (Diskussion | Beiträge)
Nils.betten@stud.hshl.de (Diskussion | Beiträge)
Zeile 34: Zeile 34:
* Programmieren von kleinen Applets im Browser
* Programmieren von kleinen Applets im Browser


Die Ansteuerung per DESK ist einfach einzurichten und zu bedienen, aber im Funktionsumfang eingeschränkt, da keine direkte Programmierung per Code und nur sehr beschränkt Roboterfeedback zur Verarbeitung zur Verfügung steht.
Die Ansteuerung per DESK benötigt keine Einrichtung und ist einfach zu bedienen, aber im Funktionsumfang eingeschränkt, da keine direkte Programmierung per Code und nur sehr beschränkt Roboterfeedback zur Verarbeitung zur Verfügung steht.


== RIDE ==
== RIDE ==
RIDE kontrolliert den Roboter über eine state-orientierte Programmiersprache namens Lingua Franka, welche das Programm durch eine Reihe von States und Services definiert und auf dem Roboter ausführt.
In RIDE geschriebene Programme, sogenannte Bundles, können als Build-Blöcke für DESK auf den Roboter geladen und dort verwendet werden.
RIDE ist einfach einzurichten und benötigt keinen Real Time Kernel, erfordert aber eine Umgewöhnung für alle, die mit der imperativen oder der Objekt-orientierten Programmierung vertraut sind.
Außerdem ist die Implementierung in größere Softwareprojekte schwieriger als mit C++ oder Python.


== FCI - C++ ==
== FCI - C++ ==
Die Ansteuerung per C++ ermöglicht die feinste Kontrolle von allen vorgestellten Ansteuerungen, da die direkte Integration der libfranka Bibliothek den direktesten Zugriff auf eine selbst definierte 1kHz Kontrollschleife ermöglicht.
Das Setup für C++ und libfranka ist vergleichsweise komplex, da sowohl ein Real-Time-Kernel als auch eine Instanz der libfranka Bibliothek auf dem System eingerichtet werden müssen.
Dafür ist die Implementierung in größere Softwareprojekte oder bereits bestehende Softwarelösungen problemlos möglich.


== FCI - Python ==
== FCI - Python ==
Die Ansteuerung per Python verwendet ein Wrapper-Package namens franky um libfranka in Python nutzbar zu machen. Dies vereinfacht die Arbeit mit franky im Vergleich zu libfranka, schränkt aber die Kontrollmöglichkeiten ein. Dies ist jedoch nur ein Problem, wenn auf niedrigster Ebene mit dem Roboter kommuniziert wird und die Software tief in die Änderungen an der Kontrollschleife eingreifen soll.
Das Einrichten geht leichter als für C++, ein Real-Time-Kernel ist jedoch immer noch notwendig. Die Implementierung von größeren Softwareprojekten geht durch die Arbeit in Python besonders einfach, da der Zugriff auf diverse Python-Pakete zum Beispiel die Arbeit mit einer Webcam oder statistische Auswertungen sehr vereinfacht.


== FCI - ROS ==
== FCI - ROS ==
Das Robot Operating System (ROS) ermöglicht es, den Roboter durch eine Instanz des roscore mit den durch ROS bereitgestellten Tools zu steuern. Ferner ermöglicht es den Zugriff auf eine Vielzahl bereits implementierter rosnodes zur Steuerung des Roboters.
Leider ist der Prozess zur Einrichtung vergleichsweise fehleranfällig und somit komplex, auch wird hier wieder ein real-time-kernel benötigt.
Durch die mögliche Einbindung bereits existierender rosnodes ist die Einbindung des Roboters in größere Projekte, auch ggf mit mehreren per ROS kontrollierten Robotern gut zu bewerkstelligen.


== FCI - MATLAB ==
== FCI - MATLAB ==
Aufgrund von Lizenzproblemem ist dieser Abschnitt rein theoretisch bearbeitet und bedarf weiterer Erprobung.
Durch Einbindung des Roboters in MATLAB und Simulink ist eine Kontrolle mit möglichst wenig Codezeilen möglich, außerdem kann der Roboter so in MATLAB modelliert und simuliert werden.


== FCI - RoboDK ==
== FCI - RoboDK ==
Die Ansteuerung per RoboDK ermöglicht eine Offline-Simulation des Roboters, das bedeutet dass man die Bewegungen in einer 3D-Umgebung definieren und simulieren kann, bevor man diese auf dem realen Roboter ausführt.
Für den Franka Emika Panda ist in RoboDK kein Postprozessor implementiert, deswegen ist eine Ausführung auf dem realen Roboter aus der Software heraus nicht möglich.
Es ist möglich, ein Python-Script zu verwenden um die Zielpositionen zu exportieren und dann in ROS anfahren zu lassen. Dieser Weg ist jedoch sehr umständlich und fehleranfällig.


= Tic Tac Toe =
= Tic Tac Toe =

Version vom 24. Juni 2025, 20:02 Uhr


Einleitung

Diese Seite dokumentiert die Masterarbeit von Nils Betten mit dem Franka Emika Panda. Das Ziel ist die Ansteuerung des Roboters auf verschiedene Methoden und die Entwicklung einer kleinen, interaktiven Anwendung zur Demonstration der Möglichkeiten des Roboters.

Alle hier angesprochenen Themen sind in der Masterarbeit ausführlicher behandelt und liegen als einzelne Dokumentationsschritte im SVN-Verzeichnis des Roboters.

Der Roboter ist ein 7-Achen Arm, welcher durch Kraftfeedback zur Gruppe der Cobot Roboter gehört und ohne Schutzkäfig betrieben werden kann.

Die Hand am Ende des Arms ist ein Zweifinger Parallelgreifer, welcher in seiner Standardkonfiguration eine Greifweite von 0mm bis 80mm hat.

HW-Aufbau

Der Roboter ist auf einer 800mm T-Nut Platte verschraubt, diese wird mit zwei Schraubzwingen an der Arbeitsplatte befestigt.

Der Roboter wird mit seiner Kontrolleinheit (Franka Control Interface - FCI) verbunden. Die Kontrolleinheit wird (mit eingebautem E-Stopp) mit Strom versorgt. Am Roboter werden noch ein bis zwei externe Schutzschalter verbunden, um den Roboter Programme ausführen zu lassen.

Die Steuerung erfolgt per Ethernet vom SteuerungsPC aus. Am Roboter befinden sich je ein RJ45 Stecker am Arm selbst (DESK und RIDE) und am FCI (alle Ansteuerungen). Der Anschluss an der Kontrolleinheit kann für alles genutzt werden während der am Arm nur für die Ansteuerung per DESK und RIDE verwendet werden kann.

Ansteuerungen

Folgend werden die einzelnen Ansteuerungen, welche getestet wurden, kurz beleuchtet.

Dabei geht es um Komplexität und Anwendungsbereiche, die genaue Umsetzung befindet sich im svn_trunk unter Roboter/FrankaEmikaRobot

DESK

Steuert den Roboter per Webschnittstelle an und ermöglicht dort sowohl die Verwaltung des Roboters in Form von:

  • Blockieren/Öffnen der Gelenke
  • Verwaltung der Firmware
  • Verwaltung der installierten Software
  • Freischalten der FCI-Schnittstelle für Ansteuerungen, die direkt auf das FCI zugreifen
  • Programmieren von kleinen Applets im Browser

Die Ansteuerung per DESK benötigt keine Einrichtung und ist einfach zu bedienen, aber im Funktionsumfang eingeschränkt, da keine direkte Programmierung per Code und nur sehr beschränkt Roboterfeedback zur Verarbeitung zur Verfügung steht.

RIDE

RIDE kontrolliert den Roboter über eine state-orientierte Programmiersprache namens Lingua Franka, welche das Programm durch eine Reihe von States und Services definiert und auf dem Roboter ausführt.

In RIDE geschriebene Programme, sogenannte Bundles, können als Build-Blöcke für DESK auf den Roboter geladen und dort verwendet werden.

RIDE ist einfach einzurichten und benötigt keinen Real Time Kernel, erfordert aber eine Umgewöhnung für alle, die mit der imperativen oder der Objekt-orientierten Programmierung vertraut sind. Außerdem ist die Implementierung in größere Softwareprojekte schwieriger als mit C++ oder Python.

FCI - C++

Die Ansteuerung per C++ ermöglicht die feinste Kontrolle von allen vorgestellten Ansteuerungen, da die direkte Integration der libfranka Bibliothek den direktesten Zugriff auf eine selbst definierte 1kHz Kontrollschleife ermöglicht.

Das Setup für C++ und libfranka ist vergleichsweise komplex, da sowohl ein Real-Time-Kernel als auch eine Instanz der libfranka Bibliothek auf dem System eingerichtet werden müssen.

Dafür ist die Implementierung in größere Softwareprojekte oder bereits bestehende Softwarelösungen problemlos möglich.

FCI - Python

Die Ansteuerung per Python verwendet ein Wrapper-Package namens franky um libfranka in Python nutzbar zu machen. Dies vereinfacht die Arbeit mit franky im Vergleich zu libfranka, schränkt aber die Kontrollmöglichkeiten ein. Dies ist jedoch nur ein Problem, wenn auf niedrigster Ebene mit dem Roboter kommuniziert wird und die Software tief in die Änderungen an der Kontrollschleife eingreifen soll.

Das Einrichten geht leichter als für C++, ein Real-Time-Kernel ist jedoch immer noch notwendig. Die Implementierung von größeren Softwareprojekten geht durch die Arbeit in Python besonders einfach, da der Zugriff auf diverse Python-Pakete zum Beispiel die Arbeit mit einer Webcam oder statistische Auswertungen sehr vereinfacht.

FCI - ROS

Das Robot Operating System (ROS) ermöglicht es, den Roboter durch eine Instanz des roscore mit den durch ROS bereitgestellten Tools zu steuern. Ferner ermöglicht es den Zugriff auf eine Vielzahl bereits implementierter rosnodes zur Steuerung des Roboters.

Leider ist der Prozess zur Einrichtung vergleichsweise fehleranfällig und somit komplex, auch wird hier wieder ein real-time-kernel benötigt. Durch die mögliche Einbindung bereits existierender rosnodes ist die Einbindung des Roboters in größere Projekte, auch ggf mit mehreren per ROS kontrollierten Robotern gut zu bewerkstelligen.

FCI - MATLAB

Aufgrund von Lizenzproblemem ist dieser Abschnitt rein theoretisch bearbeitet und bedarf weiterer Erprobung.

Durch Einbindung des Roboters in MATLAB und Simulink ist eine Kontrolle mit möglichst wenig Codezeilen möglich, außerdem kann der Roboter so in MATLAB modelliert und simuliert werden.

FCI - RoboDK

Die Ansteuerung per RoboDK ermöglicht eine Offline-Simulation des Roboters, das bedeutet dass man die Bewegungen in einer 3D-Umgebung definieren und simulieren kann, bevor man diese auf dem realen Roboter ausführt.

Für den Franka Emika Panda ist in RoboDK kein Postprozessor implementiert, deswegen ist eine Ausführung auf dem realen Roboter aus der Software heraus nicht möglich. Es ist möglich, ein Python-Script zu verwenden um die Zielpositionen zu exportieren und dann in ROS anfahren zu lassen. Dieser Weg ist jedoch sehr umständlich und fehleranfällig.

Tic Tac Toe

Aufbau

Verwendung