Labeler 2024. 7. 31. 22:48

1. ROS(Robot Operating System) 이란?

  • ROS는 OS인데, 윈도우나 리눅스는 아니고 우분투 같은 메타 운영체제 (운영체제 위에 설치)
  • 로봇 제어에 필요한 기능을 라이브러리 형태로 제공되는 미들웨어 or 소프트웨어 프레임워크
  • ROS2는 오픈소스이기 때문에 부담 없음
  • 로봇 제어에 필요한 다양한 라이브러리를 제공 (C나 C++ 써보면 printf 등 꼭 필요한 건 라이브러리로 제공하는 것 처럼)
  • ROS에서 제공하는 라이브러리가 파이썬과 다른 점은, 파이썬에서 제공하는 라이브러리는 특정 알고리즘 기능 등을 구현해주는 것에 반해서, ROS가 제공하는 라이브러리는 로봇 하드웨어 구동까지 연결해주는 일종의 '프레임워크' 라이브러리라는 차이가 있음

2. ROS2 기본 특징

  • ROS는 C++ or Python으로 코딩 가능
  • 시각화도 가능

3. ROS2가 등장한 이유

 

  • 로봇 개발자는 많은데, 로봇마다 HW, 제어기, 비전 등 다 다르다 보니 맨땅에 해당해야 하는 경향이 강함
  • 또 개발하는 사람마다 OS가 다르면 서로 공유도 어렵고 변경도 어려움
  • 그래서 HW I/F는 통합하고, 커뮤니티를 만들어서 생태계를 형성하는 등 여러가지 이점이 있었음
  • 코드 공유가 되다보니 재사용성, 개발도구 지원 등 여러가지 장점 존재

  • ROS는 node간 메세지 교환 방식이라서 업무배분 등이 가능
  • 노드는 일종의 기능별로 나눠진 스크립트 묶음인데, 노드간에 데이터를 주고받을 수 있음
  • 노드간에 데이터를 주고받지 말고 글로벌 변수를 쓰면 안되냐? 할 수도 있지만,
    => 각 노드는 메모리를 공유하지 않고 독립적으로 돌아가야 하기 때문에 글로벌 변수를 쓰지 않음

API란?

 

  • API는 DART로 주식 데이터 받는 것 처럼, 주식 데이터를 내가 직접 하나하나 수집하는 것이 아니라 주식 데이터를 제공하는 DART에서 제공하는 API 서비스를 사용하는 것을 말함
  • 아무나 API 접근이 가능하게 하는 것은 아니고, 보통 키를 받아서 하는데 json이나 xml 등의 데이터 포멧을 주로 사용함.

 

결론

  • ROS는 말 그대로 OS고, C++이나 파이썬으로 프로그래밍이 가능함
  • 라즈베리파이나 엔비디아 Jetson에 설치해서 활용할 수 있고, 임베디드 시스템에서는 우분투 서버 or 우분투 코어 등을 선택 (경량화 때문에)