본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 이연수 #2주차 - ROS 용어 및 도구

반응형

ROS 용어

  1. Node : 최소 단위의 실행 가능한 프로세서
    • ROS 에서는 최소한의 실행 단위로 프로그램을 나누어 작업
    • 각 노드는 메시지 통신으로 데이터를 주고 받는다.
  2. Package : 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것
    • 패키지 묶음을 메타 패키지라 하여 따로 분리
  3. Message : 메시지를 통해 노드 간의 데이터를 주고 받게 된다. 메시지는 integer, floating, point, boolean과 같은 변수 형태이다.

메시지 통신 용어

1. Topic

    • Publisher : 메시지를 보내는 노드
    • Subscriber : 메시지를 받는 노드
    • 1:1 통신 뿐만 아니라, 목적에 따라 1:N, N:1, N:N 통신도 가능
    • ex. 거리센서를 장착하고 있는 로봇이 그 토픽을 로봇 A, B에 동시에 전달할 수 있다.
    • 주로 일방적인 데이터를 보내야 하는 센서 데이터에 많이 사용된다.Topic : 단방향, 연속성을 가진 통신 용어
  1. Service : 양방향, 1회성 통신 용어
    • Service server : 서비스를 응답
    • Service client : 서비스를 요청
  2. Action
    • Action server : 액션 피드백 및 결과 전달
    • Action client : 액션 목표 전달
    • 많은 시간이 걸리는 복잡한 task에 주로 사용Action : 서비스와 비슷하지만 중간에 피드백이 있다는 차이

💡 90% 이상은 Topic을 사용한다.

 

메시지 통신

  1. 마스터 구동 : XMLRPC
    • roscore : 서버 구동
  2. 서브스크라이버 노드 구동 (노드2)
    • rosrun 패키지이름 노드이름
    • 노드의 정보를 마스터에 전달
  3. 퍼블리셔 노드 구동 (노드1)
    • rosrun 패키지이름 노드이름
    • 노드의 정보를 마스터에 전달
  4. 퍼블리셔 정보 알림 : 마스터는 서브스크라이버 노드에게 새로운 퍼블리셔 정보를 알린다.
  5. 퍼블리셔 노드에 접속 요청 : 마스터로부터 받은 퍼블리셔 정보를 이용하여 TCPROS 접속을 요청
  6. 서브스크라이버 노드에 접속 응답 : 접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호 전송
  7. TCP 접속 : TCPROS를 이용하여 퍼블리셔 노드와 직접 연결
  8. 메시지 전송 : 발행자 노드는 서브스크라이버 노드에게 메시지를 전송
  9. 서비스 요청 및 응답

ROS 메시지

  • 파라미터 : 어떤 변수를 외부에서 변경시키고 다른 노드에서 프로세스를 바꾸는 등의 기능
  • 메시지는 노드 간에 데이터를 주고 받을 때 사용하는 데이터의 형태
    • 토픽, 서비스, 액션은 모두 메시지 사용
    • 단순 자료형
    • 메시지 안에 메시지를 품고있는 간단한 데이터 구조
    • 메시지들이 나열된 배열과 같은 구조

네임

  • 노드, 메시지를 가지는 고유의 식별자
  • ROS는 그래프라는 추상 데이터 형태 지원
  • 글로벌 - 문자 없이 네임을 바로 쓰거나 네임 앞에 슬래쉬

좌표변환(TF, transform)

  • 각 조인트들의 상대 좌표 변환

클라이언트 라이브러리

  • 다양한 프로그래밍 언어 지원

 

ROS 명령어 정리

Command-Line Tools

  • rospack, roscd, rospd, roscp, rosnode, rostopic …

ROS 셸 명령어

ROS 실행 명령어

ROS 정보 명령어

ROS catkin 명령어

ROS 패키지 명령어

 

RViz : ROS Visualization Tool

  1. ROS의 3D 시각화 툴
    1. 센서 데이터 시각화
    2. 레이저 거리 센서의 거리 데이터
    3. RealSense, Kinect, Xtion 등의 Depth Camera의 포인트 클라우드 데이터
    4. 카메라의 영상 데이터
    5. IMU 센서의 관성 데이터
  2. 로봇 외형의 표시와 계획된 동작 표현
    1. URDF를 시각화
  3. 내비게이션
  4. 매니퓰레이션
  5. 원격제어

💡 RViz를 사용하면 센서 및 로봇 관련 데이터 시각화가 매우 간단하다.

RViz 실행

RQT

RQT 실습

Gazebo

  • Gazebo는 로봇 개발에 필요한 3차원 시뮬레이션을 위한 로봇, 센서, 환경 모델 등을 지원하고 물리 엔진을 탑재하여 실제와 근사한 결과를 얻을 수 있는 3차원 시뮬레이터
  • DARPA Robotics Challenge의 공식 시뮬레이터로 선정
  • ROS와의 호환성도 매우 좋다.
반응형