Skip to content

GraduationProject-Team3-Avionics/Interface

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Interface Overview (UAV Control)

이 디렉터리는 UAV 제어를 위해 표준 TF 체계와 통합 상태 토픽(/uav/odom)을 제공합니다. 시뮬과 현실을 동일한 인터페이스로 다루기 위해 ENU/FLU(REP‑105) 규칙을 따릅니다.

TF Overview

목적 & 핵심 원칙

  • 컨트롤러는 오직 /uav/odom 하나만 구독(nav_msgs/Odometry, ENU/FLU)
  • TF 의미 고정: map(전역 기준) → odom(연속 로컬) → base_link(바디)
  • 소스(시뮬 GT, PX4, VIO/SLAM)는 교체 가능하되 인터페이스는 고정

빠른 시작

  1. 빌드: colcon build --packages-select gazebo_env_setup
  2. 환경설정: source install/setup.bash
  3. 실행: ros2 launch gazebo_env_setup pose_tf_broadcaster.launch.py
  4. 확인: ros2 topic echo /uav/odom --once

TF 계약

  • map → odom(정적 1회): 시작 포즈 기준 yaw-only 정렬 → Up 축(ENU z) 일치
  • odom → base_link(동적): 드론의 연속 포즈(시뮬에선 GT 기반)
  • base_link → rotor_{0..3}(정적): 모터 프레임
  • RViz 고정 프레임: map

통합 상태 토픽

  • 토픽: /uav/odom (nav_msgs/Odometry)
  • 프레임: header.frame_id=odom(ENU), child_frame_id=base_link(FLU)
  • 내용: pose=TF 그대로, twist=포즈 차분(바디 프레임, 저역통과 적용)
  • 퍼블리셔: state_bridge

주요 노드 및 파라미터

  • gazebo_env_setup/pose_tf_broadcaster
    • 입력: /model/x500_gimbal_0/pose, /model/x500_gimbal_0/pose_static
    • 출력: map→odom(1회 yaw-only), odom→base_link(동적), base_link→rotor_*(정적)
    • 비고: x500_gimbal_* 프레임 재브로드캐스트 숨김(트리 단순화)
  • gazebo_env_setup/state_bridge
    • 기능: TF odom→base_link/uav/odom으로 퍼블리시
    • 파라미터
      • rate: 퍼블리시 주기(Hz), 기본 50
      • vel_alpha: 속도 저역통과 계수(0~1), 기본 0.3
      • parent_frame: 기본 odom
      • child_frame: 기본 base_link

PX4 연동 요약

  • 상태 모니터링: /fmu/out/* (예: /fmu/out/vehicle_odometry)
  • 오프보드 명령: /fmu/in/offboard_control_mode, /fmu/in/trajectory_setpoint, /fmu/in/vehicle_command
  • 컨트롤러 상태 입력은 항상 /uav/odom 하나로 고정(소스만 교체)

자주 쓰는 확인 명령

  • TF: ros2 run tf2_ros tf2_echo map odom, ros2 run tf2_ros tf2_echo odom base_link
  • 상태: ros2 topic echo /uav/odom --once
  • 트리: ros2 run tf2_tools view_frames
  • 토픽 개요: ros2 topic list, ros2 topic info /uav/odom

내부 동작(데이터 플로우)

  • 시뮬 GT → pose_tf_broadcaster → TF(map→odom, odom→base_link) → state_bridge/uav/odom
  • 전환 전략: 나중에 VO/SLAM 또는 PX4를 도입해도 소스만 교체하고 /uav/odom은 유지

문제 해결

  • RViz “No transform from base_link to map”
    • 원인: TF 준비 전 또는 노드 미실행
    • 조치: 수 초 대기, ros2 topic list/ros2 run tf2_ros tf2_echo map base_link로 확인
  • /uav/odom이 비어 있음
    • 원인: TF 조회 실패
    • 조치: ros2 run tf2_ros tf2_echo odom base_link로 TF 유무 확인, 노드 실행 확인
  • 프레임이 기울어져 보임
    • 확인: ros2 run tf2_ros tf2_echo map odom에서 roll/pitch가 0(yaw-only 정책)

폴더/파일 참고

  • TF 브로드캐스터: gazebo_env_setup/src/pose_tf_broadcaster.cpp
  • 상태 브리지: gazebo_env_setup/src/state_bridge.cpp
  • 런치: gazebo_env_setup/launch/pose_tf_broadcaster.launch.py
  • RViz 설정: rviz/PX4_ihw.rviz

앞으로의 확장

  • state_source:=px4|vio 백엔드 추가(파라미터로 소스 전환)
  • VO/SLAM이 map→odom도 퍼블리시(루프클로저/전역 보정 반영)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors