본문 바로가기
  • AI 개발자가 될래요
로보틱스

[ROS2] "혼자 공부하는 로봇 SW" 책을 읽으며 알게 된 기본 개념 정리 -1-

by 꿀개 2024. 11. 29.

[ROS2] "혼자 공부하는 로봇 SW" 책을 읽으며 알게 된 기본 개념 정리 / 노드, 서비스, 토픽 등

 

ROS2 혼자공부하는 로봇SW 직접 만들고 코딩하자

https://search.shopping.naver.com/book/catalog/34288483629?cat_id=50010921&frm=PBOKPRO&query=%ED%98%BC%EC%9E%90+%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94+%EB%A1%9C%EB%B4%87+sw&NaPm=ct%3Dm4232d54%7Cci%3D480a7e65c8f563f51042daabffe31bcbe1f7ee33%7Ctr%3Dboknx%7Csn%3D95694%7Chk%3De51235dfe1d314395aad1367b206ffdd719e5b93

 

ROS2 혼자공부하는 로봇SW 직접 만들고 코딩하자 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

위 책을 읽으며 알게 된 개념들, 정의 등등 정리합니다.

 

Shell 쉘

- shell은 운영체제의 일부로, PC가 실행된 이후 메모리에 상주하는 핵심 프로그램인 커널과 사용자 사이를 연결해주는 프로그램.

- 사용자가 직접 커널에 명령을 입력하는 것.

 

.bashrc

- 로그인한 사용자 별로 bash의 각종 설정을 저장하는 파일.

 

ros2 노드 실행 명령어

- 노드(Node): 실행 가능한 최소한의 단위

- 패키지: 다수의 노드와 여러 설정을 모아둔 것

 

아래 명령은 패키지의 노드를 하나 실행하는 명령어이다. 

ros2 run <PKG name> <Node Name>

예를 들면 아래와 같다.

ros2 run turtlesim turtlesim_node

 

실행중인 노드 목록 확인 명령어

ros2 node list

 

ros에서 말하는 서비스(service)의 개념

- 클라이언트(client)가 서버(server)에게 요청(request)하면 응답(response)을 받으며 두 노드가 데이터를 주고받는 방식을 말함.

 

Topic(토픽)의 개념

- 발행(publish)과 구독(subscribe)로 되어있는 개념. 아래 그림 참고.

토픽(Topic) 개념도, 출처: https://docs.ros.org/en/galactic/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.html

 

현재 사용 가능한 토픽 조회 명령어

ros2 topic list

 

Publish or Subscribe인지 확인하는 명령어

ros2 topic info <노드 이름, 예: /turtle1/pose>

 

토픽 구독 명령어

ros2 topic echo <노드 이름: turtle1/pose>

 

공간상에서 6자유도 표현 / (x, y, z,), (roll, pitch, yaw)

x, y, z, roll, pitch, yaw

 

토픽 발행 명령어

ros2 topic pub <hz> <topic_name> <msg_type> "<args>"

 

예를 들어, geometry_msgs/Twist 데이터 타입의 /turtle1/cmd_vel 토픽을 x축 직선 방향으로 2의 속도로 진행하도록 한다면 다음과 같은 명령어를 입력하면 된다.

ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"

주의할 점은, x: 이나 y: 처럼 콜론 왼쪽은 공백이 없어야 한다.

 

rqt_graph

토픽과 노드의 관계를 그림으로 나타낸 것.

동그라미는 노드를, 사각형은 토픽을 의미.

rqt_graph / 출처: https://docs.ros.org/en/galactic/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.html