| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- DFS
- Humble
- Baekjoon
- CPP
- RNN
- System Call
- ubuntu 22.04
- Linux
- On-memory file system
- CNN
- do it! 알고리즘 코딩테스트: c++편
- Seoul National University
- cs231n
- BFS
- Operating System
- 밑바닥부터 시작하는 딥러닝2
- Python
- Process
- Optimization
- C++
- Data Science
- Gentoo2
- ROS2
- assignment1
- Machine Learning
- deep learning
- SQLD
- file system
- assignment2
- computer vision
Archives
- Today
- Total
newhaneul
[Robocup@Home 2026] 2025.12.30 본문
728x90
해당 코드는 ROS 2의 Python Launch System을 사용하여 로봇의 핵심 기능을 한 번에 실행하는 Bringup 스크립트이다. 이 파일은 로봇의 모델(URDF), 상태 정보(Joint State), 센서(LiDAR), 그리고 이동 제어(Teleop, Odom)를 연결하는 허브 역할을 한다.
1. 실행 인자 설정 (Launch Arguments)
스크립트의 유연성을 위해 외부에서 변경 가능한 변수들을 정의하는 부분입니다.
| 인자 명칭 | 기본값 | 설명 |
| robot_ip | XXX.XXX.XX.X:XXXXX | 로봇 본체 하드웨어와 통신하기 위한 gRPC 주소 |
| publish_rate | 100.0 | 관절 상태(joint_states)를 발행하는 주기(Hz) |
| use_teleop | true | 조이스틱 등을 이용한 원격 조종 노드 실행 여부 |
| scan0_topic | /scan0 | 첫 번째 라이다 데이터의 토픽 이름 |
2. 로봇 모델 로드 (Robot Description)
로봇의 물리적 형태와 구조를 시스템에 알리는 과정입니다.
- XACRO 처리: rby1_description 패키지 내의 .urdf.xacro 파일을 읽어옵니다. 이때 robot_ip 정보를 URDF 내부 파라미터로 전달하여, 하드웨어 인터페이스가 올바른 IP를 바라보게 합니다.
- robot_state_publisher: 로봇의 관절 각도 정보를 받아 각 링크(팔, 다리, 베이스 등)의 3차원 위치(TF)를 계산하여 발행합니다.
3. 핵심 노드 구성
실제로 로봇이 움직이고 인지하게 만드는 노드들입니다.
센서 및 상태 데이터
- rby1_state_only_publisher: 로봇 본체로부터 실제 관절 위치 정보를 실시간으로 받아오는 노드입니다.
- lakibeam1: 두 개의 라이다(Dual LiDAR)를 구동하는 런치 파일을 포함(Include)하고 있습니다.
- lidar_merger_node: /scan0와 /scan1으로 들어오는 두 라이다 데이터를 하나로 합쳐 /scan_merged로 내보냅니다. RoboCup의 복잡한 환경에서 사각지대를 줄이는 데 필수적입니다.
이동 및 제어
- odom_node: 로봇의 주행 기록(Odometry)을 계산하는 99_odom2 노드를 실행합니다. 로봇이 현재 어디에 있는지 추측하는 기초 데이터가 됩니다.
- joy_node: 연결된 조이스틱(Gamepad)의 입력을 ROS 메시지로 변환합니다.
- teleop_node: 조이스틱 메시지를 로봇 이동 명령으로 변환합니다. 특이점은 TimerAction을 사용하여 일정 시간(delay) 뒤에 실행되도록 설정되어 있어, 시스템 초기화 시간을 벌어줍니다.
좌표계 설정 (Static TF)
- world_to_map_tf: world 좌표계와 map 좌표계 사이의 관계를 0, 0, 0으로 고정하는 정적 변환 노드입니다. 슬램(SLAM)을 사용하기 전 기본적인 기준점을 잡는 용도입니다.
ubuntu 22.04 터미널에서 JetSon SSH 원격 접속 하는 방법
ssh -X nvidia@XXX.XXX.XX.XXX
nvidia@XXX.XXX.XX.XXX's password:
RViz2 (Ros 2 Visualization)
로봇 모델 시각화하여 보여주는 디버깅 도구이다. URDF 정보를 받아 로봇을 시각화할 수 있다. 또한 센서 데이터를 표시하여 카메라 데이터를 시각적으로 확인 가능하다.
** URDF? **
로봇의 물리적 구성 정보를 담고 있는 XML 형식의 파일. (.xacro 파일이 최종적으로 이 URDF 형태로 변환되어 로봇의 구조를 시스템에 전달함)
1. Link: 로봇의 뼈대나 몸체를 의미
- Visual: 눈에 보이는 모양
- Collision: 충돌 계산을 위한 단순화된 모양
- Intertial: 무게, 질량 중심 등 물리 연산을 위한 정보
2. Joint: 링크와 링크 사이를 연결하는 관절
- Fixed: 고정된 연결
- Revolute/Continuous: 회전하는 관절
Step 1: RViz2 실행
rviz2
Step 2: Fixed Frame 설정
- map →base
Step 3: RobotModel의 Description Topic
- /robot_description으로 설정

Terminator
- Ctrl + Shift + O: 화면을 가로로 분할
- Ctrl + Shift + E: 화면을 세로로 분할
- Alt + 방향키: 분할된 창 사이를 빠르게 이동
- Ctrl + Shift + W: 현재 활성화된 창 닫기
realsense2 camera 센서 작동하는 법
ros2 launch realsense2_camera rs_launch.py
이후에 RViz2에서 3D 시뮬레이션 및 데이터 확인법
Step 1. Fixed Frame 설정
- camera_link 또는 camera_color_optical_frame으로 변경
Step 2. [Add] 누른 후 아래 항목들 중 추가
- /camera/camera/color/image_raw/image → 로봇 센서가 보는 화면 확인
- /camera/camera/depth/image_rect_raw/DepthCloud → 3D 공간을 보는 방법


728x90
'2. Artificial Intelligence > Project' 카테고리의 다른 글
| [Robocup@Home 2026] 2026.01.07-08 (0) | 2026.01.08 |
|---|---|
| [Robocup@Home 2026] 2026.01.06 (0) | 2026.01.07 |
| [Robocup@Home 2026] 2026.01.05 (0) | 2026.01.05 |
| [Robocup@Home 2026] 2026.01.02 (0) | 2026.01.02 |
| [Robocup@Home 2026] 2025.12.31 (0) | 2026.01.01 |
