본문으로 건너뛰기

ROS 2 알아보기

ROS ?

ROSRobot Operating System의 약자로, 로봇 소프트웨어 개발을 위한 오픈소스 운영체제 프레임워크입니다. 2008년에 최초의 ROS가 공개되었으며, 2017년, 기존 ROS를 개선한 ROS 2가 공개되었습니다.

ROS 로고

ROS 2는 ROS 1과는 다른 기능과 구조를 갖고 있기 때문에 ROS 1의 코드를 그대로 사용할 수 없습니다. ROS 1의 코드를 ROS 2에서 사용하기 위해선 별도의 이식 과정을 거치거나 ROS 1과 ROS 2 사이의 통신을 도와주는 브리지(ros1_bridge)를 사용해야 합니다.

https://github.com/ros2/ros1_bridge

Why ROS ?

꼭 ROS를 사용하지 않더라도 로봇을 만들고 제어할 수 있는데 왜 ROS를 사용할까요? 이번에는 왜 ROS를 사용해야 하는지, ROS를 사용하면 어떤 점이 좋은지 알아봅시다.

처음 보는 센서라도 쉽게 사용할 수 있죠.

Don’t reinvent the wheel.
Create something new and do it faster and better by building on ROS!

ROS: Why ROS?

자동차를 만들 때 바퀴부터 설계하지 않는 것처럼, 로봇을 만들 때도 센서와 모터를 제어하는 코드를 매번 처음부터 작성할 필요는 없습니다.

재사용성 예시

ROS에는 제조사와 개발자 커뮤니티가 공개한 다양한 드라이버가 있습니다. 처음 보는 센서라도 알맞은 ROS 드라이버를 설치하고 실행하면 센서의 통신 규격이나 데이터 처리 방법을 모두 직접 구현하지 않고 바로 데이터를 받아볼 수 있습니다.

재사용성 예시2

예를 들어 LiDAR를 처음 사용하더라도 드라이버를 실행하고 /scan 토픽을 확인하면 거리 데이터를 곧바로 사용할 수 있습니다. 우리는 센서와 통신하는 방법보다 그 데이터를 이용해 로봇을 어떻게 움직일지에 더 집중할 수 있습니다.

센서, 모터 등 하드웨어를 제어하기 위한 소스코드드라이버라고 말합니다. PC에서 사용하는 그래픽 드라이버 등이 이에 해당합니다.

센서의 교체가 아주 편리하고요,

ROS에서는 센서 드라이버와 센서 데이터를 사용하는 프로그램이 각각 독립된 노드로 동작합니다. 두 노드는 직접 연결되는 대신 토픽과 메시지라는 정해진 방법으로 데이터를 주고받습니다.

모듈화 예시

같은 종류의 센서는 제조사가 달라도 동일한 형태의 메시지를 사용하는 경우가 많습니다. 예를 들어 두 LiDAR가 모두 /scan 토픽으로 LaserScan 메시지를 보낸다면, 센서를 교체해도 데이터를 사용하는 프로그램은 그대로 둘 수 있습니다. 필요하다면 토픽 이름만 맞춰주면 됩니다.

모듈화 예시2

이처럼 기능을 노드 단위로 나누고 통신 방법을 통일하면 센서 하나를 바꾸기 위해 로봇의 전체 프로그램을 다시 만들 필요가 없습니다. 새로운 기능을 추가하거나 일부 장치만 교체하기도 쉬워집니다.

개발을 위한 도구를 제공합니다.

ROS는 로봇의 상태를 확인하고 문제를 찾는 데 필요한 여러 도구를 제공합니다. 명령어만으로 실행 중인 노드와 토픽을 확인하거나, 센서가 보내는 데이터를 터미널에서 바로 살펴볼 수 있습니다.

대표적인 시각화 도구인 RViz를 사용하면 별도의 시각화 프로그램을 만들지 않아도 LiDAR, IMU, 카메라와 같은 센서 데이터를 한눈에 볼 수 있습니다. 노드의 연결 관계를 확인하는 도구, 데이터를 그래프로 그리는 도구, 토픽을 기록하고 다시 재생하는 도구도 제공됩니다.

RViz 예시 화면

이러한 도구를 활용하면 로봇이 예상대로 동작하는지 빠르게 확인하고, 문제가 생긴 부분도 더 쉽게 찾아낼 수 있습니다.

ROS 2 배포판?

Ardent Apalone

Bouncy Bolson

Crystal Clemmys

Dashing Diademata

Eloquent Elusor

Foxy Fitzroy

Galactic Geochelone

Humble Hawksbill

Iron Irwini

Jazzy Jalisco

ROS 2는 매년 새로운 버전이 출시됩니다. 이 버전을 정확하게 배포판(Distribution)이라고 이야기하며, 특정 버전을 지정해 둔 ROS 패키지들의 묶음을 의미합니다.

지금까지 출시된 ROS 2 배포판은 아래의 링크에서 확인할 수 있습니다.

Distributions — ROS 2 Documentation

ROS 공식 홈페이지에 따르면 매년 세계 거북의 날인 5월 23일마다 새로운 배포판을 출시한다고 합니다. 배포판에 따라 지원하는 플랫폼이 달라질 수 있기 때문에 개발 환경에 맞는 배포판 선정이 필요합니다.