오늘은 ROS1과 ROS2 통신이 가능하도록 하는 ROS Bridge에 대해 다뤄보려고 합니다.
참고한 깃허브는 다음과 같습니다.
우선 두 환경에서 통신이 되게 하려면 같은 우분투 환경에서 ROS1과 ROS2가 설치가 되어야 합니다.
제가 사용한 개발환경은 Ubuntu 20.04 이고, 같은 환경에 foxy와 noetic이 설치가 되어있습니다.
ros1_bridge 패키지 설치 (ROS2 foxy 기준)sudo apt update
sudo apt install -y ros-foxy-ros1-bridge
각각의 터미널에서 해당하는 ROS 버전을 로드.
source /opt/ros/noetic/setup.bash
roscore
source /opt/ros/foxy/setup.bash
ros2 run ros1_bridge dynamic_bridge --bridge-all-topics
✅ 이제 ROS1과 ROS2 간에 자동으로 브리지가 설정됨!
source /opt/ros/foxy/setup.bash
ros2 topic pub /number std_msgs/msg/Int32 "{data: 42}"
source /opt/ros/noetic/setup.bash
rostopic echo /number
✅ ROS2에서 보낸 메시지가 ROS1에서 정상적으로 보이면 성공! 🎉
🚫 주의사항
일단 저의 경우에는 원래 humble과 noetic에서 통신을 하려고 했는데, 같은 우분투 환경안에서 해야하다 보니 noetic은 20.04이고 humble은 22.04라서 불가능 했습니다. 그리고 같은 우분투 환경이기 때문에 도커 컨테이너에서도 되지 않았네요. humble 버전을 사용하고 싶은데 혹시 아시는 분 있으면 댓글 부탁드립니다 🙏
다음과 같이 오른쪽 foxy에서 메시지를 publish하면 왼쪽 noetic에서 subscribe하는 것을 볼 수 있습니다.
