ROS 연동 로봇 프로그램과 일반 로봇 프로그램의 차이



설계의 차이


ROS라는 생태계 내에서 개발되는 로봇 프로그램은
프로세스를 목적별로 나누고
노드와 노드 간의 데이터 통신을 고려하여 설계한다.



ROS와 연동되는 로봇 프로그램은
일반적인 로봇 프로그램과 달리 노드 단위의 프로그램을 작성한다.





"일반적인" 로봇 프로그램은

- ROS에 비해 소프트웨어 컴포넌트를 다룰 때 Standard가 부족하고

- 특정 하드웨어 내에서 빌드를 목적으로한 프로그램이다.

- 통신 시, 직접 함수를 호출하거나 직렬/UART 통신에 의존한다.



ROS 로봇 프로그램은

- Topic을 통해 데이터를 교환하는 Publish-subscribe 모델을 사용한다.

- 비동기 통신, 분산적이라는 특징은 
  분산된 별개의 컴퓨터에서 각각 다른 컴포넌트가 실행될 수 있음을 뜻한다.

- 분산 시스템에서도 실시간 통신을 가능하게 하는 ROS의 중요한 요소가
   DDS(Data Distribution Service)이다.

 



Sample Architecture


예시의 그림에서 중앙의 노드는
다른 노드들과의 통신에 있어서 중요한 역할을 한다.


"ROS2로 시작하는 로봇 프로그래밍" 교재의 실습 자료에 대입해보면
각 노드의 역할을 다음과 같다.



<Topic>
- Topic publisher는 현재시간, 변수a, 변수b를 topic으로 publish한다.
- Topic subscriber는 이 토픽을 구독한다.



<Service>
- Service client는 연산자를 서비스 요청값으로 보낸다.
- Service server는 연산의 결괏값을 서비스 응답값으로 보낸다,



<Action>
- Action Client는 연산 결괏값의 누적 한계치를 액션 목표값으로 전달한다.
* Aciton에 goal, feedback, result가 있음.



가운데 노드
- subscriber로부터 변수 a, b를
- service로부터 연산자를
받아 연산하고,

연산 결괏값을 서비스 응답으로 보낸다.

Action 목푯값을 전달받은 이후부터 (Action goal)
연산 결괏값을 누적하고
액션 피드백으로 연산식을 보낸다.

누적된 연산 결괏값 > 전달받은 액션 목푯값이 되는 순간,
액션 결괏값으로 누적된 연산 결괏값과 진행된 연산식 모두를 보낸다.






시뮬레이션&TEST

로봇 프로그램 개발에는 시뮬레이션 툴이 필수적이다.
ROS에서는 손쉽게 Built-in 시뮬레이션 툴로 테스트할 수 있다.

그렇지 않은 경우, 인 하우스 개발이 필요하다.
일반적으로 추상화가 적게 된 low-level-programming이 필요하다.



생태계

ROS에서는 패키지 드라이버와 알고리즘이 제공되고
오픈소스이기 때문에 개발자들의 참여로 
소스 개발이 활발하다.





댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

Blogger 커스터마이징 : CSS 수정 (sticky-header)

Intel 14th gen CPU의 칩 충돌 사태와 해결 방법