최근 로봇에 AI를 접목시키는 것에 관심이 생겼다. 이와 관련된 공부를 하다가 ROS와 ROS 2에 대해 알아야 했다.
인공지능 공부하는 데 파이썬을 알아야 하는 것과 같은 느낌이 들었다.
그렇다고 ROS 2가 프로그래밍 언어 자체는 아니다.
따라서 이번 포스팅에서는 ROS 2를 사용하기 전에 그 등장 배경에 대해 간략하게 알아보도록 하겠다.
비대면적 서비스가 활발해짐에 따라 다양한 기술이 산업에 적용되었다.
특히 코로나 이후 인공지능, 로보틱스 등이 빠르게 발전하고 있다.
최근 기사를 보면 로봇이 치킨도 튀기고, 요리도 하는 경우도 있으며 심지어 배달까지 하는 로봇까지 개발되고 상용화 과정에 있다고 한다.
실제로 식당에 가보면 로봇이 테이블로 직접 서빙해 주는 경우를 본 적이 있기도 하다.
그렇다면 이러한 로봇 서비스를 개발하기 위해서 어떻게 해야할까?
어떤 서비스 로봇을 만들지에 따라 달라지겠지만 매우 다양한 작업(분야)이 필요하다.
기구 설계, 임베디드, 시뮬레이션, 웹 연동, 컴퓨터 비전 등등.. 의 작업이 필요하다.
더욱이 AI기술이 발달함에 따라 인공지능이 로봇에도 적용되고 있다.
이렇게 만든 로봇이 인간에게 있어 이롭게 하기 위해서는 안전하고 강인해야 한다.이를 위해 수많은 테스트의 과정이 지속적으로 필요하다.
그럼 로봇을 하나 만드는 데 저 모든 분야를 직접 다 다룰 줄 알아야 할까?
그 분야에 대해 아는 것은 중요하지만 직접 다룰 줄 아는 것은 또 다른 얘기이다.
가령 내가 AI engineer인데 누군가 만들어 놓은
open source의 임베디드, 웹 프로그램으로 내가 만든 로봇 전용 AI 알고리즘을 로봇에 적용하여 테스트해 볼 수 있을 것이다.
이때 '누군가 만들어 놓은 로봇용 개발 프로그래밍 tool'의 역할을 하는 것이 바로 ROS이다.
위의 ROS 홈페이지에 접속하면 ROS를 다음과 같이 정의 및 설명하고 있다.
The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it's all open source.
즉, 로봇 개발을 위한 라이브러리이자 플랫폼인 것이다.
ROS가 로봇 프로그래밍에 제공하는 기능 및 역할은 크게 다음과 같다.
ROS의 기본적인 이해를 돕는 블로그가 있어 첨부하도록 하겠다.
ROS의 이해
ROS가 뭔지 알고 나면 ROS2는 ROS를 배워야 알 수 있을 것만 같다.
하지만 그건 아니다. 물론 이론적인 배경은 알 필요가 있지만 ROS를 다룰 줄 몰라도 ROS 2는 다룰 수 있다.
그렇다면 기존의 ROS를 사용하지 않고 ROS2를 사용하는 배경은 무엇일까?
기존의 ROS는 다음과 같은 문제가 있었다.
이러한 부분을 보완하고자 등장한 것이 ROS 2이다.
ROS와 ROS 2의 아키텍처를 시각화하면 다음과 같다.
아래 사이트에서 ROS2 설계에 대한 철학도 엿볼 수 있다.
design ros2.org
이러한 배경에서 처음 로봇을 공부하려는 사람은 ROS 2를 바로 공부해도 된다고 한다.
추후의 포스팅에서 더욱 다양한 AI 로봇에 대한 내용을 다루겠지만 ROS 2를 어떻게 세팅하고 사용하는지 위주로 올리도록 하겠다!