자율주행을 위한 ROS 시작하기(1)

signer do·2021년 6월 17일
0

자율주행

목록 보기
1/2

1. Concept

ROS는 data를 처리하는 peer-to-peer(P2P) network에서 처리된다.
가장 중요한 용어 Node, Master, Mesage, Topic, Bag

1) Node

Node들은 computation을 수행하는 과정들이다. robotic system은 보통 많은 node들로 구성된다. 한 node는 laser 거리탐지기, 한 node는 wheel motor를 control하거나, 다른 노드는 localization과 같은 것들을 수행한다.

2) Master

Master는 모든 node의 1) name 등록(registeration)과 2) 찾기(lookup information) DNS server처럼 ( 해당 웹사이트 주소를 ip주소로 대응시켜주는 역할 ) 두가지를 수행한다.

3) Message

Node들은 서로 message들을 passing함으로써 서로를 communicate한다. 이 message는 간단히 data structure, typed field로 구성되어 있다.

4) Topic

topic은 message의 내용(content)를 식별할 때 사용하는 name이다.

5) Bags

Bags는 ROS message data를 저장하고 다시 실행(play)시킬 때 사용되는 format이다.
Bags는 모으기 힘든 sensor data를 저장하는데 중요한 메커니즘다. developing과 알고리즘 testing할 때 필요한 file들.

어떻게 node는 작동하는가?

ROS Master는 ROS node들을 위한 topic registration 정보를 저장한다. Node들은 registration 정보를 report하기 위해 Master랑 communicate한다.

Node들은 다른 node랑 바로 연결된다. Master가 이를 위해 lookup information을 제공한다. 바로 찾아갈 수 있도록


2. Message, Topic

  • Message들은 transport system을 통해 publish / subscribe 문법으로 전달된다.
  • Message type에서, 표준 원형(int, float, boolean, etc)들이 지원되고, 원형들의 tpye들이 배열로도 지원된다.
  • 마치 C struct 구조처럼 동작
  • topic은 message의 이름이라 생각하면 된다. 예를 들어 c언어로 생각하면 hello가 topic이 되고 안에 있는 a, b, c들의 자료형의 message type이 된다.
struct hello{
	int a;
  	float b;
	int c;
}

3. Publish/Subscribe

  • node들은 주어진 topic을 publishing을 통해 message를 보내게 된다.
  • node들은 적절한 topic을 subscribe을 할 특정한 종류의 data에 관심있다.
  • single topic에 대한 여러개의 publisher와 subscriber가 동시에 있을 수 있다.
  • single node도 multiple topic을 subscribe하거나 publish할 수 있다.
    -> 1-1, 1-Many, Many-Many communication

4. Image processing with Camera node

  • Camera Node는 camera를 control하고 image streming data를 받아온다.
  • image processing node는 camer로부터의* camer node는 image data를 publish하고, image Processing Node는 그거를 subscribe한다.

5. Ros melodic 설치와 구성 (Ubuntu 18.04 LTS)

여기를 참고하자 http://wiki.ros.org/Installation/Ubuntu

6. Ros topic

여기를 참고 http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics

/*help를 요청하는 명령어*/
$ rostopic -h

/*현재 활성중인 topic list를 보여주는 명령어*/
$ rostopic list

/*특정한 topic의 message 내용을 출력하는*/
$ rostopic echo /image_data_Message

/*topic의 data를 넣어 publish*/
$ rostopic pub [topic_name] [message_type] [data]

/*특정한 topic의 type message를 출력하는*/
$ rostopic type

/*topic의 publihing 속도를 보여주는 명령어*/
$ rostopic hz

7. Ros commands

/*subscriber와 publisher와 topic관계도를 보여주는 명령어*/
$ rosrun rqt_graph rqt_graph 

/*ROS Master node를 실행시키는 명령어*/
$ roscore

/*ROS package node를 실행하는*/
$ rosrun [package_name] [node_name]
$ rosrun car camera_node

8. rosbag command

/*help을 요청하는 명령어*/
$ rosbag -h

/*특정 topic들을 record하기 위한 명령어*/
rosbag record [topic_name1] [topic_name2] [topic_name3]
$ rosbag record /image/raw /scan /imu /odom

/*하나 그 이상의 bag file들의 content들을 요약하는 명령어*/
$ rosbag info test_210312.bag

/*하나 그 이상의 bag file들을 시간에 맞춰 다시 재생하는 명령어*/
$ rosbag play test_210312.bag


profile
Don't hesitate!

0개의 댓글