ROS의 메세지 통신은 노드 간의 데이터를 주고받는 핵심 메커니즘이다. 메세지에는 토픽, 서비스, 액션이 있는데 토픽은 단방향 통신 방식이고 여러차례 메세지를 발행한다. 서비스는 양방향 통신이고 한번만 메세지를 송신한다. 액션은 서비스와 비슷하지만 장시간 걸리는 작업 중간 결과를 통보하는 기능을 포함한다. 토픽에는 publisher와 subscriber가 있는데 토픽을 발행하는 주체를 publisher라 하고 발행한 토픽을 받는 주체가 subscriber이다. 메세지 예시로는 sensor_msgs/Image(RGB 이미지 데이터), sensor_msgs/PointCloud2(깊이 데이터), sensor_msgs/LaserScan(2D 라이다 스캔 데이터), geometry_msgs/PoseStamped(목표 위치 및 자세 설정) 등이 있다. 패키지는 하나 이상의 노드또는 노드실행 정보를 묶어 놓은 단위로 launch, src, msg, package.xml, CMakeLists.txt등이 포함될 수 있다. 'catkin_create_pkg my_slam_navigation roscpp rospy std_msgs sensor_msgs nav_msgs tf' 라는 명령어를 입력했다고 가정하자. 그럼 여기서 'my_slam_navigation' 은 새로 생성하는 패키지 이름이고 roscpp는 C++, rospy는 python, std_msg는 ros메세지 타입 종속성, sensor_msgs, nav_msgs는 모두 종속성, tf는 좌표변환 패키지가 한 패키지 안에 생성되고 package.xml과 CMakeLists.txt가 설정된다.
노드1과 노드2의 통신은 서로 토픽이나 메시지를 주고받는데 TCPROS 프로토콜을 통해 노드 간 데이터를 주고받는다. 그럼 마스터의 역할에 대한 질문이 생길 수 있는데 XML-RPC(마스터-노드 통신)는 중앙 제어자 역할을 하고 각 노드의 요청을 전달하고 가져오는 역할을 한다고 생각하면 된다.
ROS 중요 명령어
roscd - ros패키지 디렉토리로 이동(우분투 cd와 비슷)
rostopic, rosservice, rosnode - ros___ list라고 터미널에 입력하면 현재 실행되고 있는 리스트가 나온다.
rosbag - 로그를 기록하고 재생할 수 있다.
rospack - 보통 rospack find로 많이 사용했는데 rospack find realsense2_camera라고 하면 해당 패키지의 경로를 찾아준다.
ros 도구로
1)rviz
ros에서 제공하는 3d 시각화 도구로 로봇 센서 데이터, 상태 정보, 경로, SLAM 결과 등을 직관적으로 확인할 수 있다. 로봇의 실제 형태를 URDF 3D형태로 볼 수 있고 좌표 프레임을 표시할 수 있다. 또한, 센서 데이터 시각화를 지원하여 LiDAR, 카메라, IMU 등 다양한 센서에서 수집된 데이터를 그래픽으로 표현할 수 있으며, 이를 통해 로봇의 주변 환경을 명확하게 파악할 수 있다. SLAM 및 내비게이션 기능을 시각적으로 표현할 수 있는 것도 주요 기능 중 하나이다. 다른 핵심 기능으로는 TF(Transform) 프레임의 시각화가 있다. 로봇의 여러 좌표 프레임 간 관계를 시각적으로 표현하여 로봇의 자세와 위치에 도움을 준다.
2)rqt
rqt는 ROS 제공 GUI 기반의 통합 시각화 및 분석 도구이고 로봇 시스템의 동작을 모니터링하고 디버깅할 수 있도록 다양한 플러그인을 제공한다. rqt는 Python 및 Qt 프레임워크 기반으로 개발되어 있으며 직관적인 그래픽 인터페이스를 통해 ROS 노드, 토픽, 메시지, 서비스 등을 시각적으로 확인할 수 있습니다. 다음과 같이 토픽을 한눈에 알기 쉽게 볼 수 있다. 물론, 실행시킬때 roscore를 실행시켜야한다.
3) gazebo
로봇 시뮬레이션으로 물리적 환경을 시뮬레이션하고 실제로 작동하지 않고 어떻게 작동하는지 확인할 수 있는 장점이 있다.
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2025 ROS 스터디] 이영상 #2주차- ROS 용어, 명령어, 도구 (0) | 2025.01.22 |
---|---|
[2025 ROS 스터디] 이동규 #2주차 - ROS와 한걸음 더 친해지기 (1) | 2025.01.22 |
[2025 ROS 스터디] 황희찬 #2주차- ROS 용어,명령어,도구 (0) | 2025.01.22 |
[2025 ROS 스터디] 이승찬 #2주차 - ROS의 컨셉 / 명령어와 도구 (0) | 2025.01.22 |
[2025 ROS 스터디] 홍동형 #2주차 - ROS 용어와 도구 (1) | 2025.01.22 |