01. ROS2 Intro
🐢 01. Intro
: 안녕하세요, 삐약은지입니다 🙂
오늘은 ROS2에 대해 본격적으로 알아보기 전에
ROS2가 무엇인지에 대해 살펴보겠습니다
🐢 02. ROS란?
: 한 회사가 로봇을 개발하려면
하드웨어 설계부터 제어, 시각화까지 모든 요소를 각각 직접 구현해야 했습니다
이 과정은 많은 시간과 비용이 소요된다는 한계가 있었습니다
이러한 문제를 해결하기 위해 등장한 것이
바로 ROS(Robot Operating System) 입니다
ROS는 로봇 응용 프로그램 개발을 위한 프레임워크로,
쉽게 말해 로봇을 움직이기 위해 필요한 다양한 소프트웨어 요소들을
보다 쉽고 효율적으로 다룰 수 있도록 도와주는 도구입니다
여담으로 한가지 주의할 점이 있습니다
Robot Operating System이라서
처음엔 많은 사람들이 ROS를 운영체제라고 생각합니다
하지만 실은 운영체제가 아닌 운영체제 위에서
로봇 소프트웨어 개발을 지원하는 미들웨어 프레임워크가 바로 ROS입니다
(즉, "ROS ≠ OS이며 OS 위에서 동작하는 도구이다!" 정도로 이해해주시면 됩니다 🙂)
🐢 03. ROS1 vs ROS2
: 저희가 다음 블로깅부터 사용할 ROS는 ROS2입니다
왜 ROS1이 아니라 ROS2를 사용하는지 궁금하실 수도 있을 것 같은데요
ROS1은 로봇을 처음 만들거나 실험해보는 단계에서는 정말 유용하지만,
실제 현장에서 사용하기에는 조금 불편한 부분들이 있습니다
(예를 들어, 다양한 환경에서도 실시간으로 움직이게 해야하는데 ROS1은 제한적!)
반면 ROS2는 이런 불편함을 보완해서,
로봇을 실제 서비스나 제품으로 사용하는 환경에 더 잘 맞도록 개선되었습니다
때문에 보통 ROS1은 ‘연구용’,
ROS2는 ‘실전용’으로 많이 사용됩니다
이러한 이유로,
실제 환경에서의 활용을 고려해 저는 ROS2를 선택하게 되었습니다 🙂
🐢 04. ROS Domain ID 설정하기
: ROS2는 분산 시스템 구조로 동작합니다
그렇다면 여기서 말하는 분산 시스템이란 무엇일까요?
예를 들어, 식당을 운영한다고 가정해보겠습니다
이때 사장님 혼자서 요리, 계산, 서빙을 모두 담당하는 것이 아니라,
어떤 사람은 요리를 맡고,
어떤 사람은 계산을 담당하며,
또 다른 사람은 서빙을 맡는 구조를 떠올릴 수 있습니다
이처럼 역할을 나누어 운영하는 방식을 분산 구조라고 합니다
ROS2 역시 이와 비슷한 구조를 가지고 있습니다
아직 자세히 배우지는 않았지만,
센서를 담당하는 Node, 제어를 담당하는 Node,
판단을 담당하는 Node 등이 각각 분리되어 존재합니다
이러한 구조 덕분에 시스템이 커지더라도
기존 구조를 유지한 채 필요한 기능만 추가할 수 있다는 장점이 있습니다
또한, 이때는 제가 직접 만든 Node뿐만 아니라
다른 사람이 만들어 둔 Node도 함께 사용할 수 있습니다
다만, 이렇게 여러 Node를 함께 사용하는 환경에서는
내가 직접 데이터를 보내지 않았음에도
예상치 못한 데이터가 전달되는 상황이 발생할 수 있습니다
이를 방지하기 위해 ROS2에서는
같은 네트워크(예: 같은 공유기)를 사용하는
사람들, 장치들끼리만 서로 연결이되도록 하나의 그룹으로 묶는 방식을 사용하게 됩니다
이때 이들을 묶는 도구가 바로 ROS Domain ID입니다

🐢 05. setup.bash
: ROS2를 사용하기 위해 가장 먼저 해야 할 일은
터미널에게 ROS2의 존재를 알려주는 것입니다
보통 저희는 터미널에 어떤 패키지를 설치하면
터미널이 자동으로 해당 패키지를 인식하고 사용할 수 있게 해주었습니다
하지만 ROS는 조금 예외적으로,
ROS2를 설치하더라도 터미널은 이를 자동으로 인식하지 못합니다
그렇기 때문에 저희가 직접
“이 시스템에 ROS2가 설치되어 있다”는 사실을
터미널에게 알려주어야 합니다
ROS2를 sudo apt install 명령어로 설치하면,
ROS 패키지들은 기본적으로 /opt/ros/humble 경로에 저장됩니다
그렇다면 이 경로에 있는 ROS 패키지들을
터미널에서 어떻게 사용할 수 있을까요?
방법은 생각보다 간단합니다
/opt/ros/humble 경로에 있는 setup.bash 파일을 source로 읽어주기만 하면 됩니다
이렇게 하면 터미널은 /opt/ros/humble 안에 있는 ROS2 패키지들을 인식하게 되고,
이후부터는 ROS2 명령어와 패키지들을 자유롭게 사용할 수 있습니다 🙂

🐢 06. 마무리
: 오늘은 ROS가 무엇인지에 대해 살펴보았습니다
다음 시간에는 본격적으로 터미널에서 ROS를 다뤄보도록 하겠습니다
그럼 모두 안녕~👋
'Robotics > ROS' 카테고리의 다른 글
| 02. ROS 기초 명령: Turtlesim & Node (0) | 2026.04.02 |
|---|---|
| 00. ROS2 (0) | 2025.12.13 |