ROS 로봇 프로그래밍_전체적으로

지토·2021년 11월 1일
0

ROS Master

게임할 때 방을 만들면 그 안에서만 사람들이 대화할 수 있는 것 처럼,
노드들이 어디까지 메시지를 주고 받을 수 있는가- 하는 Boundary 를 관리하는 것이 서버입니다.

내 서버에 올라온 애들끼리만 대화하는 것이고, ROS Master 은 그 서버입니다.

$roscore : roscore 을 실행한 그 주소가 ros master 가 되는 것입니다.

노드가 올라갈 때는 ros master 에 등록을 하고, 등록을 한 노드끼리만 메시지를 주고 받을 수 있습니다.

What is Node?

노드란 하나의 실행 가능한 프로그램 단위입니다. 하나의 메인 코드로 되어 있는 프로그램을 말합니다.

예를 들어 '자동차' 라는 시스템이 있을 때,

  • 카메라로부터 들어온 영상을 어딘가로 던져주는 노드
  • 카메라 신호를 화면에 출력하는 노드

등을 노드로 들 수 있습니다.

Message

Data is delivered between nodes via message

노드 사이에 데이터를 주고 받는 것이 message 입니다.
형식은 integer, matrix, structure, float... 아무거나 보낼 수 있습니다.

topic

토픽은 그냥 혼자 얘기하고 있는 것입니다. 방송처럼, 구독을 해야 들을 수 있습니다.

service

리퀘스트가 왔을 때 서버가 답변하는 것입니다.

action

서비스의 하위 개념입니다.

  • blocking mode
    : 답변을 받을 때 까지 아무것도 못 함.
  • non-blocking mode
    : 응답 할 수 있으면 얘기해 줄게. 일단 다른 거 하고 있어봐.

액션은 나오는 대로 주고, 서비스는 다 나와야지 한꺼번에 줍니다.

  • 서비스: 아메리, 커피, 주스 다 나올떄까지 여기서 기다려.
  • 액션: 아메리 나왔어 - 여기 주스도 나왔어- 커피 나왔어.

Message Communication Concepts

메시지를 주고 받기 위해서는 , 내부 네트워크를 이용하기 때문에 주소가 있어야 합니다.

http://ROS_MASTER_URL:*****
( .bashrc에 처음에는 localhost 로 되어있음.)

어떤 주소의 어떤 포트가 지금 master 의 역할을 하고 있는 것이며, 이렇게 함으로써 어떤 개념상의 공간이 생기는 것입니다.

Package

cluster of nodes and other informaion to execute the nodes.

cluster of packages are called meta-package

패키지는 노드들의 집합입니다.
ROS 는 모든 기능을 패키지 단위로 관리하고 있습니다.

패키지 = 노드 + 메시지 정의 + launch

이때 launch 는 rosrun 들의 집합을 말합니다. 실행하는 명령들까지 묶어놓은 것입니다.

catkin : 전체적인 프로젝트를 관리하는 빌드 시스템

catkin workspace 안에 패키지가 들어있습니다.

로스 패키지를 확인할 수 있는 사이트

0개의 댓글