$ sudo apt-get install ros-melodic-catkin
catkin은 ROS를 설치하면서 자동으로 설치되지만, 안깔려있는 경우 위의 명령어를 통해서 설치가 가능하다.
*catkin의 디렉터리 파일 구조
catkin 패키지를 포함
소스코드를 포함
src에서 catkin 패키지를 빌드하기 위해 CMake가 호출되는 곳
install 전 빌드된 대상을 배치하는 디렉터리
환경 및 개발 테스트를 함
최종 결과물의 컴파일을 위한 디렉터리
Node는 실행되는 최소 단위의 프로세서이다.
노드들은 노드끼리 토픽과 서비스를 이용해 통신이 가능하다.
예제를 통해서 Node에 대해서 더 알아보자.
turtle을 실행하자
$ rosrun turtlesim turtlesim_node
새로운 terminal을 열어서
$ rosrun rosnode list
명령어로 현재 실행중인 노드의 리스트를 확인할 수 있다.
출력은 아래의 형태로 나올 것이다.
/rosout
/turtlesim
$ rosrun turtlesim turtlesim_node __name:=my_turtle
$ rosnode list
출력
/my_turtle
/rosout
/turtlesim
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
Topic이란 노드들 간에 통신을 할 수 있는 채널이다.
두 프로그램 간에 통신이 발생하기도 하고 메시지를 주고받기도 하는데 이 경로를 토픽이라고 한다.
토픽은 분석용으로 많이 쓰인다.
예제를 통해서 Topic에 대해 더 알아보자
ROS를 실행시켜준다
$ roscore
새로운 터미널을 생성해 turtle을 실행시킨다
$ rosrun turtlesim turtlesim_node
또 새로운 터미널을 생성해 아래 명령어를 입력해준다.
$ rosrun turtlesim turtle_teleop_key
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