Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Go2 Nav2 자율주행 실행 가이드

Fast-LIO2 odom + slam_toolbox 2D 맵 + Nav2 자율주행 + RealSense RGBD.

사전 조건

  • 로봇이 기립(Sport Mode) 상태
  • NUC ↔ Go2 유선 연결 (enp86s0, 192.168.123.99)
  • NUC ↔ MID360 LiDAR 유선 연결 (enp86s0, 192.168.1.50)
  • RealSense USB 연결
  • 도커 컨테이너 실행 중 (ID 21)

공통 준비 (컨테이너 진입 전, 호스트에서)

# X11 권한 (GUI용)
xhost +local:root

# Go2 IP 추가 (재부팅 후 매번)
sudo ip addr add 192.168.123.99/24 dev enp86s0

# 컨테이너 진입
docker exec -it 21 bash

1단계: 매핑

터미널 1 — 매핑 런치 (센서+Fast-LIO+브릿지+SLAM+RealSense 전부 포함)

export ROS_DOMAIN_ID=1 && source /root/ws/install/setup.bash
ros2 launch /root/ws_host/src/go2_mapping.launch.py

Go2 cmd_vel bridge ready., RealSense Node Is Up! 로그 확인

터미널 2 — RViz2 시각화

export DISPLAY=:0 && export ROS_DOMAIN_ID=1 && source /root/ws/install/setup.bash
LIBGL_ALWAYS_SOFTWARE=1 rviz2 -d /root/ws_host/src/go2_mapping.rviz

터미널 3 — 텔레옵 (로봇 조종)

export ROS_DOMAIN_ID=1 && source /root/ws/install/setup.bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard
  • i 전진 / , 후진 / j 좌회전 / l 우회전 / k 정지
  • z 속도 감소 — 천천히 움직일수록 맵 품질 향상
  • 여러 번 돌고 출발점 복귀하면 루프 클로저로 맵 보정

터미널 4 — RealSense 영상 녹화 (선택)

mkdir -p /root/recordings
export DISPLAY=:0 && export ROS_DOMAIN_ID=1 && source /root/ws/install/setup.bash
python3 /root/ws_host/src/record_rgb.py

/root/recordings/run_<timestamp>.mp4 저장. Ctrl+C로 종료

터미널 5 — 맵 저장 (충분히 돌아다닌 후)

export ROS_DOMAIN_ID=1 && source /root/ws/install/setup.bash

# 1. 표준 pgm/yaml (Nav2 map_server용)
ros2 run nav2_map_server map_saver_cli -f /root/maps/my_map

# 2. slam_toolbox posegraph (localization 모드용)
ros2 service call /slam_toolbox/serialize_map slam_toolbox/srv/SerializePoseGraph "{filename: '/root/maps/my_map'}"

/root/maps/my_map.pgm, my_map.yaml, my_map.posegraph, my_map.data 4개 파일 생성. 매핑 launch는 켜둔 상태에서 저장


2단계: 자율주행 네비게이션

전제조건: 1단계에서 .pgm, .yaml, .posegraph, .data 4개 파일 모두 저장되어 있어야 함.

터미널 1 — Nav2 런치 (Fast-LIO + slam_toolbox localization + Nav2)

export ROS_DOMAIN_ID=1 && source /root/ws/install/setup.bash
ros2 launch /root/ws_host/src/go2_nav2.launch.py map:=/root/maps/my_map.yaml

→ Fast-LIO 시작 15초 후 Nav2 기동. All nodes activated 로그 확인

터미널 2 — RViz2 (Nav2 뷰)

export DISPLAY=:0 && export ROS_DOMAIN_ID=1 && source /root/ws/install/setup.bash
LIBGL_ALWAYS_SOFTWARE=1 rviz2 -d /opt/ros/humble/share/nav2_bringup/rviz/nav2_default_view.rviz

터미널 3 — 녹화 (선택)

python3 /root/ws_host/src/record_rgb.py

RViz2 사용

  1. 2D Pose Estimate 버튼 → 맵에서 로봇 실제 위치 클릭 + 드래그(방향)
  2. Nav2 Goal 버튼 → 가고 싶은 곳 클릭 + 드래그(방향)
  3. 로봇이 자동으로 경로 따라 이동

검증 (매핑 시작 전)

# TF 확인: LiDAR 마운트 위치 정상인지
ros2 run tf2_ros tf2_echo base_link livox_frame

# 토픽 발행 확인
ros2 topic hz /Odometry          # Fast-LIO (~10Hz)
ros2 topic hz /livox/lidar       # LiDAR (~10Hz)
ros2 topic hz /scan              # 2D 스캔
ros2 topic list | grep camera    # RealSense 토픽

RViz2에서 **Fixed Frame을 base_link**로 바꾸면 로봇이 중심 고정되어 스캔이 벽에 정확히 맞는지 육안 확인 가능.


파일 목록

파일 역할
src/go2_bringup.launch.py 공통 bringup (LiDAR+Fast-LIO+URDF+RealSense+브릿지)
src/go2_mapping.launch.py 매핑 모드 (bringup + slam_toolbox)
src/go2_nav2.launch.py 네비게이션 모드 (bringup + Nav2)
src/go2_ros2_bridge.py /cmd_vel → Go2 SportClient.Move() 변환
src/record_rgb.py RealSense RGB → MP4 녹화
src/config/fast_lio_mid360.yaml Fast-LIO2 파라미터
src/nav2_params_go2.yaml Nav2 파라미터
src/go2_mapping.rviz RViz2 매핑 디스플레이 설정
/root/maps/ 저장된 맵
/root/recordings/ 녹화된 영상

아키텍처

MID360 → livox_ros_driver2 → /livox/lidar, /livox/imu
                                    ↓
                               Fast-LIO2
                               ├→ /Odometry
                               ├→ TF: camera_init→body
                               └→ /cloud_registered_body
                                           ↓
                              pointcloud_to_laserscan → /scan
                                           ↓
                   slam_toolbox(매핑) / AMCL(네비) → TF: map→odom
                                           ↓
                                     Nav2 → /cmd_vel
                                           ↓
                   go2_ros2_bridge → SportClient.Move() → Go2

Go2 URDF (go2_description) → robot_state_publisher → TF 트리

RealSense → realsense2_camera → /camera/camera/*
                                    ↓
                          record_rgb.py → .mp4

좌표 체계

map → odom → camera_init → body (MID360 IMU 위치, Fast-LIO가 추적)
                              └→ base_link (로봇 몸통 중심, body에서 30cm 뒤)
                                    ├→ base (URDF 루트)
                                    │    └→ 다리/머리/... (URDF)
                                    ├→ livox_frame (외장 LiDAR)
                                    └→ camera_link (RealSense)

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages