Update
Nach der Installation von Eclipse müssen die Entwicklungswerkzeuge für C/C++ und PyDev (optional) installiert werden. Eine alternative Möglichkeit ist, die Eclipse-CDT-Entwicklungsumgebung manuell herunterzuladen und zu installieren. Dann ist allerdings kein upgrade der Eclipse-Anwendung mit apt-get mehr möglich.
Eclipse starten
Alt+F2 -> eclipse
oder in Terminal:
eclipse &
Im Menü „Help“ -> „Install New Software“
In der Adressleiste „Work with:“ Update Site auswählen, aktuell „Juno„.
Folgende Entwicklungswerkzeuge anwählen und „Next“ betätigen.
C/C++
Autotools Support for CDT (Incubation)
C/C++ Development Tools
Eclipse EGit
Python
PyDev
Falls PyDev nicht angeboten wird, kann über den Add-Button ein Repositorium angegeben werden. Dort folgende Angaben machen:
Name = PyDev
Location = http://pydev.org/updates
Wieder „Next“ betätigen und „Lizenzbestimmungen“ lesen &
akzeptieren. „Finish“. Meistens ist nach Abschluss ein Neustart fällig.
HINWEIS: ROS-Fuerte verwendet Python 2.7, also muss der Python-Interpreter 2.7 dementsprechend ausgewählt werden.
Eclipse Editor
Während Eclipse neu startet, kann man ein vorhandenes ROS-Paket in ein Eclipse-Projekt umzuwandeln. Ein ROS-Paket muss vorhanden sein und wird standardmäßig mit dem Befehl roscreate-pkg erstellt.
ROS-Paket
Zuerst wird ein ROS-Paket erstellt und anschließend der Pfad zu dem erstellten ROS-Paket in den Umgebungsvariblen der Benutzer-Shell gespeichert. Wichtig ist, dass der letzte Befehl, welcher die Umgebungsvariablen initiiert, ausgeführt wird bevor die Umwandlung in ein Eclipse-Projekt vorgenommen wird, da sonst die Umwandlung mit Fehlern abbricht.
roscreate-pkg tutorial_opencv2 image_transport roscpp std_msgs opencv2 cv_bridge gscam arbotix_msgs arbotix_python cd tutorial_opencv2 echo "export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:"$(pwd) >> ~/.bashrc source ~/.bashrc
HINWEIS: Eine Blanko-Migration eines ROS-Pakets in ein Eclipse-Projekt ist nicht möglich. Es muss zuvor „rosmake“ benutzt und ein Kompilat im bin-Verzeichnis des ROS-Pakets erstellt worden sein, sonst führen die nächsten Schritte zu Fehlern in Eclipse. Auch wenn das Kompilat irgendwann gelöscht wird, kann Eclipse kein neues erstellen – einfach nochmal „rosmake tutorial_opencv2″ in einem Terminal ausführen. Es müssen auch alle Abhängigkeiten der Datei manifest.xml aufgelöst sein.
In diesem Fall handelt es sich um den Ordner „tutorial_opencv2„. Die Umwandlung findet mit dem Befehl make eclipse-project statt. Danach findet man die Eclipse-typischen Projektdateien in selbigem Ordner. Möchte man die Umwandlung also rückgängig machen, sollte man vorher eine rekursive Kopie des ROS-Paket-Ordners „tutorial_opencv2“ erstellen.
roscd tutorial_opencv2 make eclipse-project
Import
War die Umwandlung in ein Eclipse-Projekt erfolgreich, kann mit dem Import des umgewandelten ROS-Pakets in Eclipse fortgesetzt werden.
"File" "Import..." "Existing Projects into Workspace" Next "Select root directory" -> Browse -> ~/ros-workspace/tutorial_opencv2 Finish
Sobald der Importvorgang abgeschlossen ist, mit Str+B ein Build erzeugen und etwas warten bis die Bugs verschwinden. Wenn die Bugs nicht verschwinden, kann es an der fehlenden LD_LIBRARY_PATH-Variablen liegen.
Es kann auch vorkommen dass „Stacks“ oder „Dienste“ importiert werden, die gar keine include-Ordner enthalten und somit auch keine Header-Dateien anbieten (siehe Eclipse-Warnungen in Problems – Shift+Alt+Q x). Ich habe die Warnungen ignoriert, da nach dem Löschen der „fehlerhaften“ Verweise neue Fehler auftauchten, die vorher nicht da waren und eine Kompilierung unmöglich wurde. Entfernen kann man die nicht benötigten Include-Direktiven mit Alt+Enter auf dem Projektverzeichnis im Projekt Explorer von Eclipse und dann in der Kategorie „C/C++ Include Paths and Symbols“. Der selbe Weg gilt für das Hinzufügen fehlender Include-Dateien.
PATH-Variablen
Wenn der Befehl „make eclipse-project“ korrekt durchgeführt wurde, müssen keine PATH-Variablen angefügt werden, da diese automatisch erzeugt werden. Wenn nicht, dann müssen diese in den Projekt-Eigenschaften -> C/C++Make Project -> Environment angefügt werden. Den Inhalt einer Umgebungsvariable erfährt man in einem Terminal mit echo $NAME_DER_VARIABLE.
ROS_ROOT
ROS_PACKAGE_PATH
PYTHONPATH
PATH
LD_LIBRARY_PATH
Mögliche Abhilfte bei Problemen:
Include-Datei-Probleme:
im bin-Verzeichnis die ausführbare Datei löschen und im Terminal mit rosmake tutorial_opencv2 neu erstellen.
Abhängigkeiten in manifest.xml überprüfen.
rm bin/tutorial_opencv2 rosmake tutorial_opencv2
Indexer nicht aktiv:
in Eclipse -> Window -> Preferences -> Indexer -> Enable indexer
Zu viele Fehlermeldungen bezüglich nicht aufgelöster Include-Dateien:
zurück zu ROS-Paket-Erstellung, Projekt-Ordner löschen, Backup zurückspielen und von vorne beginnen.
Eclipse Debugger
Mit Eclipse können ROS-Programme im Einzelschritt beobachtet werden.
Konfiguration
Debug-Konfiguration starten
Run -> Debug Configurations Doppelklick auf C/C++ Application Name vergeben -> tutorial_opencv2
Umgebungsvariablen
Run -> Debug -> Environment
Folgende Umgebungsvariablen setzen – mit echo $NAME_DER_VARIABLE den Inhalt kopieren:
ROS_ROOT ROS_MASTER_URI ROS_PACKAGE_PATH
Als Favoriten anzeigen:
Run -> Debug -> Common -> Display in favorites menu -> Debug, Run
Apply-Button betätigen und dann Debug…
Eclipse EGit – Versionssystem
Für die Versionsverwaltung innerhalb Eclipse wird das Plug-In EGit verwendet. Damit kann auf einem leistungsstarken Computer entwickelt werden, um die Ergebnisse über das Netzwerk auf den Embedded-Computern zu laden.
Konfiguration
Im Arbeitsverzeichnis des importierten Eclipse-ROS-Projekts wird ein git-Repositorium initialisiert bzw. ein .git-Verzeichnis erstellt.
roscd tutorial_opencv2 git init
Im Arbeitsverzeichnis des importierten Eclipse-ROS-Projekts wird eine Datei mit zu ignorierenden Elementen erstellt. Die zu ignorierenden Elemente sollen alle unsichtbaren Dateien, das bin- und das build-Verzeichnis werden.
roscd tutorial_opencv2 vi .gitignore bin/ build/ .* /cmake_install.cmake
Für die erste Verwendung werden alle benötigten Dateien indiziert, eine neue Version erstellt und diese über ssh Remote verfügbar gemacht.
roscd tutorial_opencv2 git add *.cpp git add CMakeLists.txt mainpage.doc Makefile manifest.xml git commit -m 'Beschreibung für die erste Version' git remote add MyGitRepo ssh://123.123.123.4/home/username/your_ros_workspace/tutorial_opencv2/.git
Ab sofort können entfernte Computer über das Netzwerk auf das Repositorium per ssh zugreifen.
Ein Beispiel für ein Raspberry Pi könnte etwa so aussehen:
roscd git clone ssh://username@123.123.123.4/home/username/your_ros_workspace/tutorial_opencv2/.git git status
Spätere Änderungen im Repositorium können einfach mit pull oder fetch und merge gezogen werden. Einige Grundlagen und Philosophie von Git kann man sich im Online-Buch durchlesen – hier. Wenn die Versionsverwaltung Lokal und Remote funktioniert, bindet man das System in Eclipse ein, um auch über eine grafische Oberfläche darauf zugreifen zu können.
Rechte Maustaste auf das importierte Eclipse-ROS-Projekt im
Projekt-Explorer. Im Menüpunkt „Team“ den Unterpunkt „Share Project“
aufrufen. Dann sollte Git als Plug-In angezeigt werden. Wenn nicht, muss
das EGit-Plugin wie oben beschrieben installiert werden. Nach der
Auswahl „Git“ als „repository type“ geht es zum nächsten Schritt, in dem
das zuvor mit git init erstellte Repositorium ausgewählt, aber nicht erstellt wird.
Configure git repository -> Select repository location -> tutorial_opencv2 Finish
Nützliche Fenster für die Arbeit mit git:
Window -> Show view -> Other -> Git -> Git Staging Window -> Show view -> Other -> Git -> Git Repositories Window -> Show view -> Other -> Team -> Synchronize Window -> Show view -> Other -> Team -> History
Eclipse Kompiler
Mit Eclipse können ROS-Programme kompiliert werden.
Konfiguration
Eclipse soll rosmake für die Bauarbeiten verwenden. Alt+Enter oder rechte Maustaste auf das importierte Eclipse-ROS-Projekt im
Projekt-Explorer. Im Kontextmenü „Properties“ wählen.
C/C++ Make Project -> Make Builder -> Build Command -> /opt/ros/groovy/bin/rosmake C/C++ Make Project -> Make Builder -> Workbench Build behavior -> Build -> Eintrag "all" entfernen. C/C++ Make Project -> Make Builder -> Workbench Build behavior -> Clean -> Eintrag "clean" entfernen.
Ab sofort verhält sich der Build-Prozess in Eclipse wie im Terminal mit dem Befehl rosmake.