lio sam navigation

김민준·2025년 6월 15일

📁 파일별 기능 설명

1. hunter_autonomous_navigation.launch

위치: ~/ouster_ws/src/LIO-SAM/launch/hunter_autonomous_navigation.launch

주요 기능:

  • 메인 실행 파일: 모든 자율주행 기능을 한 번에 실행
  • LIO-SAM 포함: 기존 run.launch를 include하여 SLAM 기능 실행
  • 포인트클라우드→레이저스캔 변환: 3D 라이다 데이터를 2D 네비게이션용으로 변환
  • Move Base 실행: ROS Navigation Stack의 핵심 노드 실행

핵심 코드:

<include file="$(find lio_sam)/launch/run.launch"/>  <!-- LIO-SAM 실행 -->
<node pkg="pointcloud_to_laserscan" .../>           <!-- 3D→2D 변환 -->
<node pkg="move_base" .../>                         <!-- 자율주행 엔진 -->

2. robot.urdf.xacro (수정됨)

위치: ~/ouster_ws/src/LIO-SAM/launch/include/config/robot.urdf.xacro

주요 기능:

  • Hunter 차량 모델링: 실제 Hunter 차량의 크기와 형태를 3D로 정의
  • 센서 위치 정의: IMU, 라이다의 정확한 위치 설정
  • 바퀴 모델링: 4개 바퀴의 위치와 크기 정의
  • TF Tree 구조: 로봇의 좌표계 관계 정의

Hunter 파라미터 반영:

<xacro:property name="wheelbase" value="0.65"/>    <!-- 축간거리 -->
<xacro:property name="track" value="0.605"/>       <!-- 바퀴 좌우 간격 -->
<xacro:property name="wheel_radius" value="0.165"/> <!-- 바퀴 반지름 -->

3. costmap_common_params.yaml

위치: ~/ouster_ws/src/LIO-SAM/config/navigation/costmap_common_params.yaml

주요 기능:

  • 장애물 감지 설정: 센서로 장애물을 어떻게 인식할지 정의
  • 로봇 발자국: Hunter 차량의 실제 크기 정의 (안전 여유분 포함)
  • 센서 통합: 레이저스캔 데이터 처리 방법 설정

핵심 설정:

footprint: [[-0.35, -0.35], [-0.35, 0.35], [0.35, 0.35], [0.35, -0.35]]  # 차량 크기
obstacle_range: 8.0        # 8m까지 장애물 감지
inflation_radius: 0.8      # 장애물 주변 80cm를 위험구역으로 설정

4. local_costmap_params.yaml

위치: ~/ouster_ws/src/LIO-SAM/config/navigation/local_costmap_params.yaml

주요 기능:

  • 지역 맵 설정: 로봇 주변 8m×8m 영역의 실시간 장애물 맵
  • 높은 업데이트 빈도: 10Hz로 빠른 반응성 확보
  • 움직이는 맵: 로봇을 따라 이동하는 rolling window 방식

특징:

width: 8.0, height: 8.0    # 8×8m 크기
update_frequency: 10.0     # 초당 10회 업데이트
rolling_window: true       # 로봇을 따라 이동

5. global_costmap_params.yaml

위치: ~/ouster_ws/src/LIO-SAM/config/navigation/global_costmap_params.yaml

주요 기능:

  • 전역 맵 설정: 로봇 주변 50m×50m의 큰 범위 맵
  • 경로 계획용: 전체적인 경로를 계획할 때 사용
  • 낮은 업데이트 빈도: 2Hz로 효율성 확보

특징:

width: 50.0, height: 50.0  # 50×50m 큰 범위
update_frequency: 2.0      # 초당 2회 업데이트 (효율성)
resolution: 0.2            # 20cm 해상도 (local보다 거침)

6. dwa_local_planner_params.yaml

위치: ~/ouster_ws/src/LIO-SAM/config/navigation/dwa_local_planner_params.yaml

주요 기능:

  • Hunter 차량 속도 제한: 최대 속도와 가속도를 Hunter 사양에 맞게 설정
  • 경로 추종 알고리즘: Dynamic Window Approach로 실시간 경로 계획
  • 장애물 회피: 동적 장애물을 피하면서 목표지점으로 이동

Hunter 특화 설정:

max_vel_x: 1.2             # 최대 전진 속도 1.2m/s (안전 여유)
min_vel_x: -0.3            # 후진 속도 0.3m/s
max_vel_theta: 1.0         # 최대 회전 속도
sim_time: 2.0              # 2초 미래까지 예측
vtheta_samples: 25         # 25개 조향각 샘플링

7. move_base_params.yaml

위치: ~/ouster_ws/src/LIO-SAM/config/navigation/move_base_params.yaml

주요 기능:

  • 네비게이션 전체 제어: 전역/지역 경로계획기 조합 설정
  • 복구 동작: 막다른 길에서 벗어나는 방법 정의
  • 성능 최적화: 각 컴포넌트의 실행 빈도 조절

핵심 설정:

base_global_planner: "global_planner/GlobalPlanner"  # A* 알고리즘
base_local_planner: "dwa_local_planner/DWAPlannerROS" # DWA 알고리즘
controller_frequency: 10.0  # 초당 10회 제어 명령 생성
planner_frequency: 1.0      # 초당 1회 전역 경로 재계획

8. navigation_only.launch (선택사항)

위치: ~/ouster_ws/src/LIO-SAM/launch/navigation_only.launch

주요 기능:

  • 단계별 실행용: LIO-SAM과 Navigation을 별도로 실행할 때 사용
  • 디버깅 편의: 문제 발생 시 개별 컴포넌트 테스트 가능
  • 리소스 관리: 필요에 따라 선택적 실행

🔄 전체 동작 흐름

1. LIO-SAM (SLAM) → 위치추정 + 맵 생성
   ↓
2. pointcloud_to_laserscan → 3D 데이터를 2D로 변환  
   ↓
3. costmap → 장애물 맵 생성
   ↓
4. global_planner → 전체 경로 계획
   ↓
5. dwa_local_planner → 실시간 장애물 회피
   ↓
6. /cmd_vel → Hunter 차량 제어

🎯 각 파일의 역할 요약

파일주요 역할Hunter 특화 요소
launch 파일들시스템 실행 및 조합기존 LIO-SAM과 통합
robot.urdf.xacro차량 모델링Hunter 실제 크기/바퀴 위치
costmap 파일들장애물 인식Hunter 발자국 크기
dwa_planner실시간 제어Hunter 속도/가속도 제한
move_base전체 조율차량용 알고리즘 선택

이렇게 각 파일이 서로 협력하여 Hunter 차량의 완전한 자율주행 시스템을 구성합니다! 🚗

profile
지금까지 해온 여러 활동들을 간략하게라도 정리해보고자 합니다.

0개의 댓글