자율주행 모빌리티 (Autonomous Mobility)

ROS (Robot Operating System)

AI Keynote 2025. 4. 9. 15:40
728x90
반응형

ROS (Robot Operating System)는 로봇 애플리케이션을 구축하는 데 도움이 되는 소프트웨어 라이브러리 및 도구 모음이며, 로봇 소프트웨어 개발을 위한 유연하고 강력한 프레임워크로 정의된다 [1][5]. ROS는 메타 운영 체제로서 애플리케이션과 분산 컴퓨팅 자원 간의 인터페이스 역할을 수행한다 [3].

ROS의 정의 및 특징

 

ROS(Robot Operating System)는 로봇 소프트웨어 개발을 위한 오픈 소스 로봇 미들웨어 스위트이다 [2]. ROS는 전통적인 의미의 운영 체제는 아니지만, 하드웨어 추상화, 저수준 장치 제어, 일반 기능 구현, 프로세스 간 메시지 전달, 패키지 관리 등 이기종 컴퓨터 클러스터에 필요한 서비스를 제공한다 [2][5]. ROS 기반 프로세스들은 그래프 구조로 표현되며, 노드들은 센서 데이터, 제어, 상태, 계획, 액추에이터 및 기타 메시지를 주고받으며 처리한다 [2]. ROS는 실시간 운영 체제(RTOS)는 아니지만, 실시간 컴퓨팅 코드와 통합될 수 있으며, ROS 2에서는 실시간 코드 및 임베디드 시스템 하드웨어에 대한 지원이 추가되었다 [2].

 

ROS의 하드웨어 추상화 기술

 

ROS는 하드웨어 추상화를 통해 다양한 로봇 하드웨어와의 통신을 가능하게 하며, 이로 인해 개발자들은 특정 하드웨어에 종속되지 않고, 소프트웨어 개발에 집중할 수 있는 장점을 제공합니다. 이러한 하드웨어 추상화는 ROS의 핵심 요소 중 하나로, 센서, 액추에이터 및 기타 로봇 구성 요소와의 상호작용을 용이하게 해줍니다 [2]. 

 

하드웨어 추상화의 주요 기능은 여러 종류의 하드웨어 드라이버를 통합하여 보다 일관된 인터페이스를 제공하는 것입니다. 이는 다양한 제조업체의 하드웨어를 사용할 수 있도록 하며, 개발자가 로봇 애플리케이션을 설계할 때 하드웨어의 차이에 의해 발생하는 문제를 최소화합니다 [4]. 예를 들어, ROS에서는 센서 드라이버, 모터 제어 드라이버, 및 복잡한 제어 알고리즘을 제공함으로써 개발자가 불필요한 낮은 수준의 코드 작업에서 벗어나 높은 수준의 로봇 간 기능성에 집중할 수 있게 해줍니다 [5].

 

또한, ROS는 이러한 하드웨어 드라이버를 패키지로 관리하고, 특정 작업에 필요한 모듈식을 제공하기 때문에 커뮤니티 내에서 공유되고 재사용될 수 있습니다. 이를 통해 코드의 간소화와 재사용이 촉진되며, 로봇 소프트웨어 개발의 진입 장벽을 낮추는 효과가 있습니다 [4][6]. 

 

결과적으로, ROS의 하드웨어 추상화 기술은 로봇 개발자들이 확장성과 유연성을 갖춘 로봇 시스템을 구축할 수 있도록 도와주며, 다양한 로봇 플랫폼에서의 호환성을 보장합니다 [5].

 

비실시간 시스템에서의 ROS의 역할

 

비실시간 시스템에서의 ROS의 역할은 로봇 소프트웨어의 모듈화와 재사용성을 극대화하는 중요한 기능으로 나타납니다. ROS는 응용 프로그램을 필수 기능 단위인 노드들로 나누어 표현하는 방식으로, 이 각각의 노드는 독립적으로 실행되며 서로 메시지를 주고받을 수 있습니다 [1][2]. 이러한 구조는 복잡한 로봇 시스템을 구성하는 데 있어 매우 유연성과 확장성을 제공합니다. 예를 들어, ROS는 여러 다양한 계획 및 렌더링 기능을 효율적으로 조합할 수 있도록 도와줍니다 [5].

 

비실시간 처리에서는 높은 지연 없이 각 노드의 작업과 결과가 빠르게 전달되어야 하기 때문에, ROS는 퍼블리시/서브스크라이브 모델을 채택하여 노드 간의 데이터 전송을 최적화하고 있습니다 [5]. 이로 인해 소프트웨어 개발자는 로봇의 다양한 하드웨어 제어부터 경로 계획에 이르기까지 여러 모듈을 독립적으로 발전시킬 수 있는 기반을 마련합니다. 동시에, 사용자는 신뢰할 수 있는 상태 정보를 제공받으면서도 복잡한 저수준의 세부사항에서 벗어나 고수준의 로봇 동작을 디자인하는 데 집중할 수 있습니다.

 

ROS의 패키지 관리 시스템은 기존 코드 및 라이브러리를 쉽게 공유하고 사용할 수 있게 해 주므로, 개발자들은 자신만의 알고리즘과 기능을 추가하거나 기존 기능을 살리면서 새로운 아이디어를 실현할 수 있습니다 [4][5]. 이러한 구조는 로봇 소프트웨어가 다양한 환경에서 성공적으로 기능할 수 있도록 돕는 강력한 도구입니다. 비실시간 환경에서 ROS의 유연성과 모듈성은 로봇 시스템의 효율성을 높이는 중요한 요소로 작용합니다. 

 

결과적으로, 비실시간 시스템에서 ROS는 다양한 로봇 애플리케이션의 생명 주기를 관리하고, 새로운 기술의 통합을 용이하게 하며, 복잡한 로봇 환경에서의 개발과 유지 보수가 가능하게 하는 중추적인 역할을 수행합니다 [6].

 

ROS의 구성 요소 및 기능

 

ROS는 언어 및 플랫폼 독립적인 도구, ROS 클라이언트 라이브러리 구현체(roscpp, rospy, roslisp 등), 그리고 하나 이상의 ROS 클라이언트 라이브러리를 사용하는 애플리케이션 관련 코드를 포함하는 패키지로 구성된다 [2]. 주요 ROS 클라이언트 라이브러리는 Unix 계열 시스템을 지향하며, Ubuntu Linux가 "지원"으로, Fedora Linux, macOS, Microsoft Windows는 "실험적"으로 지정되어 있다 [2]. rosjava는 Android OS용 ROS 기반 소프트웨어 작성을 가능하게 했으며, MATLAB 툴박스에도 통합되어 Linux, macOS, Microsoft Windows에서 사용될 수 있다 [2]. JavaScript 클라이언트 라이브러리인 roslibjs는 표준을 준수하는 웹 브라우저를 통해 ROS 시스템에 소프트웨어 통합을 가능하게 한다 [2].

출처: https://kr.mathworks.com/help/ros/gs/robot-operating-system-ros-basic-concepts_mw_85271ff3-e5c4-4998-9fbd-7eee81be97d9.html

ROS의 역사 및 발전

 

ROS는 2007년 이전에 스탠포드 대학에서 처음 시작되었으며, 에릭 버거와 키넌 위로벡이 주도한 개인 로봇 프로젝트에서 비롯되었다 [2]. 이들은 로봇 개발의 다양한 어려움을 해결하기 위해 공통 기반 시스템을 구축하고자 했으며, 윌로우 개러지의 지원을 받아 ROS 코드를 개발하기 시작했다 [2]. 윌로우 개러지는 PR2 로봇을 개발하고 ROS를 소프트웨어로 사용하면서 ROS는 여러 기관의 기여를 받아 성장했으며, 2012년에는 Open Source Robotics Foundation(OSRF)이 설립되어 ROS의 주요 유지 관리자가 되었다 [2]. 2013년에는 윌로우 개러지가 Suitable Technologies에 흡수되었고, OSRF는 ROS의 개발을 계속 이어갔다 [2]. 2014년에는 ROS 2가 발표되어 실시간 프로그래밍, 다양한 컴퓨팅 환경 지원, 최신 기술 활용을 목표로 API가 변경되었다 [2].

 

ROS 도구 및 패키지

 

ROS는 개발자가 데이터를 시각화하고 기록하며, ROS 패키지 구조를 쉽게 탐색하고, 복잡한 구성 및 설정 프로세스를 자동화하는 스크립트를 생성할 수 있도록 다양한 도구를 제공한다 [2]. rviz는 로봇, 환경, 센서 데이터를 시각화하는 3차원 시각화 도구이며, rosbag은 ROS 메시지 데이터를 기록하고 재생하는 명령줄 도구이다 [2]. catkin은 ROS 빌드 시스템이며, rosbash는 bash 쉘의 기능을 확장하는 도구 모음을 제공한다 [2]. roslaunch는 로컬 및 원격으로 여러 ROS 노드를 실행하고, ROS 파라미터 서버에 파라미터를 설정하는 데 사용되는 도구이다 [2]. ROS는 또한 액션lib, 노드let, rosbridge와 같은 다양한 패키지를 포함하고 있으며, 이는 일반적인 로봇 기능 및 알고리즘의 오픈 소스 구현을 제공한다 [2].

 

─────────────────────────────────────────────────────────

 

참고문헌

 

[1] Isaac ROS (Robot Operating System) - NVIDIA Developer. (n.d.). https://developer.nvidia.com/isaac/ros

[2] Overview of Robot Operating System (ROS) - MathWorks. (n.d.). https://www.mathworks.com/help/ros/gs/robot-operating-system-ros-basic-concepts_mw_85271ff3-e5c4-4998-9fbd-7eee81be97d9.html

[3] Robot Operating System - Wikipedia. (2008). https://en.wikipedia.org/wiki/Robot_Operating_System

[4] Robot Operating System (ROS): Working, Uses, and Benefits. (2024). https://www.spiceworks.com/tech/artificial-intelligence/articles/what-is-robot-operating-system/

[5] ROS: Home. (2024). https://www.ros.org/

[6] ROS: Robot Operating System에 대해 알아보기 - HMG Developers. (2024). https://developers.hyundaimotorgroup.com/blog/364

[7] ROS(Robot Operating System) 개요 : 네이버 블로그. (2019). https://blog.naver.com/jws2218/221497574574?viewType=pc

 

728x90
반응형