ROS는 무엇인가?
ROS는 Robot Operation System 이며, 말 그대로 운영체제가 되기도 하며,
리눅스 (특히 Ubuntu) 위에서 돌아가는 middleware 성격도 가진다.
다양한 software frameworks와 로봇 소프트웨어 개발, 하드웨어 추상화, low-level 장치 제어, 프로세스들 간에 메세지 전달,
패키지 관리 등의 로봇 소프트웨어 개발을 도와주는 오픈소스 프로그램 이다.
왜 배워야 할까?
첫 번째, ROS는 모듈화가 되어 있기 때문에 내가 원하는 부분만 프로그램을 짤 수 있고 다른 유용한 부분을 선택 (다운을 받아서) 사용할 수 있게 되어 있다. 즉 프로그램의 다운로드/ 공유를 통한 재사용이 가능하게 된다
두 번째, 활성화된 커뮤니티이다. ROS 커뮤니티는 1,500명 이상의 참가자 있고, 위키 문서도 3,300 이상이 참여했으며, 5,700명 이상이 ROS Q&A 웹 사이트에서 활발히 활동을 이어가고 있다. 즉, 소프트웨어 플랫폼을 통해서 협업이 이루어지고 있다. 방대한 양의 패키지들이 개발/공유가 되고 있고 (5,000개 -2017년 기준), 로봇 관련 프로그램을 하기에는 안성맞춤이다
세 번째, 통신 기반 프로그램이다. 센서나 액추에이터의 하드웨어 드라이버, 센싱, 인식, 동작을 하기 위해서 각 노드 또는 컴포넌트에서 통신을 해야하는데 의존성을 떠나서 네트워크에서 통신을 제공한다.
네 번째, 개발 도구 지원을 한다. 디버깅 관련 도구, GUI도구 (plot), 3차원 시각화 도구(Rviz) 등을 제공. 로봇을 위한 소프트웨어 framworks 과 다양한 라이브러리 등을 쉽게 사용할 수 있게 도와준다.
다섯 번째, 스마트폰에서 iOS와 안드로이드 플랫폼으로 혁명이 일어났듯이 생태계가 중요하다. 로봇 하드웨어는 많지만 이를 통합해 줄 운영체제가 필요했다. 여기에 ROS가 제격이다
여섯 번째, 라이센싱 허용이 되어 있다. BSD 라이센스로 되어 있는데 open 라이센스이며 상업 또는 비상적으로 사용할 수 있게 되어 있는 점이다.
참고 - [ ROS 로봇 프로그래밍 - 표윤석|조한철|정려운|임태훈 지음 ]