로봇 운영 체제(ROS, Robot Operating System)는 로봇 개발을 위한 오픈 소스 프레임워크로 전 세계 연구자들과 개발자들이 협력하여 발전시켜 온 중요한 기술입니다. 본 글에서는 ROS의 개요 및 역사, 인스톨 방법, 기본 개념, 그리고 간단한 프로그래밍 실습에 대해 초보자도 쉽게 따라 할 수 있도록 설명해 보겠습니다.
1. ROS 개요 및 역사
ROS란?
ROS는 로봇 소프트웨어 개발을 위한 "메타 운영 체제(Meta-Operating System)"입니다. 리눅스 기반에서 동작하고, 하드웨어 추상화, 디바이스 드라이버, 라이브러리, 시뮬레이션 도구 등을 제공해서, 로봇 개발을 보다 효율적으로 할 수 있도록 지원합니다. 특히, 분산 컴퓨팅 구조를 바탕으로 여러 개의 노드(Node)가 협력하여 동작하는 방식이 특징입니다.
ROS의 역사
ROS는 2007년 미국 스탠퍼드 대학교의 AI 연구소에서 시작되었습니다. 이후, Willow Garage라는 로봇 연구 기업에서 본격적으로 개발되었고, 2013년부터는 오픈 로보틱스(Open Robotics)에서 계속 관리하고 있습니다. 현재 ROS는 다양한 연구기관과 기업에서 자율주행 자동차, 드론, 산업용 로봇 등에 널리 사용되고 있습니다.
2. ROS 설치 및 기본 설정
설치 환경 준비
ROS는 주로 Ubuntu에서 실행되며, ROS 2의 경우 Windows와 macOS도 지원하지만, 여기에서는 Ubuntu 기반으로 설치 방법을 설명해 보겠습니다. 추천 사양은 다음과 같습니다.
- 운영 체제: Ubuntu 20.04 LTS 또는 Ubuntu 22.04 LTS
- 최소 요구 사항: 4GB RAM, 20GB 이상의 저장 공간
- 권장 사양: 8GB RAM 이상, SSD 저장 장치
ROS 설치 방법
ROS는 여러 버전이 있는데 가장 많이 사용되는 버전은 ROS 1과 ROS 2입니다. 본 가이드에서는 ROS 1 Noetic을 기준으로 설치 방법을 섦여하겠습니다.
- 패키지 리스트 업데이트 및 필수 패키지 설치:
- sudo apt update && sudo apt upgrade -y sudo apt install curl gnupg2 lsb-release
- ROS 키 추가 및 저장소 설정:
- sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' curl -sSL 'http://packages.ros.org/ros.key' | sudo apt-key add -
- ROS Noetic 설치:
- sudo apt update sudo apt install ros-noetic-desktop-full
- 환경 변수 설정:
- echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc
- ROS 패키지 관리 도구 rosdep 초기화:
- sudo apt install python3-rosdep sudo rosdep init rosdep update
이렇게 하면 ROS가 정상적으로 설치됩니다.
3. ROS 기본 개념과 구조
ROS는 여러 개의 구성 요소로 이루어져 있으며, 핵심 개념은 다음과 같습니다.
1) 노드(Node)
ROS에서 "노드(Node)"란 독립적으로 실행되는 프로그램을 의미합니다. 각 노드는 특정 기능을 담당하며, 여러 개의 노드가 협력하여 하나의 로봇 시스템을 구성합니다.
2) 토픽(Topic)
ROS의 노드들은 "토픽(Topic)"을 통해 데이터를 송수신합니다. 예를 들어, 센서 데이터는 특정 토픽을 통해 전송되며, 이를 구독한 노드가 데이터를 수신하여 처리할 수 있습니다.
3) 메시지(Message)
ROS에서 노드 간 데이터 교환은 메시지(Message) 형식을 따릅니다. 예를 들어, 센서에서 수집한 온도 데이터는 sensor_msgs/Temperature 형식의 메시지로 전달됩니다.
4) 서비스(Service)
토픽과 다르게 "서비스(Service)"는 요청-응답 구조를 가집니다. 특정 노드가 요청을 보내면, 다른 노드가 응답하는 방식입니다.
5) 액션(Action)
서비스와 유사하지만, 장시간 실행되는 작업을 처리하는데 사용됩니다. 예를 들어 로봇이 특정 위치까지 이동하는 명령을 수행할 때 액션을 사용할 수 있습니다.
4. ROS 프로그래밍 실습
ROS는 Python과 C++을 사용하여 프로그래밍할 수 있습니다. 간단한 ROS 노드를 작성하는 방법을 살펴보겠습니다.
1) 워크스페이스 생성
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
2) 새 패키지 생성
cd ~/catkin_ws/src
catkin_create_pkg my_robot_tutorial std_msgs rospy roscpp
cd ~/catkin_ws
catkin_make
3) 간단한 Python 노드 작성
아래와 같이 talker.py 파일을 생성합니다.
#!/usr/bin/env python3
import rospy
from std_msgs.msg import String
def talker():
rospy.init_node('talker', anonymous=True)
pub = rospy.Publisher('chatter', String, queue_size=10)
rate = rospy.Rate(1) # 1Hz
while not rospy.is_shutdown():
message = "Hello ROS!"
rospy.loginfo(message)
pub.publish(message)
rate.sleep()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pass
4) 실행하기
cd ~/catkin_ws
source devel/setup.bash
roscore &
rosrun my_robot_tutorial talker.py
이제 chatter 토픽을 통해 "Hello ROS!" 메시지가 계속 출력되는 것을 확인할 수 있습니다.
이번 글에서는 ROS의 개요 및 역사, 설치 방법, 기본 개념, 간단한 프로그래밍 실습을 다루었습니다. ROS는 로봇 개발을 위한 강력한 도구이고 기초 개념을 익히면 보다 복잡한 로봇 시스템을 개발할 수 있답니다. 이후에는 ROS를 활용한 시뮬레이션, 실제 로봇과의 연동 등에 대한 내용을 추가로 익히는 것을 추천합니다.
'로봇과학 탐구' 카테고리의 다른 글
Python 로봇 코딩 실습(초보자용) (0) | 2025.01.31 |
---|---|
로봇 운영 체제(ROS) 가이드 2(주요 패키지, ROS 1 vs ROS 2, 로봇 연동) (0) | 2025.01.31 |
로봇 프로그래밍: 입문자를 위한 필수 언어 추천 (0) | 2025.01.31 |
협동 로봇(Cobot)의 역할과 산업 혁신 사례 (0) | 2025.01.30 |
로봇 비전이란? 머신러닝을 이용한 객체 인식 (0) | 2025.01.30 |