Visualize ROS2 running in Docker using Foxglove

Docker에 있는 ROS 노드를 Foxglove를 통해서 시각화하는 방법

1. 원하는 버전의 ROS 이미지를 받는다.

ros:jazzy-ros-core
althack/ros2:humble-full-2025-02-01
etc

받은 이미지에 추가적으로 설치할 것이 있기 때문에 받은 이미지에 추가적으로 설치할 라이브러리를 설정해주고 다시 Dock 이미지 만든다

FROM ros:jazzy-ros-core
RUN apt-get update && apt-get install -y \
    ros-jazzy-demo-nodes-cpp \
    ros-jazzy-foxglove-bridge \
    ros-jazzy-tf2-ros
$ docker build -t <원하는 이름> .

2. Docker 실행

docker run -it <이미지 이름> <COMMAND>

setup.bash 파일과 ROS_DOMAIN_ID 설정해주고 는 추가사항 (local IP와 Port만 사용하기 때문에 )

ros_entrypoint.sh 파일에서 setup.bash 와 ROS ID 설정하면 docker 실행시킬 때 자동으로 실해

3. Foxglove WebSocket 서버 실행

이전까지는 단순히 ROS가 설치된 Docker 컨테이너를 실행했을 뿐이고, 이 컨테이너가 Local과 통신하려면 Port를 설정해줘야 한다.

  • Foxglove의 Foxglove Websocket이 기본으로 듣는 Local Port 번호는 8765이다. 
  • 그렇다면 Docker 컨테이너 또한 Port 8765를 통해 Local과 통신해야 된다. (자기 컴퓨터에서 실행되는 컨테이너니까, 별다른 설정이 없으면 Local이겠거니…)
  • 대충 Foxglove – Local PC – Docker 가 하나의 길로 연결~

중요한건!!!

docker run -it -p 8765:8765 <이미지 이름>

Docker 컨테이너의 Port를 설정해주는 거다.

ros2 launch foxglove_bridge foxglove_bridge_launch.xml

이러면 끝~~

foxglove에서 Local로 Port번호 8765를 사용하는 ROS 통신을 다 받아올 것이다.

^^

대충 아마 msg pub…