본문 바로가기

ROS2 무작정 따라하기

ROS 넌 누구니?

안녕하세요 오랜만입니다~!

 

이번 기획은 같이 ROS를 배워보고자 하는 마음에 기획하게 되었는데요, 부디 열심히 완주까지 같이 힘내서 달려봅시다

 

자 그러면 오늘의 주인공인 ROS는 과연 무엇일까요?

 

ROS는 말 그대로 Robot OS라 할 수 있습니다. 로봇을 제어하고 운영하기 위한 OS의 일종이라고도 할 수 있는데, 정확하게 말하자면 OS는 아니고 메타 운영체제입니다. 처음 개발은 구글에 근무하던 개발자가 만들었다고 전해지지만 확실하지는 않습니다.

 

ROS가 나오기 이전에는 로봇을 만들기 위해서 프로그래머들은 각 서보모터의 움직임을 어떻게 구현하는지, 각 센서에서 값을 어떻게 받아오는지에 집중하느라 실제로 로봇이 움직이고, 작동하는 기능에 대해서는 신경 쓰기가 힘들었습니다.

특히 열심히 개발하다가 클라이언트의 요청으로 부품이 일부 변경되게 되는 경우, 코드 전체를 다시 작성해야 하는 불편함이 있었습니다.

 

이러한 불편함을 해소하기 위해 2007년에 등장한 ROS는 각 부품과 부품 사이를 연결해 주고 하드웨어를 추상화 시켜 프로그래머가 기능과 서비스를 개발하는데 집중하게 해주는 장점이 있었습니다. 하지만 ROS1에서는 크고 작은 몇 가지의 문제가 있었는데요 가장 대표적으로는 ROS의 강력한 기능 중 하나인 서비스에서 ROS1은 동기식으로 구현된 반면 ROS2는 비동기식으로도 작성할 수 있도록 변경되었습니다. 또 python3을 native로 지원하지 않는다는 문제점도 있습니다.

 

이러한 문제점을 해결하기 위해 더욱 편리하고 강력한 ROS2가 10년이 지난 2017년에 등장하였고, ROS1과의 하위 호환을 지원하기 위해서 브릿지로 ROS1을 부분적으로 구동하는 등 각종 편의 기능들을 탑재하였으나 10년 동안 ROS1으로 개발하던 회사들은 여전히 ROS1을 사용하며 시중에서는 ROS1 책을 더 많이 찾아볼 수 있는 게 현실입니다.

(이 글을 작성하는 23년 1월 7일 현재 국내에 한글로 된 ROS2 서적은 두 권뿐입니다.)

 

하지만 기업들은 이제는 더 이상 ROS2로의 전환을 미룰 수 없습니다. 각종 기능 업데이트, 보안 패치는 중단되었으며 최근 가장 핫한 자율주행에서는 실시간성, 안정성이 중요한데 ROS1으로 기능을 구현하기는 힘들기 때문입니다.

 

따라서 이젠 ROS를 처음 배우는 사람들도 ROS2로 입문을 해야 합니다. 앞서 말씀드린 것처럼 ROS2에서 ROS1을 돌릴 수는 있어도 그 반대는 어렵기 때문입니다. 그리고 거의 동일한 사용 방법으로 ROS2를 한 번 배우면 ROS1을 배우기는 쉽습니다.

 

앞으로 몇 주 혹은 몇 달에 걸쳐 저와 함께 ROS2를 배워보도록 하겠습니다.

 

감사합니다.