ROS2 Developnment Container

Ich habe einen Develonment container nach einem Guide aufgesetzt, der kann aber weiß Gott warum nicht mit dem Netzwerk kommunizieren. Uns wurde ja am Donnerstag damals gesagt, dass es gute Dev Container gibt. Unter diesem Topic bitte ich um ein Paar Dev Container, die empfehlenswert sind. Danke

Guten Abend,

welcher Container ist das denn genau?

Zur not nehme einen von EduArt und werfe alles aus dem Compose-File raus, was du nicht benötigst. Beispiel: GitHub - EduArt-Robotik/edu_robot: Defines a interface to all Eduart robots and also their realisations. das Compose-File liegt im Ordner “docker”. Verwende das deiner Platform (IOT2050 oder IPC127E).

Gutes Gelingen :wink:

Hallo,

ich nutze dieses Preset. Innerhalb des Containers funktioniert alles, das problem liegt aber darin, das ich nichs von außerhalb des Containers empfange. Ich hab gelesen, das man bei ROS1 den Container privileged laufen lassen muss, aber bei ROS2 sollte das doch auch so funktionieren.

Ilian

Vermutlich musst du den container mit --network=host einrichten, sonst hat der container keinen direkten Zugriff auf deine Netzwerkverbindung. Stattdessen bekommt er sein eigenes “fake Netzwerk”, worin aber keine Verbindung zu deiner ROS app aufgebaut werden kann.

--privileged bringt was wenn der container mit dem hostsystem interagieren soll (mit hardware kommunizieren, GUI Fenster öffnen, etc).
Aber man sollte es nur nutzen wenn es wirklich gebraucht wird, wegen security usw.

1 Like

Das argument --network=host ist schon gesetzt. Funktioniert immer noch nicht. Das sind die arguments, mit denen der Container läuft:
“–network=host”,
“–cap-add=SYS_PTRACE”,
“–security-opt=seccomp:unconfined”,
“–security-opt=apparmor:unconfined”,
“–volume=/tmp/.X11-unix:/tmp/.X11-unix”,
“–volume=/mnt/wslg:/mnt/wslg”,
“–ipc=host”

Hi,

ich verwende für VSCode den DevContainer. Dafür verwende ich diese Config:

{
  "name": "eduart_ros2_workspace",
  "image": "eduartrobotik/eduart-ros-base:humble-1.2.1",
  "runArgs": [
    "-it",
    "--device",
    "/dev/dri",
    "--ipc=host",
    "--net=host",
    "--pid=host",
    "--env=DISPLAY",
    "--volume=/tmp/.X11-unix:/tmp/.X11-unix:rw",
    "--privileged",
    "-v", "/dev:/dev"
  ],
  "settings": {
    "terminal.integrated.shell.linux": "/bin/bash"
  },
  "remoteUser": "user",
  "extensions": [
  	"ms-vscode.cmake-tools",
  	"ms-python.python",
  	"llvm-vs-code-extensions.vscode-clangd",
  	"streetsidesoftware.code-spell-checker",
  	"streetsidesoftware.code-spell-checker-german",
  	"eamodio.gitlens",
  	"ms-vscode.makefile-tools",
  	"ms-vscode.cpptools"
  ]
}

Auf Linux hat man mit dieser auch Zugriff auf Devices wie Joystick und man kann auch GUI Applikationen wie RViz aus dem Container öffnen.

Hier ist eine Anleitung, wie man diesen Dev Container aufsetzt:

Die Config von oben muss man in der Datei devcontainer.json schreiben, die dann unter dem Ordner .devcontainer liegt. Der Ordner muss in deinem Workspace liegen. Das steht aber auch in der Anleitung.

1 Like