티스토리 뷰

반응형

https://www.youtube.com/watch?v=aL7zLnaEdAg&t=786s

 

ROS = 미들웨어 모음

 

로봇을 만들고 소프트웨어를 재사용할 수 있게 하는 역할을 한다.

 

Plumbing - 시스템 내부 동작 구조 지원

  • process management
  • inter-process communication
  • Device drivers

 

Tools - 사용가능한 도구

  • simulation
  • visulaization
  • Graphical user interface
  • Data logging

 

Capabilities - 제어를 포함한 구현

  • control
  • planning
  • perception
  • mapping
  • manipulation

 

Ecosystem - 패키지 재사용 가능성, 오픈 소스 문서가 많다.

  • Package organization
  • Software distribution
  • Documentation
  • Tutorials

 

 

ROS의 철학

분산 시스템 

컴퓨터, 네트워크, 4g로도 얼마나 떨어져 있어도 연결 가능

 

ros는 p2p 통신을 사용하는 모든 언어와 라이브러리를 사용할 수 있다(C+,python,Matlab,java 등등

 

Light-weight 

자체가 가볍다.

 

오픈소스이다.

 

 

ROS MASTER

Managers the communication between nodes(processes)

Every node registers at startup with the master

각 프로세스들을 관장하려면 무조건 Ros mater 부터 켜야 한다.

 

터미널에 roscore를 입력하여 시작한다.

>roscore

 

ROS nodes

개별적으로 실행하는 하나의 프로그램 단위

노드 각각이 컴파일되며, 하나의 노드당 하나의 기능을 수행한다.

 

패키지로 구성되므로 rosrun을 입력한 다음 패키지 이름, 노드 이름을 입력하면 된다.

ros nodes를 실행하기 전에는 반드시 ros 마스터를 실행

#node 실행
> rosrun package_name node_name

#활성화된 노드 보기
>rosnode list

#노드 정보를 더 보기
>rosnode info node_name

 

Ros Topics

노드간에 구성될 수 있는 메세지 스트림

각 Node는 여러가지 topics(주제)로 통신할 수 있다.

1개의 publisher가 n 명의 하위

Topic은 메세지 스트림의 의미와 정확히 같다.

 

노드가 주제를 광고하면 ros 마스터 내에 등록

이 주제와 메세지를 다른 노드에 전달한다.

#토픽 리스트 활성화
> rostopic list

#토픽 정보 구독 및 출력
> rostoic echo /topic

#토픽 정보 보이기
> rostopic info /topic

 

서로 간의 메세지 정의는 주제 유형을 정의한다.

int, 문자열, 복잡한 메세지 유형일수도 있다.

c. c++에서 구조를 만드는 것과 같다.

 

*.msg file로 정의된다.

 

예시 : 각속도 메세지를 정의하고 싶다면 각속도.message를 작성

내부에는 세 개의 부동소수점 또는 세 개의 double 자료구조.

각 축 주위의 각속도가 들어가 있다.

#토픽의 유형 보기
> rostopic type /topic

# 주제 메세지 게시하기

> rostopic pub /topic(토픽 이름) type data

 

메세지는 배열로도 생성할 수 있다.

 

ROS Nodelets

node와 같은 컨셉

같은 머신에서 사용할 때 오버헤드를 줄여준다.

 

첫번째로는 ROS 노드를 사용하려고 노력하고, 만약에 불가항력일 경우(컴퓨터 1과 2를 연결하려는 경우)

사용한다.

 

실제 코드 예제

 

터미널에서 >roscore로 시작

 출력 기록이 어디 있는지 확인

빨간 기록이면 rosclean으로 정리

 

rosrun roscpp 까지 치면 어느게 나오는지 보여준다.

>rosrun roscpp_tutorials talker

 

ctrl+shift+o => 터미널 분리

ctrl+shift+e => 터미널 좌우 분리

 

#활성 노드 보기

> rosnode list

 

토커 노드의 정보 보기

> rosnode info /talker

 

chatter 토픽에 대해 정보 보기

>rostopic info /chatter

 

chatter topic 분석하기

> rostopic type /chatter

 

토픽에 있는 메세지 확인하기

> rostopic echo /chatter 

 

얼마나 자주 표시되는지 분석하기 -> 주기를 알려준다.

> rostopic hz /chatter

 

>rosrun recpp_tutorials listener

 

 

 

 

 

 

반응형