본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 이하람 #2주차 - ROS 명령어 및 도구

반응형

ROS에 사용되는 용어

Node: ROS에서 실행되는 최소 단위의 프로세스이며, 하나의 프로그램이 하나의 노드라고 생각할 수 있다.

Package: 여러 노드와 노드 실행을 위한 정보를 묶어 놓은 것이다.

Message: 메세지를 통해 노드간의 데이터를 주고받게 된다.Integer, Float와 같은 변수형 메세지부터 메세지 안에 여러 메세지를 조합하여 이미지, 라이다 등의 정보를 저장한 구조를 사용할 수도 있다.

 

Topic: 토픽을 방송하는 Publisher, 토픽을 받아들이는 Subscriber의 구조로 이루어져 있으며, ROS에서의 주된 통신 방법이다. 1:1 통신도 가능하며, 필요에 따라서 1:N, N:1, N:N 통신도 모두 가능하다.

Service: 서버와 클라이언트의 구조로 되어 있으며, 클라이언트가 서버에 정보를 요청하면 서버는 정보를 제공하는 방식을 사용한다.

Action: 서버와 같이 서버, 클라이언트 구조로 되어 있지만 주로 시간이 오래 걸리는 작업일 때 사용하며, 중간 결과를 제공되는 피드백이 추가된다.

 

ROS의 메세지 통신

ROS에서 모든 노드는 실행되면서 마스터에게 노드 정보를 전달한다. 그러면 마스터에서는 토픽 통신의 경우 서브스크라이버, 서비스나 액션의 경우 클라이언트에 퍼블리셔, 서버의 정보를 전달한다. 정보를 전달받은 뒤, 노드들은 직접적으로 연결되어 정보를 주고받는다.

 

ROS에서 자주 사용되는 명령어

ROS 실행 명령어

roscore

rosrun

roslaunch

 

ROS 정보 명령어

rostopic

rosservice

rosnode (rqt_graph을 통해서도 list를 확인 가능)

rosparam

rosbag

 

ROS catkin 명령어

catkin_create_pkg

catkin_make

 

또한 다음 사이트에서도 ROS와 관련된 명령어 정보를 확인할 수 있다.

https://raw.githubusercontent.com/oroca/oroca_ros_tutorials/master/ROScheatsheet_indigo_catkin.pdf

 

RViz

강력한 3D 시각화 툴 제공

레이저, 카메라 등의 센서 데이터를 시각화

로봇 외형과 계획된 동작을 표현

RQT

그래픽 인터페이스 개발을 위한 Qt 기반 프레임워크 제공

노드와 그들 사이의 연결 정보 표시 (rqt_graph)

시간이 지남에 따라 변화되는 정보를 플로팅 (rqt_plot)

데이터를 메세지 형태로 기록하고 저장(rqt_bag)

Gazebo

물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터

ROS와의 높은 호완성

반응형