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

<aside> 💡 ROS 2는 ROS 1과는 다른 기능과 구조를 갖고 있기 때문에 ROS 1의 코드를 그대로 사용할 수 없습니다. ROS 1의 코드를 ROS 2에서 사용하기 위해선 별도의 이식 과정을 거치거나 ROS 1과 ROS 2 사이의 통신을 도와주는 브리지(ros1_bridge)를 사용해야 합니다.
https://github.com/ros2/ros1_bridge
</aside>
꼭 ROS를 사용하지 않더라도 로봇을 만들고 제어할 수 있는데 왜 ROS를 사용할까요? 이번에는 왜 ROS를 사용해야 하는지, ROS를 사용하면 어떤 점이 좋은지 알아봅시다.
Don’t reinvent the wheel. 바퀴를 다시 발명하지 마세요. Create something new and do it faster and better by building on ROS! ROS를 기반으로 새로운 것을 더 빠르고 더 좋게 만드세요!
위의 문구는 ROS의 공식 홈페이지에서 강조하고 있는 문구입니다. 바퀴를 다시 발명하지 말라는 말은, 이미 잘 만들어진 것을 다시 개발하기 위해 시간을 낭비하지 말라는 의미인데요. 자동차를 만들기 위해 바퀴부터 직접 설계하고 제작하는 것보단, 바퀴는 이미 잘 만들어진 제품을 사용하고 자동차에 새로운 기능을 추가하기 위해 집중하는 것이 더 좋을 것입니다.

바퀴를 자전거에도, 자동차에도, 장난감에도 사용할 수 있듯이 소스코드도 다양한 곳에서 사용될 수 있는데요. 다른 사람이 작성한 소스코드를 그대로 사용할 수 있는 것을 재사용성이 높다고 표현합니다. 재사용성이 높을수록 반복적으로 소비되는 불필요한 시간을 아낄 수 있어 개발의 효율성이 증가합니다.

ROS는 사용되는 데이터의 타입을 정형화하여 모든 모듈 드라이버가 이 규칙을 따르도록 하였습니다. 덕분에 우리는 제조사 또는 커뮤니티의 여러 사용자가 배포한 드라이버를 다운로드해 쉽게 사용할 수 있고, 각 부품을 사용하는 방법을 찾고 고민하는 시간을 줄여 로봇의 제작에 더 집중할 수 있게 됩니다.
<aside> 💡 센서, 모터 등 하드웨어를 제어하기 위한 소스코드를 드라이버라고 말합니다. PC에서 사용하는 그래픽 드라이버 등이 이에 해당합니다.
</aside>
모듈화는 프로그래밍 언어로 프로그램을 제작할 때 생산성과 최적화, 관리에 용이하게 모듈(기능) 단위로 분할하는 것을 말합니다. ROS는 모듈화된 구조를 사용하고 있습니다. 기능별로 모듈을 작성하기 때문에 여러 사람이 코드를 작성할 때 효율적으로 협업을 진행할 수 있습니다.
