newhaneul

[Robocup@Home 2026] 2025.12.30 본문

2. Artificial Intelligence/Project

[Robocup@Home 2026] 2025.12.30

뉴하늘 2025. 12. 31. 00:15
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