[ROS] ROS 시작하기

당고짱·2023년 2월 27일
0
post-custom-banner

ROS(Robot Operating System)

로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크

  • 노드 프로세스의 분산 프레임워크
  • 실행 프로그램을 독립적으로 설계
  • 실행 시 프로세스간 결합도를 낮춰줌
  • 다양한 라이브러리 사용 가능
  • C++, Python 지원
  • 라이다, 카메라 등의 센서 데이터를 시각화 가능

1. 메시지와 토픽

노드 간 데이터를 주고 받을 때 사용하는 기능

  • 각 노드의 PublisherSubscriber 의 정보를 공유해 메시지 송수신
  • 토픽(메시지 이름), 메시지 타입을 맞춰야 메시지 송수신 가능
    • ex) 시청자가 32ch에서 방송국의 9시 뉴스를 시청한다.
    • 시청자, 방송국 - 노드
    • 32ch - 토픽
    • 9시 뉴스 - 메시지

2. rosbridge

json 형식의 데이터 ↔ ROS 메시지 변경을 통해 통신을 연결하는 역할의 ROS 패키지

  • 내부 로컬 ip 이외에도 외부 프로그램과 통신 가능하도록 함
  • 시뮬레이터에서 네트워크 연결하면 json 형식으로 데이터 전송
  • ROS 마스터는 rosbridge를 통해 ROS 형식의 메시지로 수신

3. rviz, rqt

토픽을 수신해 데이터 타입에 따라 시각화하는 툴

  • 데이터가 한눈에 보여 디버깅할 때 편하다.
  • rqt_plot : 토픽을 이용해 그래프를 그려줌
  • rviz : 라이다, tf, image 등의 메시지를 3D로 시각화 해줌
  • rqt_graph : 노드와 메시지 관계를 한눈에 보기 쉽게 그래프를 그려줌

센서


1. 카메라

시각적으로 보이는 모든 것을 촬영 → 다양한 정보 획득

  • 객체 인식을 위해선 여러 연산 필요
  • 표지판, 문자 등 읽을 수 있음
  • 정확한 거리 측정 불가
  • 외부 환경에 따라 정보의 품질이 떨어지기 쉬움
  • 낮은 단가로 차량 구성에 부담이 적음

2. 라이다(LiDAR)

레이저 펄스를 쏘아서 반사되어 돌아오는 시간을 이용해 거리를 인지하는 센서

  • 정밀도가 높고 형태 인식이 가능
  • 정확한 3D 이미지 제공
  • 높은 에너지 소비와 가격대, 큰 외형을 가지고 있음
  • 눈이나 비에 반사되어 악천후에 약함
  • 점점 효율이 좋아지고 가격이 내려가고 있음

3. 레이더(Radar)

전파를 매개체로 사물간 거리와 형태를 파악하는 센서

  • 라이더 센서보다 정밀도가 떨어지지만 소형화 가능
  • 사이즈가 곧 성능
  • 다른 센서보다 날씨에 영향을 많이 받지 않음
  • 작은 물체 식별 어려움
  • 정밀한 이미지 제공 못함
  • 물체의 종류를 판독하지 못함
  • 최대 측정 거리에 반비례하여 측정범위가 줄어듬

4. 센서의 감지 범위

  • 센서 감지 영역 - 최소거리, 최대거리
  • 센서 장착 높이, 수직 시야각을 이용해 최소거리 계산
  • 최대거리는 센서가 가지는 해상도에 따라 달라질 수 있음
  • 수직해상도는 채널 수에 따라 결정
  • 최대 시야각 범위를 채널의 개수만큼 등간격으로 나누어 신호가 방출된다.

5. GPS(Global Positioning System)

현재 위치를 손쉽게 알아낼 수 있는 센서

  • 모든 위성이 신호를 보내면 수신기를 통해 각 위성의 신호 시간을 측정
  • 측정 결과 순간 위치를 계산해 거리 측정

6. IMU(Inertial Measurement Unit)

가속도계와 회전 속도계, 자력계의 조합을 사용해 힘과 방향 자기장을 측정하는 센서

  • 관성 측정 장비
  • 3축에 대한 회전 각 속도를 측정하는 자이로센서, 3축의 가속도를 측정하는 가속도 센서로 이루어짐
  • 가속도 센서 : 직교 좌표계의 3축 방향으로 가속도 측정
    • IMU 센서는 현재 물체의 각 방향 별 가속도 값을 측정할 수 있음
    • 노이즈, 이동, 진동에 취약
  • 자이로 센서 : 직교 좌표계에서 3축 기준으로 회전의 변화량을 측정
    • X축 : Roll
    • Y축 : Pitch
    • Z축 : Yaw
  • 지자기 센서 : 지구 자기장을 읽는 센서

7. Ground truth

시뮬레이터에서 정답으로 주는 값

  • 카메라, 라이다, 레이더 센서는 3개의 Ground truth를 선택 가능
    • RGB : Red, Green, Glue
    • Sementic : class 기반의 segmentation. 같은 객체들끼리 구분
    • Instance : instance 기반의 segmentation. 각 객체를 식별
      • 바운딩 박스
      • 객체의 위치 및 속도 정보
profile
초심 잃지 말기 🙂
post-custom-banner

0개의 댓글