2015년 8월 3일 월요일

ROS 요약 정리

로봇 개발 시 최근 많이 사용하기 시작한 ROS에 대해 간단히 요약한다.

1. 개요

ROS는 로봇 운영 체계(robot operating system) 이다. 플랫폼 개념으로 개발되었다. 다양한 로봇관련 센서와 액추에이터를 제공하고 있다.

2. 특징

1. ROS는 노드와 그래프란 개념으로 로봇을 구동시킨다. 노드는 센서에서 데이터 취득, 액추에이터 구동, 알고리즘 실행의 단위가 된다. 이런 노드를 모아둔 것을 패키지라 한다.
2. 노드에서 다른 노드로 데이터를 보내는 것은 메시지란 개념으로 통해 전달된다.  
3. 노드 간 통신은 TCP/IP 스택 기반 데이터 통신을 한다. 하나의 네트웍 상에서 동작한다. 그러므로, 같은 네트웍의 node간 데이터 통신은 매우 쉽다.
4. 메시지를 발행하는 노드는 publisher, 메시지를 받는 노드들을 subscriber 라 한다.
5. 각 노드는 별도의 프로세스처럼 동작한다.
6. 발행된 메시지를 기록하는 rosbag 명령이 있으며, 기록된 메시지를 재생할 수 있다.
7. 유명한 센서, 액추에이터, 로봇 플랫픔은 이미 패키지로 개발된 것이 있다.
8. 데이터 가시화를 위한 rviz 프로그램이 있다.
9. 3차원 시뮬레이션을 위한 gazebo 프로그램이 있다.
10. 관절 암 시뮬레이션을 위한 moveit 프로그램이 있다.

3. SLAM과 위치추정

SLAM과 위치추정은 서로 많은 관계가 있다. 노이즈가 있는 센서 데이터를 통해, 위치를 추정할 경우, 칼만 필터나 파티클 필터를 사용하는 경우가 많다. 네비게이션을 수행할 때, 성능을 고려한다면 DWA(dynamic window approach)를 사용한다. 파티클 필터의 경우, 초기화, 예측, 보정, 위치추정, 재추출 단계를 거친다.

4. 주의사항

1. 불완전한 roscore 및 node 종료
가끔, 불완전하게 종료된 roscore, node로 인해, 관련 패키지들이 제대로 동작하지 않는 경우가 있다. 이때는 프로세스를 강제 종료시키거나, 재부팅해야 한다.

2. 패키지 빌드과정에서 누락된 패키지
가끔 패키지 빌드과정에서 누락된 패키지가 있다. 이 경우에는 구글링 노가다를 통해, 문제를 해결할 수 밖에 없다.

3. 네트웍 문제
트래픽이 많은 네트웍에서 실행하면, 메시지가 제대로 전달안되는 경우가 발생할 수 있다.




댓글 없음:

댓글 쓰기