Software - autonohm/georg_at_home GitHub Wiki

Architektur

Die Software ist über 3 Repos aufgeteilt:

[!NOTE] Die Interfaces sind aus der restlichen Software ausgegliedert, damit man sie separat verwenden kann.
Der Gebrauchsfall wäre z.B. ein Laptop-Nutzer will die Topics des Roboters auslesen.
Hierzu muss Ros die Datentypen (Interfaces) des Roboters kennen um sie auslesen zu können.
Der Laptop muss also die georg_interfaces colcon build-en & sourcen, bevor z.B. ros2 topic list verwendet werden kann

Aufbau georg_at_home

software

Die software ist so aufgegliedert, dass systemrelevante Software, wie Konfigurationen und Projekt-Dateien unvermerkt,
und alle Docker, bzw ROS-basierte Pakete mit pkg_ präfigiert sind.

Die Ordnerstruktur schaut wie folgt aus:

georg_at_home
├── ...
├── projectctl.bash
└── software
    ├── docker_base_image
    │   └── compose.yaml
    ├── pkg_barebones
    │   ├── README.md
    │   ├── Dockerfile
    │   └── compose.yaml
    └── pkg_mit_allem
        ├── README.md
        ├── compose.yaml
        ├── config
        │   ├── demo2.launch.py
        │   └── __pycache__  /* diese Ordner ignorieren, löschen erlaubt */
        │       └──...
        └── ros_node
            ├── package.xml
            ├── README.md
            └── ...

Hier sind 2 Pakete: barebones & mit_allem, plus das systemrelevante docker_base_image.

  • Nötig für ein Paket ist nur die compose.yaml.
    In ihr wird ein (oder mehrere) Container beschrieben.
  • Eine README.md ist stark empfohlen, damit andere lesen können was das Paket überhaupt macht.
  • Als Konvention sollen alle ROS Nodes bei container build-time integriert werden (docker build // colcon build),
    alles was zu run-time benötigt wird (Parameter, Launchfiles, ...) kommt in einen config Ordner, der read-only als /config in den container gemountet wird.

[!IMPORTANT] Die projectctl.bash im georg_at_home Ordner soll verwendet werden um alle Projekte zu verwalten,
und bedient sich wie docker compose:
man cd-e in den georg_at_home Ordner kann nun machen: ./projectctl.bash up ./projectctl.bash down ./projectctl.bash build ./projectctl.bash logs und weitere (schau mit ./projectctl.bash help)

[!TIP] In dem Tutorial Creating a package wird schritt für schritt anhand Beispiele ein Paket erstellt.