[Documentation] [TitleIndex] [WordIndex

ROS란?

ROS 는 로봇용 공개소스 메타 운영체제입니다. ROS는 일반 운영체제에서 제공하는 하드웨어 추상화, 저수준 기기 제어, 빈번히 사용되는 기능들이 구현되어 있으며, 프로세스간 메시지 전달, 패키지 관리 기능 등을 제공합니다. 또한, ROS는 여러 컴퓨터 시스템 작동하는 코드를 얻어오고, 빌드하고, 작성하고, 실행하기 위한 도구 및 라이브러리를 제공합니다. ROS는 Player, YARP, Orocos, CARMEN, Orca, MOOS, Microsoft Robotics Studio와 같은 '로봇 프레임웍'들과 어떤 측면에서는 비슷합니다.

ROS runtime "graph"(역자주: graph가 ROS 문맥내에서 특별한 의미로 쓰이기 때문에 번역하지 않고 graph라는 용어를 그대로 옮깁니다)란 ROS 통신 기반구조를 사용해 느슨하게 결합된 프로세스간 동등 수준의 망입니다. ROS는 몇가지 다른 형태의 통신 방법을 제공합니다. 이것에는 service를 통한 동기화된 RPC 형태, topic을 통한 비동기적 데이터 스트리밍 형태, Parameter Server에 저장된 데이터 형태가 포함됩니다. 이 개념들에 대해서는 개념 설명 페이지에 더 상세히 설명되어 있습니다.

ROS는 실시간 프레임웍이 아니지만, 실시간 코드와 통합하여 구현할 수 있습니다. Willow Garage PR2 로봇은 pr2_etherCAT라는 시스템을 사용하는데, 이를 통해 실시간 프로세스와 ROS 메시지를 주고 받습니다. 또한, ROS는 Orocos 실시간 도구모음과 ROS간 통합 모듈을 포함하고 있습니다.

목적

많은 사람들이, "ROS는 다른 로봇 S/W 플랫폼과 어떻게 다른가요?" 라고 물어봅니다. 하지만 ROS의 목적이 아주 다양한 기능을 갖는 프레임웍이 되는 것이 아니기 때문에 이런 질문에 답하기는 어렵습니다. 대신, ROS의 주된 목표는 로봇의 연구개발에 있어서 코드 재사용을 편하게 하자입니다. ROS는 Nodes라고 하는 프로세스의 분산 프레임웍으로, 실행 프로그램을 독립적으로 설계하고, 실행시 프로세스간 결합도를 낮춰주는 역할을 합니다. 이런 실행 프로그램들은 PackageStack이라는 공유 및 배포가 쉬운 형태로 묶여집니다.

또한, ROS는 조직간 협업도 잘 분산될 수 있도록 연합 코드 Repository 시스템을 지원합니다. 파일시스템에서 공동체에 이르는 이러한 설계는 개발 및 구현에 대한 독립적인 결정권을 갖게함과 동시에 모든 결과물들이 ROS 기반 도구로 모일 수 있도록 해줍니다.

공유와 협업이라는 주된 목표를 지원하기 위해, ROS 프래임웍은 다른 몇가지 목표가 있습니다.

따라서, "ROS는 X와 어떻게 다른가요?" 라는 질문에서 모든 X에 대해 답하는 건 무척 어렵습니다. 그렇지만 첫번째 차이점을 말하자면, 여러분이 어떤 X를 사용하던 ROS와 함께 배포되는 많은 라이브러리들을 여전히 쓸 수 있을 거라 생각합니다. 좀 더 상세할 설명을 위해 Player와 ROS 양쪽 개발자인 Brian Gerkey가 Player와 ROS간 차이점에 대해 ros-users 메일링 리스트에 보낸 메일을 인용합니다(OpenCV 통합 문제도 언급하고 있습니다):

다른 경우와 마찬가지로 경우에 따라 다르다고 답할 수 밖에 없습니다. 즉, 여러분이 뭘 하려는지에 따라 달라집니다. Player 는 간단하고 관절이 없는 모바일 로봇에 아주 잘 맞습니다. Player는 레이저 센서가 장착된 Pioneer에 있는 센서 및 모터를 쉽게 사용할 수 있도록 설계되었습니다.

반면 ROS는 틸팅 레이저, 팬/틸트 센서 헤드, 팔에 부착된 센서등을 지닌 복잡한 모바일 조작 플랫폼을 위해 설계되었습니다. Player와 비교하면, ROS를 이용하면 좀 더 쉽게 분산 컴퓨팅 환경을 이용할 수 있고, 고수준의 기능들이 Player보다는 ROS에서 잘 개발되어 있습니다. Player는 하드웨어 드라이버를 많이 제공하는 반면, ROS 알고리즘 구현을 더 많이 제공합니다.

ROS가 Player보다 더 강력하고 유연하다고 하더라도 별로 틀린 말은 아니라고 생각합니다만, 여느 경우와 마찬가지로 강력함과 유연함에는 항상 복잡성이 따라오기 마련입니다. ROS를 사용하기 쉽게 하려고 무척 노력하고 있긴 하지만, 아직 배우기는 어려운 것도 사실입니다. 물론 기반 개념이 비슷하기 때문에 Player에 익숙하다면 ROS를 배우는데 도움이 됩니다.

OpenCV 통합과 관련된 질문에 답변을 드리자면, Player 코드 보다는 ROS 코드에서 OpenCV 를 흥미롭게 더 잘 활용하고 있습니다. ROS와 OpenCV 개발 팀이 서로 많이 겹치기 때문에 앞으로는 이런 것들을 더 많이 보실 수 있을 것입니다.

ROS가 Player 프로젝트에서 많은 코드를 따 왔다는 것에도 주목해야 합니다. Player 드라이버를 재사용하는 ROS node가 있습니다. Stage와 Gazebo도 ROS 공동체 내에서 지원도 잘 되고 잘 활용되고 있습니다.

지원 운영 체제

ROS는 현재 유닉스 기반의 플랫폼에서만 동작합니다. ROS 커뮤니티는 Fedora, Gentoo, Arch Linux 및 타 리눅스 플랫폼을 지원하지만, ROS용 S/W는 Ubuntu와 Mac OS X에서 우선적으로 테스트 됩니다.

Microsoft Windows용 ROS 포팅도 가능함에도 불구하고, 완벽히 진행되지는 않았습니다. Windows페이지에서, 현재 진행 상황을 확인할 수 있습니다.

릴리즈

유용한 툴과 라이브러리와 함께, 핵심 ROS 시스템은 정기적으로 ROS 배포판 형태로 릴리즈됩니다. 이 배포판의 형식은 리눅스 배포판과 비슷하고, 사용 및 빌드에 있어, S/W 적인 호환성이 있는 세트로 공급됩니다. 현재 두가지 배포판이 있습니다. : C Turtle (2010년 8월) and Box Turtle (2010년 3월).

기여하기

ROS는 오픈소스이기 때문에, 우리는 당신이 ROS와 호환되는 리이브러리 혹은 ROS자체에 기여하기를 희망합니다. 부디 Contributing 항목을 보셔서, 어떻게 ROS커뮤니티에 참여할 수 있는지, 더 많은 정보를 획득하십시오.

다음

개념 설명


2022-05-28 12:43