본문 바로가기

Theory, Tech

ROS 관련 기술 정리

  • 아래는 작성자가 각종 출처를 바탕으로 임의로 작성한 정보임. 정확한 정의가 아닐 수 있으니 우선은 참고용도로만 활용 권장함
  • 작성자의 개인 공부를 위한 러프한 정보이기도 하며, 정보를 넓게 검토하기 위한 대략적인 정보들이 작성됨.
  • 필요에 따라 업데이트 예정
  • 최초/최종 작성일: 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 에 설치 가능함)
        • 물론, 버전은 필요한 외부 라이브러리에 맞춰 활용함이 좋아보임

참고 레퍼런스

  1. ROS 공식 홈페이지: https://www.ros.org
  2. 현대자동차 ROS 블로그 글 "ROS: Robot Operating System에 대해 알아보기": https://developers.hyundaimotorgroup.com/blog/364
  3. Wikipedia. Robot Operating System: https://en.wikipedia.org/wiki/Robot_Operating_System
  4. ROS wiki: https://wiki.ros.org