Ros1(Robot Operating System)이란?

Haneul·2023년 1월 30일

ros

목록 보기
1/1

안녕하세요 개발질 하는 기획자 Haneul 입니다.😳
오늘은 첫 포스팅으로 Ros(Robot operating system)에 대한 기본 개념과 간단하면서도 꼭 필요한 명령어를 알아보겠습니다.


ros란 간단하게 다음과 같이 정의 할 수 있습니다.

  • 오픈소스 로봇 운영체제
  • 로봇 소프트웨어 개발을 위한 소프트웨어 프레임워크
  • 노드간 통신을 기반으로 전체 시스템 구동
  • 메시지 기록 재생 기능으로 반복적인 실험 가능, 알고리즘 개발에 용이

ros는 여러 구조체가 실시간으로 통신하며 동작해야하는 로봇의 특성을 잘 반영하여 간편한 프로그래밍을 할 수 있도록 운영체제 역할을 한다고 볼 수 있습니다. node 구조체 사이의 통신을 topic, service의 형태로 정보를 실시간으로 주고 받기에 유용합니다.


ros의 기본적인 개념을 간단하게 정리해보겠습니다.

  • :: ROS가 제공하는 도구들 ::
    • RVIZ: 센서 데이터 등의 데이터 시각화 도구
    • RQT: QT 기반 GUI 응용 개발 도구, 노드 통신을 시각적으로 보여주는 프로그램
    • GAZEBO: 물리 엔진 기반의 3차원 시뮬레이터
  • :: ROS 용어 정리 ::
    • ROS Master
      • 노드와 노드 사이의 통신을 위한 서버.

      • 마스터가 없으면 ROS 노드 간 Message, Topic등을 통신 할 수 없다.

      • 실행 명령어 : roscore


    • Node
      • ROS에서 실행되는 최소 단위 프로세스(프로그램).

      • ROS에서는 하나의 목적에 하나의 노드를 개발하는 것 추천.


    • Message
      • 노드와 노드 간의 데이터를 주고 받는 양식.

      • ROS에서는 메시지를 통해 노드 간 데이터를 주고 받는다.


    • Package
      • ROS 소프트웨어의 기본 단위. 패키지는 노드, 라이브러리, 환경설정 파일들을 통합하는 최소의 빌드 단위이며, 배포 단위.


    • Topic
      • 단방향의 연속적인 메시지 송수신 방식.

      • 계속적으로 보내줌.

      • 메시지의 이름, 주제, 노드에서 어떤 메시지를 송신하고 싶으면 토픽으로 마스터에 등록하고 해당 토픽으로 메세지를 보낸다.

      • Subscriber Node는 등록된 토픽의 이름에 해당하는 Publisher Node의 정보를 받는다.


    • Service
      • 양방향의 일회성 메세지 송수신 방식.

      • 요청에 대한 응답 데이터를 받고 싶을 때 사용.

      • 응답을 보내고 종료.


    • Publish
      • Topic에 원하는 메시지를 담아 송신(Publish)하는 것.


    • Publisher
      • Publish를 수행하기 위해 Topic을 포함한 자신의 정보를 마스터에 등록하고, Subscriber Node에 Message를 보냄.

      • 하나의 노드에 여러 개의 Publisher를 선언 할 수 있다.


    • Subscribe
      • Topic의 내용에 해당하는 Message를 수신(Subscribe)하는 것.


    • Subscriber
      • Subscribe를 수행하기 위해 Topic을 포함한 자신의 정보를 마스터에 등록하고, 수신하고자 하는 Topic의 Publish 하는 Node의 정보를 Master로부터 받는다.
      • 하나의 노드에 여러 개의 Subscriber를 선언 할 수 있다.

TopicService
단방향 통신, 비동기 통신양방향 통신, 동기 통신
Publisher : Message 송신Service Client : Service 요청
Subscriber : Message 수신Service Server : Service 응답
지속적으로 발생하는 송수신에 적합클라이언트 요청이 있을 때 서버에서 응답
1:N, 1:1, N:1, N:N 전부 가능요청과 응답이 끊기면 노드 접속 종료

catkin workspace의 구조에 대해서 살펴보겠습니다.

  • src
    • catkin 패키지의 소스 코드를 포함하는 공간.
  • build
    • catkin 패키지의 빌드를 하기 위해 CMake가 호출되는 곳.
  • devel
    • 패키지를 시스템에 설치하기 전, 개발과정에서 쓰이는 실행파일과 라이브러리들이 저장하는 곳

ros 기본 명령어 정리

  • 쉘 명령어
    • roscd : 지정한 ROS 패키지의 디렉터리로 이동.
    • rosls : ROS 패키지의 파일 목록 확인.
  • 실행 명령어
    • roscore : 마스터 노드 실행.
    • rosrun : 노드 실행.
    • roslaunch : 여러 노드 실행 및 실행 옵션 설정
    • rosclean : ROS log file 검사 및 삭제
  • 정보 명령어
    • rostopic : ROS 토픽 정보 확인.
    • roservice : ROS 서비스 정보 확인.
    • rosnode : ROS 노드 정보 확인.
    • rosbag : ROS 메시지 기록, 재생.
    • rosmsg : ROS 메시지 파일 정보 확인.
    • rossrv : ROS 서비스 파일 정보 확인.
    • rosversion : ROS 패키지 및 배포 릴리즈 버전 정보 확인
  • catkin 명령어
    • catkin_create_pkg : catkin 빌드 시스템으로 패키지 자동 생성.
    • catkin_make : catkin 빌드 시스템에 기반을 둔 빌드.
    • catkin_init_workspace : catkin 빌드 시스템 작업 폴더 초기화.

오늘은 간단하게 ros1의 핵심 개념과 명령어에 대해 알아보았습니다.
다음 포스팅에는 ros 코드를 직접 보며 정리해보겠습니다.

읽어주셔서 감사합니다😊

profile
Haneul

0개의 댓글