본문 바로가기

로보틱스/ROS

ROS Classic 에서 ROS2 로 넘어가야 하는 이유 II

728x90
반응형

ROS2 Migration

ROS2

ROS2 로 넘어가야 하는 이유 (두번째)

지난 포스팅에서 ROS1 이 산업에 적용되는 과정에서 제기된 문제점 들에 대해서 정리를 해보았다.

 

[ROS2] ROS2 로 넘어가야 하는 이유 I

History ROS1 2007년 5월 개발 시작 (STAIR, STanford AI Robot) 2020년 5월 13번째 Noetic Ninjemys 마지막 배포판으로 릴리즈 중단 ROS2 2014년 3월 부터 개발 시작되었고, 2015년 첫번째 알파 버전을 릴리즈 2..

makepluscode.tistory.com

2007년 5월, 스탠포드 대학교 연구실에서 시작된 ROS 는 로봇 소프트웨어의 플랫폼화, 기능구현에 큰 성과를 얻지만, 고성능 워크스테이션에서 연구용으로 만들어진 프레임워크의 한계점이 있었다. 대표적인 문제를 나열하면 다음과 같다.

  1. 성능과 안정성에 대한 문제 (특히, 임베디드 시스템 환경에서)
  2. 소프트웨어 이식, 확장의 문제
  3. 빌드 시스템, 도구의 개선필요
  4. 보안문제

등으로 요약해볼 수 있다. 그럼 ROS2 에서 한계점, 제한점을 어떻게 해결되는 걸까?

ROS 2 ROSCon 2015 Hamburg Day 1 Morgan Quigley

ROS 를 개발한 Morgan Quigley 의 ROSCon 2015 발표 자료를 보면, ROS 에서 data flow 가 얼마나 중요한지 알 수 있다. data flow 과정을 구현하는 생산성, 그리고 성능(overhead, latency)과 보안까지- 위 그림을 보면 하나의 휴머노이드 로봇을 구성하는 마이크로 컨트롤러를 포함, 컴퓨팅 모듈이 얼마나 많은지 알 수 있다.


 

DDS 적용을 통한 구조, 성능, 안정성의 개선

로봇을 위한 소프트웨어 프레임워크의 중요한 기능은 데이터 흐름을 구현, 관리, 제어하는 것이다. ROS 에서는 Node 단위로 기능을 분리하고 Node 간의 통신 방법을 제공한다. ROS1 에서 Master 인 roscore 를 중심으로 TCPROS 통신을 제공하였으나, roscore 에 load 가 집중되면 통신 지연, 성능 문제가 심각해진다. 또한 시스템의 broker 역할을 하는 roscore 에 문제가 생기면 전체 시스템에 문제가 생기는 구조적인 문제를 가지고 있다.

ROS2 초기, 차세대 통신에 대한 고민을 할때는, 기존 TCPROS 통신을 개선하거나, 아니면 ZeroMQ, Protocol, zeroconf 등을 포팅하려는 계획이었으나, OMG (Object Management Group) 에서 밀어주는 DDS (Data Distribution Service) 를 채택하였다. DDS 는 실시간 데이터 통신을 지원하는 안정성 높은 통신 미들웨어 규격이고 다음과 같은 3rd party 업체에서 구현해서 배포하고 있다.

  • eProsima
  • GurumNetworks
  • Kongsberg Defence & Aerospace
  • MilSOFT- OMG Member
  • Object Computing, Inc.
  • Sparx Systems
  • Twin Oaks Computing, Inc.
  • ADLINK Technology
  • Hamersham Ltd

최신 기술의 적용, 개발 용이성

ROS1 의 개발 플랫폼과 언어의 제한적인 지원과 다소 오래된 규격, 오픈소스 라이브러리의 사용으로 최신 소프트웨어의 이식과 확장에 어려움이 있었다. ROS2 에서는 다양한 개발플랫폼, 언어, 클라이언트 라이브러리, 오픈소스 라이브러리가 지원된다.

  • Linux, macOS, Windows 개발환경
  • C++14, python3.5+
  • rclcpp. rclc, rclpy, rcljava, rclada, rclgo, rclnodejs 클라이언트 라이브러리

빌드 개발 환경 개선 

초기에는 rosbuild, catkin (CMake) 등 통합 빌드환경 제공의 의미가 컸다. CMake 기반의 catkin 은 python 패키지 관리가 불가능했고, 단일 워크스페이스에서만 사용가능했던 문제가 있다.

ROS2 에서는 colcon, ament 를 적용한다. ament 는 CMake 를 사용하지 않는 python 패키지 지원, 관리가 가능하다.

  • colcon, ament, python setuptools (full support)

이외에도 ROS2 에서 개선된 구조, 기능, 성능적인 내용이 많지만, 자세한 내용은 별도의 포스팅을 통해서 정리할 계획 이다.


참고자료

반응형