본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2025 ROS 스터디] 장우혁 #1주차 - ROS 소개 및 설치

반응형

Ch 1. 로봇 소프트웨어 플랫폼

 1) 스마트폰과 컴퓨터의 공통점
  - 둘 다 대중화된 상품
  - 다양한 하드웨어가 결합 가능한 구조 
  - 운영체제(OS) + 애플리케이션(App)

  → 하드웨어 모듈 + 운영체제 + 앱(서비스) + 유저 = 하나의 생태계

 

 2) 소프트웨어 플랫폼이 가져온 변화
  - 하드웨어 인터페이스가 통합됨
  - 하드웨어를 추상화, 규격화, 모듈화해서 가격은 낮추고 성능은 향상
  - 하드웨어, 운영체제, 앱이 분리됨
  → 개발자는 사용자 니즈에 맞춘 서비스 개발에 집중할 수 있음

  - 구매 → 사용자 수 증가 → 피드백 → 생태계 순환 구조 형성

 3) 로봇 분야
  - 현재 여러 로봇 운영체제가 존재함 (ex. NAOqi, ROS, OPROS 등)
  - 가장 많이 쓰이는 것은 ROS
  - 우리나라도 자체 운영체제를 만들려고 노력 중이지만, 현실적으로는 쉽지 않음
 → 주어진 플랫폼(ROS)을 잘 활용하자.

 4) 로봇 소프트웨어 플랫폼이 가져올 미래

  - 하드웨어 플랫폼과의 소프트웨어 플랫폼간의 인터페이스 확립
  - 모듈형 하드웨어 플랫폼 확산 
  - 하드웨어에 대한 지식이 없어도 응용 프로그램 작성 가능
  - 더 많은 소프트웨어 인력들이 로보틱스 분야로 진입, 로봇 제품에 참여 가능
  - 유저가 원하는 실질적인 서비스를 제공 → 유저 계층 형성 및 피드백 → 로봇 개발 속도가 급격히 향상됨

 

 

Ch 2. 로봇 운영체제 ROS

 1) ROS 란
  - 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임 워크
  - 노드 간 메시지 교환 방법으로 복잡한 프로그램을 잘게 나눠 공동 개발 가능
  - 로보틱스에서 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원
  → 로보틱스 생태계 생성
 
 2) ROS는 새로운 운영 체제(OS)인가?
  - 결론은 X
  - ROS = Robot Operating System
  - ROS는 메타운영체제(Meta-Operating System)이다.

 3) 메타운영체제(Meta-Operating System)란?
  - 전통적인 운영체제(ex. 리눅스, 윈도우즈, 안드로이드)가 아님
  - 로봇 응용 소프트웨어 개발을 위한 필수 기능들을 라이브러리 형태로 제공하는 생태계를 갖춤,
 
  - 이기종 디바이스 (서로 다른 디바이스) 간의 통신 지원 
  → 로봇을 움직이거나 데이터를 받는 등의 작업 쉽게 가능

 4) ROS를 사용 가능한 운영체제
  - 기존 전통적인 운영체제 
  → 기본적으로는 Ubuntu, OS X에서 구동하는 것을 추천
 
 5) ROS의 구성

ROS의 구성

 

 6) ROS 생태계 

ROS의 생태계

 7) ROS의 특징
  특징 1 : 통신 인프라
   - 노드간 데이터 통신을 제공
   - 미들웨어로 지칭되는 메시지 전달 인터페이스 지원한다.
   - 메시지 파싱 기능, 메시지의 기록 및 재생, 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능, 분산 매개변수 시스템

 

 특징 2 : 로봇 관련 다양한 기능

   - 로봇에 대한 표준 메시지 정의, 로봇 기하학 라이브러리, 로봇 기술 언어, 진단 시스템, 센싱/인식, 내비게이션, 매니퓰레이션

 

 특징 3 : 다양한 개발 도구

  - 로봇 개발에 필요한 다양한 개발 도구 제공

  - 로봇 개발의 효율성 향상

  - Command-Line Tools, RViz, RQT, Gazebo

 

 

Ch 3. ROS 개발환경 구축

 1) ROS noetic 설치 링크

  noetic/Installation/Ubuntu - ROS Wiki

 

noetic/Installation/Ubuntu - ROS Wiki

Wiki: noetic/Installation/Ubuntu (2023-03-04 17:53:42에 IsaacSaito가(이) 마지막으로 수정)

wiki.ros.org

 

 2) 터미널 창에서 roscore 실행 

roscore 실행

 

[250410 ROS 스터디] 1주차 추가 정리

roscpp, rospy

  • roscpp: C++ 언어로 ROS 노드를 만들 때 사용하는 클라이언트 라이브러리
  • rospy: Python 언어로 ROS 노드를 만들 때 사용하는 클라이언트 라이브러리
    → ROS는 언어 독립적으로 메시지를 주고받을 수 있기 때문에, 파이썬 노드와 C++ 노드가 함께 작동 가능하다.

tf (transform)

  • 로봇의 여러 프레임(좌표계) 간의 위치 관계를 실시간으로 추적해주는 도구
  • ex. base_link, camera_link, map, odom 등의 프레임 간 위치 관계를 시간에 따라 추적

rosbag

  • ROS 데이터를 파일로 기록하고 재생할 수 있는 툴
  • 실험 데이터를 나중에 다시 분석하거나 테스트할 때 유용함
  • rosbag record, rosbag play 명령어로 사용

웹소켓 (WebSocket)

  • 웹에서 실시간으로 데이터를 주고받기 위한 통신 기술
  • ROS와 연결하여 웹 UI에서 로봇을 조작하거나 센서 데이터를 확인할 수 있음
    → 대표적인 예: [rosbridge + roslibjs] 조합으로 웹 브라우저에서 ROS 데이터 송수신 가능

Rviz

  • ROS의 3D 시각화 툴
  • 센서 정보(Lidar, Camera), 로봇 모델, 좌표계(tf), 경로 등을 시각적으로 보여줌

Rqt

  • ROS에서 사용하는 GUI 기반 플러그인 툴 모음
  • 주로 토픽 보기, 노드 그래프, 파라미터 설정, 플롯 그리기 등 다양한 기능을 GUI로 확인 가능

* GUI (Graphical User Interface) : 버튼, 창, 그래프, 마우스 클릭 등 조작이 가능한 화면

* CLI (Command Line Interface) : 터미널에서 명령어로 조작하는 화면

반응형