[ROS] 패키지 생성 및 빌드

dada·2023년 2월 12일
0

ROS

목록 보기
1/2
post-thumbnail

catkin 빌드 시스템 설치

$ sudo apt-get install ros-melodic-catkin

catkin은 ROS를 설치하면서 자동으로 설치되지만, 안깔려있는 경우 위의 명령어를 통해서 설치가 가능하다.


*catkin의 디렉터리 파일 구조

src

catkin 패키지를 포함
소스코드를 포함

build

src에서 catkin 패키지를 빌드하기 위해 CMake가 호출되는 곳

devel(develope)

install 전 빌드된 대상을 배치하는 디렉터리
환경 및 개발 테스트를 함

install

최종 결과물의 컴파일을 위한 디렉터리

ROS Node

Node는 실행되는 최소 단위의 프로세서이다.
노드들은 노드끼리 토픽과 서비스를 이용해 통신이 가능하다.

예제를 통해서 Node에 대해서 더 알아보자.

turtle을 실행하자

$ rosrun turtlesim turtlesim_node 

새로운 terminal을 열어서

$ rosrun rosnode list

명령어로 현재 실행중인 노드의 리스트를 확인할 수 있다.

출력은 아래의 형태로 나올 것이다.

/rosout
/turtlesim
  • 노드의 이름 설정하여 실행하기
$ rosrun turtlesim turtlesim_node __name:=my_turtle
  • node의 list 확인하기
$ rosnode list

출력

/my_turtle
/rosout
/turtlesim
  • 또다른 rosnode 명령어인 ping 사용하기
rosnode ping my_turtle

출력

rosnode: node is [/my_turtle]
pinging /my_turtle with a timeout of 3.0s
xmlrpc reply from http://gnoeyhad-900X3N:32901/	time=0.528812ms
xmlrpc reply from http://gnoeyhad-900X3N:32901/	time=1.228094ms
xmlrpc reply from http://gnoeyhad-900X3N:32901/	time=1.069069ms
xmlrpc reply from http://gnoeyhad-900X3N:32901/	time=1.315117ms

ROS Topic

Topic이란 노드들 간에 통신을 할 수 있는 채널이다.
두 프로그램 간에 통신이 발생하기도 하고 메시지를 주고받기도 하는데 이 경로를 토픽이라고 한다.
토픽은 분석용으로 많이 쓰인다.

예제를 통해서 Topic에 대해 더 알아보자

Setup

ROS를 실행시켜준다

$ roscore

새로운 터미널을 생성해 turtle을 실행시킨다

$ rosrun turtlesim turtlesim_node

또 새로운 터미널을 생성해 아래 명령어를 입력해준다.

$ rosrun turtlesim turtle_teleop_key

ROS Topics

rqt_graph를 실행하기 위해서 install 한다.

$ sudo apt-get install ros-melodic-rqt

새로운 터미널을 열어 아래 명령어를 입력해준다.

rosrun rqt_graph rqt_graph

새로운 창이 생기게 되는데 커서를 올려주면 색이 입혀진다.

blue/green: ROS nodes
red: ROS Topic

- Using rostopic echo
rostopic echo는 토픽에서 data publised를 보여준다.

$ rostopic echo /turtle1/cmd_vel

위의 명령어를 실행하면

geometry_msg/Twist

의 결과가 나오는데 이 메시지를 디테일하게 보기 위해 rosmsg를 이용하자.

$ rosmsg show geometry_msgs/Twist

를 입력해주면 아래와 같은 결과가 나온다.

geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y
  float64 z

- Using rostopic pub
rostopic pub은 현재 토픽에서의 데이터를 publish한다.

새로운 터미널을 열어 아래의 명령어를 입력해주면 원하는대로 turtle을 움직일 수 있다.

$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

rostopic pub: topic에게 메시지를 전송하라는 의미
-1: 메시지를 한번만 publish하는 옵션
/turtle1/cmd_vel: publish할 토픽의 이름
geometry_msgs/Twist: topic을 publish할 때 메시지의 타입
-- (double-dash): 해당 argument에 값을 넣어주지 않기 위한 과정

turtle이 정지하지 않고 계속 움직이도록 하기 위해서 -r 명령어를 넣어주면 된다.

$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

rqt를 이용해서 이 과정을 확인하면
publish에 teleop_turtle노드와 추가적으로 새로운 노드가 생성이 됐을 것이다.

- Using rostopic hz
rostopic hz는 어떤 데이터가 publish되는지를 알려준다.

turtlesim_node가 pose에 대한 데이터를 몇 Hz로 publish하는지를 나타낸다.

$ rostopic hz /turtle1/pose

참고 출처: ROS Wiki

profile
CV, Vision AI 등을 공부합니다

0개의 댓글

관련 채용 정보