이전 글에서 ROS의 개요, 설치 방법, 기본 개념, 프로그래밍 실습에 대해 다루었습니다. 이번에는 ROS의 다양한 기능을 더욱 효과적으로 활용하기 위해 주요 패키지 활용법, ROS 1과 ROS 2의 차이점, 그리고 실제 로봇과의 연동 방법을 살펴보겠습니다.
1. ROS의 주요 패키지 활용
ROS는 다양한 패키지를 제공하여 로봇 개발을 보다 용이하게 할 수 있도록 지원합니다. 그중에서도 많이 사용되는 핵심 패키지를 소개합니다.
1) Gazebo: 3D 로봇 시뮬레이션
Gazebo는 ROS와 통합되어 작동하는 강력한 로봇 시뮬레이션 도구입니다. 3D 환경에서 물리 엔진을 활용하여 실제 로봇과 유사한 동작을 구현할 수 있습니다.
Gazebo 설치 및 실행
sudo apt install gazebo
roslaunch gazebo_ros empty_world.launch
위 명령어를 실행하면 빈 가상 환경이 열리고, 여기서 로봇 모델을 불러와 테스트할 수 있습니다.
2) Rviz: 로봇 데이터 시각화 도구
Rviz는 ROS에서 센서 데이터, 로봇 상태 등을 시각적으로 확인할 수 있도록 도와주는 툴입니다.
Rviz 실행
rosrun rviz rviz
이후 환경을 설정하여 로봇 모델을 불러오고, 센서 데이터를 실시간으로 확인할 수 있습니다.
3) MoveIt!: 로봇 팔 제어 프레임워크
MoveIt!은 ROS에서 "로봇 팔(Manipulator)"을 제어하는데 사용되는 대표적인 패키지입니다. 충돌 회피, 경로 계획 등을 자동으로 수행할 수 있어 산업용 로봇 개발에 필수적입니다.
4) Navigation Stack: 자율주행 로봇을 위한 패키지
Navigation Stack은 ROS 기반의 자율주행 로봇을 위한 패키지로, SLAM(동시 위치추정 및 지도작성)과 경로 계획을 수행하는 기능을 포함합니다. 라이다(LiDAR) 또는 카메라 센서를 활용하여 실내 자율주행이 가능합니다.
2. ROS 1 vs ROS 2 차이점
ROS 1은 오랫 기간 동안 로봇 개발의 표준이었지만 최신 기술 변화에 따라 ROS 2가 등장했습니다. 두 버전 간의 주요 차이점을 살펴보겠습니다.
1) 성능 및 구조적 차이
특징 | ROS1 | ROS2 |
통신 방식 | TCP 기반(ROS TCPROS) | DDS 기반(Publish-Subscribe 모델) |
실시간성 | 낮음 | 향상됨 |
멀티플랫폼 지원 | Ubuntu 중심 | Windows, macOS, Linux 지원 |
보안 기능 | 없음 | 강화됨 |
멀티 로봇 지원 | 제한적 | 향상된 분산 시스템 지원 |
ROS 2는 DDS(Data Distribution Service) 기반으로 설계되어 보다 안정적인 통신이 가능하며, 멀티플랫폼 환경에서도 원활하게 작동합니다.
2) ROS 2 설치
ROS 2는 공식적으로 Ubuntu, Windows, macOS에서 지원되며, Ubuntu에서 설치하는 방법은 다음과 같습니다.
sudo apt update
sudo apt install ros-humble-desktop
이후 환경 설정을 적용합니다.
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
3) ROS 1에서 ROS 2로 전환하기
기존 ROS 1 패키지를 ROS 2로 마이그레이션하려면 ros1_bridge 패키지를 활용하면 됩니다. ROS 1과 ROS 2를 동시에 실행하여 노드 간 데이터 교환이 가능합니다.
sudo apt install ros-humble-ros1-bridge
이제 ROS 1과 ROS 2를 연동하여 사용할 수 있습니다.
3. 실제 로봇과의 연동
ROS는 하드웨어와의 연동이 핵심 기능 중 하나인데 센서 및 액추에이터와의 연결을 지원합니다. 대표적인 로봇 연동 방법을 소개합니다.
1) 라이다(LiDAR) 센서 연동
라이다 센서는 로봇이 주변 환경을 인식하는 데 필수적입니다. 대표적인 라이다 모델인 RPLidar를 예제로 사용해 보겠습니다.
sudo apt install ros-noetic-rplidar-ros
roslaunch rplidar_ros rplidar.launch
이제 rostopic echo /scan 명령을 실행하면 라이다 데이터를 실시간으로 확인할 수 있습니다.
2) 모터 컨트롤(DC 모터, 서보 모터)
ROS에서는 다양한 하드웨어 인터페이스를 지원하여 모터를 쉽게 제어할 수 있습니다. 대표적인 방법으로 Arduino와 ROS를 연동하여 로봇을 제어하는 방법을 소개합니다.
Arduino에 ROS 설치
sudo apt install ros-noetic-rosserial-arduino ros-noetic-rosserial
이후 Arduino 보드에서 rosserial을 실행하면 ROS 메시지를 통해 모터를 제어할 수 있습니다.
3) 로봇 팔(Manipulator) 연동
MoveIt!을 활용하여 로봇 팔을 ROS에 연결하고 경로 계획을 수행할 수 있습니다.
roslaunch moveit_setup_assistant setup_assistant.launch
설정 후, 로봇 팔을 시뮬레이션하거나 실제 하드웨어와 연결하여 동작을 제어할 수 있습니다.
정리
이번 글에서는 ROS의 주요 패키지, ROS 1과 ROS 2의 차이점, 그리고 실제 로봇과의 연동 방법을 다루었습니다. ROS는 상당히 유연한 프레임워크로, 다양한 로봇 프로젝트에 활용할 수 있습니다. 앞으로 ROS 기반의 자율주행 로봇, 드론, AI 연동 등에 대해 더 심화된 내용을 공부해 보는 것도 추천합니다.
'로봇과학 탐구' 카테고리의 다른 글
Python 교육용 로봇 소개 (0) | 2025.01.31 |
---|---|
Python 로봇 코딩 실습(초보자용) (0) | 2025.01.31 |
로봇 운영 체제(ROS) 실전 가이드(설치부터 실습까지) (2) | 2025.01.31 |
로봇 프로그래밍: 입문자를 위한 필수 언어 추천 (0) | 2025.01.31 |
협동 로봇(Cobot)의 역할과 산업 혁신 사례 (0) | 2025.01.30 |