apt search ros-jazzy-turtlebot4
환경 : ubuntu noble + jazzy + gazebo harmonic
1. 설치
sudo apt install ros-jazzy-turtlebot4-simulator
# 키보드 이동을 위해서 이것도 미리 설치
sudo apt install ros-jazzy-turtlebot4-bringup
sudp apt install ros-jazzy-turtlebot4-viz

2.실행
ros2 launch turtlebot4_gz_bringup sim.launch.py
ros2 launch turtlebot4_gz_bringup turtlebot4_gz.launch.py


3. 한번 토픽들을 봐보자.
ros2 topic list
- 센서 및 상태 관련
- /battery_state : 배터리의 현재 상태(전압, 전류 등)를 나타냄
- /bumper_contact : 범퍼 센서가 감지한 접촉 정보를 전달함.
- /ir_intensity , /ir_opcode: 적외선(IR) 센서의 강도나 명령 코드와 관련된 데이터.
- /joint_states: 로봇의 각 관절의 상태(각도, 속도 등)를 제공해줌.
- /wheel_status, /wheel_ticks, /wheel_vels: 바퀴의 상태, 엔코더 값, 속도 등 바퀴 관련 정보를 나타낸다.
- /odom: 로봇의 이동(오도메트리) 정보를 제공.
- /scan: 라이다나 다른 거리 측정 센서의 스캔 데이터를 포함한다.
- 제어관련
- /cmd_vel, /cmd_vel_unstamped: 로봇의 이동 명령(선속도, 각속도 등)을 전달.
- /diffdrive_controller/cmd_vel: 차동 구동(differential drive) 로봇에 대한 속도 명령.
- /cmd_audio, /cmd_lightring: 오디오 출력이나 라이트링(LED 등) 제어 명령을 나타냄.
- 시뮬레이션 및 시스템 정보
- /clock: 시뮬레이션 환경이나 특정 타이밍 정보를 제공하기 위한 토픽
- /sim_ground_truth_pose, /sim_ground_truth_dock_pose: 시뮬레이션에서의 실제 로봇 위치나 도킹 상태의 정보를 제공.
- /parameter_events: ROS 파라미터의 변경 이벤트를 알리는 메시지.
- /robot_description: 로봇의 URDF(설계 모델) 같은 설명 정보를 담고 있다.
- 인터페이스 진단
- /diagnostics: 시스템의 진단 정보 및 오류 상태 등을 전달한다.
- /rosout: ROS 시스템의 로그 메시지(디버깅, 정보, 경고 등)를 모니터링한다.
- /hmi/buttons, /hmi/display, /hmi/led, /interface_buttons: 휴먼 머신 인터페이스(HMI)와 관련된 버튼, 디스플레이, LED 등의 제어 및 상태 정보이다.
- 기타
- /tf, /tf_static: 좌표 변환(transform) 정보를 제공하여 로봇의 각 부품 간 또는 외부 참조 좌표계와의 관계를 정의한다./
- /hazard_detection: 로봇이 주변 위험 요소를 감지했을 때 관련 정보를 전송.
- /joy, /mouse: 입력 장치(조이스틱, 마우스)로부터의 입력 데이터를 전달.
- /oakd/rgb/preview/…: Oak-D 카메라와 관련된 토픽으로, RGB 이미지, 깊이 정보, 포인트 클라우드 등을 제공.


4. 저 많은것들중 어떤게 turtlebot4를 움직일까?
--> 우선 ros2 topic list -t | grep cmd_vel을 해보자. 그러면 /cmd_vel [geometry_msgs/msg/Twist, geometry_msgs/msg/TwistStamped]이 출력될거임.
--> 저기에서 geometry_msgs/msg/TwistStamped이다.
5. 아래 명령어같이 입력하면 이동시킬수있다.
ros2 topic pub /cmd_vel geometry_msgs/msg/TwistStamped "{header: {stamp: {sec: 0, nanosec: 0}, frame_id: 'base_link'}, twist: {linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.0}}}"
- header: 메시지의 메타데이터를 포함하는 표준헤더이다.
- stamp는 메시지가 생성된 시각을 의미.
- frame_id는 데이터가 연관된 좌표계의 이름을 나타낸다.
- twist는 로봇의 선형,각속도 정보를 담고있는 geometry_msgs/msg/Vector3 메시지이며, 3d공간에서는 x,y,z,방향의 회전 속도를 포함
angular는 각속도를 나타냄
6. 키보드로는 다음과 같이 입력하자
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -p stamped:=true
- stamped를 true로 하였는데 이러면 geometry_msgs/msg/TwistStamped에 메시지를 publish함.
- 만약 false라면 geometry_msgs/msg/Twist에 메시지를 publish함.
7. turtlebot의 현재 위치를 알고 싶으면 아래의 명령어를 입력한다.
ros2 run tf2_ros tf2_echo odom base_link

- Translation ( 위치 )
- 각각 x,y,z축이다.
- Rotation ( 자세 )
- Quaterntion은 로봇의 회전을 의미한다.
- RPY는 각각 Roll , Pitch , Yaw를 의미한다.
- Quaterntion은 로봇의 회전을 의미한다.
- Transformation Matrix ( 변환 행렬 )
- turtlebot의 현재 위치와 자세를 나타내는 4x4 변환 행렬이다.
- 상위 3x3은 로봇의 회전 행렬이다. 즉, 각 축에 대한 회전 정보를 포함
- 마지막 열( Tx , Ty , Tz )은 로봇의 위치translation를 나타냄.
- turtlebot의 현재 위치와 자세를 나타내는 4x4 변환 행렬이다.
[ Rxx Rxy Rxz Tx ]
[ Ryx Ryy Ryz Ty ]
[ Rzx Rzy Rzz Tz ]
[ 0 0 0 1 ]'ROS 2' 카테고리의 다른 글
| ROS 2 Tutorials : Creating custom msg and srv files (0) | 2025.02.27 |
|---|---|
| gazebo tutlebot4 카메라 보기 (0) | 2025.02.24 |
| Launch file (0) | 2025.02.05 |
| URDF : Using URDF with robot_state_publisher (1) | 2025.02.04 |
| tf2 : Introducing tf2 (0) | 2025.02.04 |