- 아래는 작성자가 각종 출처를 바탕으로 임의로 작성한 정보임. 정확한 정의가 아닐 수 있으니 우선은 참고용도로만 활용 권장함
- 작성자의 개인 공부를 위한 러프한 정보이기도 하며, 정보를 넓게 검토하기 위한 대략적인 정보들이 작성됨.
- 필요에 따라 업데이트 예정
- 최초/최종 작성일: 2024-05-26 / 2024-05-26
ROS 란
- Robot Operating System
- 컴퓨터공학, 기계공학, 전자공학 등 다양한 분야가 융합된 로보틱스의 특성 상 연구의 진전이 더디기에 개발된, 로봇을 쉽고 빠르게 개발할 수 있는 시스템.
ROS 의 이력
- Standford
- 2007년 5월 미국 스탠퍼드 대학 STAIR (Stanford AI Robot) 프로젝트인 Switchyard 시스템에서 시작됨
- Willow Garage (2007~2013; 로보틱스 연구 회사; 2014년 폐업)
- 2007년 ROS 라는 이름을 갖게 됨
- 2010년 1월 ROS 1.0 출시
- OSRF and Open Robotics (2013 ~ present)
- 2013년 Open Source Robotics Foundation 이 개발 관리 시작
- 2017년 5월 "Open Robotics" 로 이름 변경
- 2017년 12월 ROS 2.0 배포
ROS 의 특징
- 일반적으로 Ubuntu 에서 작동되는 서비스
- Node 개념으로, HW 구성요소와 SW 시스템 간 통신을 쉽게 정의 가능함
- 로봇 연구 개발에 필요한 실행, 디버깅, 시뮬레이터, 데이터 시각화, 로깅 등의 도구를 제공함 (개발 속도와 효율 향상)
- Driver 부터, State-of-the-art algorithm (최신 기술의 알고리즘) 들을 제공함
- 분산 프로세스
- 패키지 단위 관리
- API 형태
- 복수의 프로그래밍 언어 지원
장점
- 오픈소스. 다양한 사용자가 기여하며 발전되는 SW
- 로봇 개발에 필요한 통신 미들웨어를 간단히 구현 가능함
- 카메라라는 센서가 범용적으로 많이 쓰이고 사람이 직관적으로 이해하고 활용하기 용이한만큼 널리 쓰이는 SLAM 방식임
- 센서용 드라이버, UI, 보행 제어 알고리즘, 매핑 시스템 등이 공개 되어있어, 개발의 진입장벽이 낮음
- 다수의 사용자가 커뮤니티를 갖고 있어서, 문제 해결 및 개발에 도움을 얻고, ROS 자체를 개선해나갈 수 있는 환경을 갖추고 있음
단점
- 필요로 하는 메모리가 큼 (소형 임베디드 시스템에 도입이 어려울 수 있음)
- 네트워크 의존성이 높음 (통신 환경이 안정적이지 않다면 도입이 어려움)
- 실시간성이 보장되지 않음
- PC 의 높은 연산 능력을 요구함
ROS 는 대체 가능한가? (ROS 로 대체 가능한가?)
- ROS 는 이름에서 유추되는 운영체제 보다는 미들웨어에 가까움
ROS 의 활용 예
- 자율주행을 위한 SLAM 기술 연구를 하고자 한다면, LiDAR 센서와 로봇의 시스템 간 통신에 대해 고민하기보다는 SLAM 알고리즘에 집중할 수 있음
(LiDAR 센서라는 Node와 로봇이라는 Node 사이의 통신은 ROS 를 통해 정의했기 때문임)
- 객체 인식 기능을 탑재한 모바일 로봇을 만들고 싶다면, 주행 기능과 매핑 기능은 오픈소스를 이용하는 등 개발의 진입장벽을 낮춤
ROS 를 활용하고 싶다면?
- 필요한 사람
- 센서 개발자
- 로봇 개발자
- 로봇 외에도 HW 와 SW 를 융합적으로 활용하는 시스템을 이용하는 개발자
- 시뮬레이션 개발자
- 사용 방법
- Ubuntu 운영체제 위에 ROS git 을 다운로드 하여 사용
- (2024-05-26 기준, ROS1 최신 LTS 인 "Noetic Ninjemys" 가 Ubuntu 20.04 (Focal) 및 다른 system 들에도 맞춰서 제공됨))
- (2024-05-26 기준, ROS2 최신 인 "Iron Irwini" 가, Ubuntu 22.04 Jammy Jellyfish / Windows 10 에 설치 가능함)
- 물론, 버전은 필요한 외부 라이브러리에 맞춰 활용함이 좋아보임
참고 레퍼런스
- ROS 공식 홈페이지: https://www.ros.org
- 현대자동차 ROS 블로그 글 "ROS: Robot Operating System에 대해 알아보기": https://developers.hyundaimotorgroup.com/blog/364
- Wikipedia. Robot Operating System: https://en.wikipedia.org/wiki/Robot_Operating_System
- ROS wiki: https://wiki.ros.org