Zum Inhalt springen

ROS Domain ID einstellen

BATCAM FX ROS Domain ID Konfiguration

1. Übersicht

BATCAM FX publiziert Sensordaten auf Basis von ROS 2 Humble, und nur Nodes, die dieselbe ROS_DOMAIN_ID verwenden, erkennen einander und kommunizieren miteinander. Ändern Sie diese Einstellung, wenn Sie mehrere ROS 2 Systeme im selben Netzwerk getrennt betreiben oder wenn Sie BATCAM FX an die Domain ID der von Ihnen verwendeten Umgebung anpassen müssen.

2. Wahl der Methode: Firmware-Version prüfen

Die Konfigurationsmethode hängt von der Firmware-Version ab. Prüfen Sie zunächst die Firmware-Version des von Ihnen verwendeten Geräts.

Firmware-VersionKonfigurationsmethodeAnmerkung
1.0.3c oder höherREST API (Abschnitt 3, empfohlen)Offiziell unterstützte Methode
Niedriger als 1.0.3cManuelle Bearbeitung der systemd-Service-Datei (Abschnitt 4)Inoffizielle Methode — Hinweise unbedingt lesen

Die Firmware-Version können Sie über die API zur Abfrage der Geräteinformationen (GET /setting/status) im Feld firmware_version prüfen.

Terminal-Fenster
curl -u admin:<password> "http://192.168.0.30/setting/status"
# Die 192.168.0.30 im Beispiel durch die tatsächliche IP-Adresse des BATCAM FX ersetzen.

Beispielantwort:

{
"error": 0,
"result": {
"hardware_id": "3287162925128",
"sbrio_version": "1.0.14",
"firmware_version": "v1.0.3c"
}
}

💡 Hinweis: Alle REST-APIs von BATCAM FX erfordern eine HTTP-Basic-Authentifizierung. Auf dem Gerät sind standardmäßig die beiden Konten admin und user vorkonfiguriert; ändern Sie das werkseitige Standardpasswort unbedingt vor der Verwendung. Zur Vorgehensweise beim Firmware-Update lesen Sie die Dokumente BATCAM FX Web-Software-Update oder BATCAM FX Shell-Software-Update.

3. Konfiguration über die REST API (empfohlen, Firmware 1.0.3c oder höher)

Ab der BATCAM FX Firmware-Version 1.0.3c ist das Einstellen der ROS Domain ID über die REST API möglich. Einzelheiten zum Request-/Response-Schema sowie Tests in Echtzeit finden Sie in der BATCAM FX API-Referenz unter dem Tag ros.

MethodePfadBeschreibungRequest-Body
GET/ros/domainAktuell eingestellte ROS Domain ID abfragenKeiner
PATCH/ros/domainROS Domain ID ändernmultipart/form-data

Request-Felder von PATCH /ros/domain:

FeldTypErforderlichBeschreibung
domain_idintegerErforderlichEinzustellende ROS Domain ID

Aktuellen Wert abfragen

Terminal-Fenster
curl -u admin:<password> "http://192.168.0.30/ros/domain"

Beispielantwort:

{
"error": 0,
"result": {
"domain_id": 123
}
}

Wert ändern

Terminal-Fenster
curl -u admin:<password> -X PATCH "http://192.168.0.30/ros/domain" -F "domain_id=113"

Beispielantwort:

{
"error": 0,
"result": {
"domain_id": 113
}
}

⚠️ Achtung: Während die Einstellung übernommen wird, bricht die Verbindung zur Kamera kurzzeitig ab. Ein Verbindungsabbruch unmittelbar nach der Einstellung ist normales Verhalten.

4. Manuelle Konfiguration bei älteren Versionen (Firmware niedriger als 1.0.3c, inoffiziell)

Wenn die von Ihnen verwendete Umgebung eine ROS_DOMAIN_ID ungleich 0 nutzt, ist dies die derzeit inoffiziell unterstützte Methode zum Einstellen der ROS_DOMAIN_ID.

Bei einem BATCAM FX mit einer Firmware niedriger als 1.0.3c gibt es keine Funktion, mit der sich eine DOMAIN_ID zu den intern ausgeführten ROS 2 Optionen hinzufügen lässt. Daher ist eine Änderung der Service-Datei erforderlich, die beamforming-camerad ausführt — den Prozess, der die ROS 2 Nodes und Topics erzeugt und publiziert.

⚠️ Achtung: Dieser Dienst ist mit Restart=always und StartLimitAction=reboot konfiguriert. Wird die Service-Datei fehlerhaft bearbeitet, kann beamforming-camerad wiederholt neu starten und die Kamera dadurch neu gestartet werden. Bewahren Sie vor der Bearbeitung den ursprünglichen Inhalt auf und halten Sie sich genau an das Format des folgenden Beispiels. Außerdem wird empfohlen, nach einem Firmware-Update erneut zu prüfen, ob die Einstellung unverändert erhalten geblieben ist.

Voraussetzungen

  • Sie müssen sich per SSH mit dem BATCAM FX verbinden können. Ersetzen Sie 192.168.50.11 in den folgenden Beispielen durch die tatsächliche IP-Adresse Ihres BATCAM FX.

Ablauf der Änderung

  1. Per SSH am BATCAM FX anmelden

  2. Auf die Service-Datei zugreifen ( vi, nano usw. )

  3. Im Service-Tag Environment hinzufügen

  4. Daemon und Service-Datei neu laden

  5. Beamforming-camerad oder die Kamera neu starten

Einzelheiten zur Änderung

Melden Sie sich per SSH am BATCAM FX an.

Terminal-Fenster
ssh root@192.168.50.11
# IP-Adresse an die eigene Umgebung anpassen.

Greifen Sie mit dem folgenden Befehl auf die Systemdatei des Dienstes zu. Verwenden Sie als Editor vi, nano oder eine andere für Sie bequeme Methode.

Terminal-Fenster
nano /lib/systemd/system/beamforming-camerad.service
# oder
vi /lib/systemd/system/beamforming-camerad.service

Fügen Sie anhand des folgenden Codeblocks innerhalb des Service-Tags den Wert Environment hinzu. Die 113 im Beispiel können Sie auf den ROS_DOMAIN_ID-Wert setzen, der zu der von Ihnen verwendeten Umgebung passt.

[Unit]
Description=Batcam FX Camera daemon
Wants=multi-user.target
After=systemd-networkd.service dbus-org.neard.service network.target nvargus-daemon.service setup-account.service
[Service]
## Hinzuzufügender Teil — ROS_DOMAIN_ID passend zur eigenen Umgebung setzen.
Environment=ROS_DOMAIN_ID=113
##
ExecStart=/bin/bash -c 'source /opt/ros/humble/local_setup.sh && systemctl restart nvargus-daemon && /opt/ros/humble/bin/beamforming-camerad'
Restart=always
StartLimitAction=reboot
RestartSec=5
TimeoutStopSec=30
TimeoutStartSec=infinity
ExecStartPre=/bin/sleep 15
# RuntimeMaxSec=86400
[Install]
WantedBy=multi-user.target

⚠️ Achtung: systemd-Unit-Dateien unterstützen keine Kommentare am Zeilenende. Wenn Sie hinter der Zeile Environment=ROS_DOMAIN_ID=113 einen #-Kommentar anfügen, wird auch der Kommentar als Wert interpretiert und die Einstellung funktioniert nicht. Schreiben Sie Kommentare daher unbedingt in eine eigene Zeile.

Laden Sie mit dem folgenden Befehl den systemd-Daemon neu.

Terminal-Fenster
systemctl daemon-reload

Starten Sie Beamforming-camerad oder die Kamera neu.

Terminal-Fenster
systemctl restart beamforming-camerad
# oder
reboot

5. Einstellung überprüfen

Ob die Einstellung übernommen wurde, können Sie auf zwei Arten überprüfen.

Überprüfung über die REST API (Firmware 1.0.3c oder höher)

Rufen Sie GET /ros/domain auf und prüfen Sie, ob die zurückgegebene domain_id mit dem eingestellten Wert übereinstimmt. (siehe Abfragebeispiel in Abschnitt 3)

Überprüfung über ROS 2 Topics auf dem Host-PC

Stellen Sie in der ROS 2 Umgebung des Host-PCs dieselbe ROS_DOMAIN_ID wie am Gerät ein und prüfen Sie anschließend, ob die Topics des BATCAM FX in der Topic-Liste erscheinen.

Terminal-Fenster
export ROS_DOMAIN_ID=113 # denselben Wert wie am Gerät setzen
ros2 topic list

Bei korrekter Übernahme erscheinen in der Liste, wie unten dargestellt, Topics auf Basis der Hardware-ID der Kamera.

Terminal-Fenster
/fx_276730383020104/beamforming
/fx_276730383020104/image
/fx_276730383020104/lpoint_audio
/fx_276730383020104/prpd
/fx_276730383020104/ws_audio

Die Hardware-ID (hardware_id) im Topic-Namen können Sie über die API zur Abfrage der Geräteinformationen (GET /setting/status) ermitteln. Die Nachrichtenspezifikation der einzelnen Topics finden Sie im Dokument Übersicht zur FX ROS-Systemintegration.

6. Fehlerbehebung (Troubleshooting)

  • Wenn die Topics des Geräts auf dem Host nicht sichtbar sind:

    • Prüfen Sie, ob die ROS_DOMAIN_ID von Host und Gerät identisch ist. Den Wert des Geräts können Sie über GET /ros/domain (Firmware 1.0.3c oder höher) oder in der Zeile Environment der Service-Datei einsehen.

    • Die ROS-Standard-DOMAIN_ID des Geräts ist 123. Wenn das Gerät nicht gesondert geändert wurde, führen Sie auf dem Host export ROS_DOMAIN_ID=123 aus und prüfen Sie erneut.

  • Wenn REST-API-Aufrufe mit 401 fehlschlagen:

    • Prüfen Sie, ob die Anmeldedaten der HTTP-Basic-Authentifizierung (Konto admin oder user) korrekt sind.
  • Wenn die Kameraverbindung unmittelbar nach dem PATCH abbricht:

    • Ein kurzzeitiger Verbindungsabbruch, während die Einstellung übernommen wird, ist normales Verhalten. Verbinden Sie sich nach kurzer Zeit erneut und prüfen Sie den Wert mit GET /ros/domain.
  • Wenn der Dienst nach der manuellen Bearbeitung wiederholt neu startet oder die Kamera neu startet:

    • Prüfen Sie, ob die Zeile Environment=ROS_DOMAIN_ID=<Wert> keinen Kommentar am Zeilenende und keinen Tippfehler enthält, und führen Sie nach der Korrektur erneut systemctl daemon-reload aus.

7. Zugehörige Dokumente