본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2025 ROS 스터디] 조원영 #1주차 - ROS 개요

반응형

Chapter 1 로봇 소프트웨어 플랫폼

  • Eco System = 하드웨어 모듈 + 운영체제 + 앱 (서비스) + 유저
  • 역사는 반복된다.
    • Personal PC → Personal Phone → Personal Robot(?)
    • PC가 변화해온 방향으로 핸드폰이 변화해왔다.
    • 이 방향이면 로봇 운영체제도 통일 가능성 있음.
  • 로봇 분야의 운영체제는 춘추 전국시대
    • 다양한 회사에서 각자의 운영체제를 만들어 가는 중.
      • EX) Open Source (ROS), Closed Source (NAOqi), Galapagos (OpenRTM) 등
    • 우리나라나 일본에서도 만들었음.
    • 이건 축구 경기장을 짓는 것과 동일 → 여기에 집중하지 말고, 여기 안의 플레이어
    • 즉, 응용 프로그램을 잘 만드는 것에 집중하자.

Chapter 2 로봇 운영체제 ROS

  • 오픈소스가 기반이며, 가장 많은 사람들이 사용하는 메타 운영체제.
  • 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크
    • ROS = Plumbing + Tools + Capabilities + Ecosystem
    • 노드간에 메시지 교환 방법으로 복잡한 프로그램을 잘게 나눠 공동 개발이 가능
    • 명령어 도구, 시각화 도구 Rviz, GUI 도구 모음 rqt, 3차원 시뮬레이터 Gazebo 지원
    • 로보틱스에서 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원
    • 로보틱스 생태계 생성
    • 진정한 목적 : 로보틱스 소프트웨어 개발을 전세계 레벨에서 공동작업이 가능하도록 생태계를
    • 구축하는 것.
  • 엄밀히 말하면 운영체제가 아님.
    • 전통적인 운영체제 (리눅스, 윈도우즈, 안드로이드 등)가 아니고, 오히려 이를 이용하고 있음.
    • 로봇 응용 소프트웨어 개발을 위한 로봇 소프트웨어 프레임워크 (Toolbox) 제공
    • 메타 운영체제를 통해 로봇이나, 센서, 앱 등을 개발할 수 있음.
    • 이기종 디바이스 간의 통신을 지원 = 하드웨어가 달라도 상호작용 가능 - ROS의 최대 장점
  • ROS의 구성

  • ROS의 특징
    1. 통신 인프라
      • 노드 간 데이터 통신을 제공
      • 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스를 지원
      • 메시지 파싱 기능
        • 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공
        • 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스
      • 메시지의 기록 및 재생
        • 노드 간 송/수신 되는 데이터인 메시지를 저장하고 필요시 재사용 가능
        • 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이
      • 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
        • 노드 간의 데이터 교환이 메시지를 사용 → 각 노드는 서로 다른 언어로 작성 가능
        • 클라이언트 라이브러리 : roscpp, rospy, roslisp, rosjava 등
      • 분산 매개 변수 시스템
        • 시스템에서 사용되는 변수를 글로벌 키값으로 작성해 공유 및 수정해 실시간 반영
    2. 로봇 관련 다양한 기능
      • 로봇에 대한 표준 메시지 정의
        • 카메라, IMU, 레이저 등의 센서/오도메트리, 경로 및 지도 등의 내비게이션 데이터
        • 등의 표준 메시지를 정의해 모듈화, 협업 작업을 유도, 효율성 향상
      • 로봇 기하학 라이브러리
        • 로봇, 센서 등의 상대적 좌표를 트리화 시키는 TF 제공
      • 로봇 기술 언어
        • 로봇의 물리적 특성을 설명하는 XML 문서 기술
      • 진단 시스템
        • 로봇의 상태를 한눈에 파악할 수 있는 진단 시스템 제공
      • 센싱/인식
        • 센서 드라이버, 센싱/인식 레벨의 라이브러리 제공
      • 내비게이션
        • 로봇에서 많이 사용되는 로봇의 포즈 (위치/자세) 추정, 지도 내의 자기 위치 추정 제공
        • 지도 작성에 필요한 SLAM, 작성된 지도 내에서 목적지를 찾아가는 Navigation
        • 라이브러리 제공
      • 매니퓰레이션
        • 로봇 암에 사용되는 IK, FK는 물론, 응용단의 Pick and Place를 지원하는 다양한
        • Manipulation 라이브러리 제공
        • GUI 형태의 Tools 제공 (Movelt!)
    3. 다양한 개발 도구
      • 로봇 개발에 필요한 다양한 개발 도구를 제공
      • 로봇 개발의 효율성 향상
      • Command-Line Tools
        • GUI없이 ROS에서 제공되는 명령어로만 로봇 액세스 및 거의 모든 ROS 기능 소화
      • RViz
        • 강력한 3D 시각화툴 제공
        • 레이저, 카메라 등의 센서 데이터를 시각화
        • 로봇 외형과 계획된 동작을 표현
      • RQT
        • 그래픽 인터페이스 개발을 위한 Qt 기반 프레임워크 제공
        • 노드와 그들 사이의 연결 정보 표시 (rqt_graph)
        • 인코더, 전압 또는 시간이 지남에 따라 변화하는 숫자를 플로팅 (rqt_plot)
        • 데이터를 메시지 형태로 기록하고 재생 (rqt_bag)
      • Gazebo
        • 물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터
        • ROS와의 높은 호환성

Chapter 3 ROS 개발 환경 구축

  • 1줄 설치 방법
  • 수동 설치 방법
    • wiki.ros.org 접속 후, 가장 위의 Install 누르기 → LTS 버전 설치
  • IDE 추천
    • Qtcreator + Qt Creator Plugin for ROS
      • 장점 : CmakeLists.txt를 그대로 사용 가능, rqt 플러그인 및 GUI 개발하기 쉬움
    • Visual Studio Code + ROS Extension
      • 장점 : 간단한 텍스트 편집기 지향, 빠름
    • Eclipse
      • 장점 : 많은 사람들이 사용하는 익숙한 통합개발환경

 

반응형