[ROS2] Localization 실습, neuronbot2 활용

TaerinLog·2025년 10월 30일

선행 작업

  1. 필요한 지도 작성 및 패키지 내부에 지도 저장 (pgm, yaml파일)

  2. ros2 패키지 빌드

cd ~/nav2_ws
colcon build --symlink-install --packages-select neuronbot2_nav
source install/setup.bash

Localization 수행

1. 런치파일의 맵 정보 수정

  • 경로 : ~/nav2_ws/src/neuronbot2/neuronbot2_nav/launch/localization_launch.py
    my_map_file = 'small_house.yaml'

2. gazebo 가상환경에 neuronbot2 스폰

  • ros2 launch neuronbot2_gazebo neuronbot2_world.launch.py

3. AMCL 기반의 Localization 시작

  • ros2 launch neuronbot2_nav localization_launch.py use_sim_time:=true
  • AMCL은 파티클 필터 기반으로 로봇 위치를 추정
  • 파티클들이 로봇 주변에 흩어져서 이동하면서 수렴하는 모습을 볼 수 있음

4. (RViz2) AMCL 파티클을 확인하기 위해 particle_cloud 추가

  • rviz2 오픈
cd ~/nav2_ws/src/neuronbot2/neuronbot2_nav/rviz
rviz2 -d nav2_default_view.rviz

5. AMCL 수행을 위한 로봇 제어 시작

  • ros2 run teleop_twist_keyboard teleop_twist_keyboard
  • 2D Pose Estimate 버튼으로 로봇의 초기 위치 설정
  • 사진을 보면 빨간 점선들이 맵을 제대로 확인하지 못하는걸 볼 수 있음
  • 로봇을 움직이다 보면 파티클들이 움직이면서 빨간 점선들이 맵의 위치를 찾아가며 Localization이 수행되는 모습을 확인 할 수 있음

초기위치가 실제 로봇의 위치와 멀거나, 방향이 맞지 않는다면?

초기 위치가 실제 로봇과 많이 다르거나 방향이 맞지 않으면 Localization이 제대로 수행되지 않는 것을 확인하였다.
따라서 실제 로봇과 초기 위치를 신중하게 설정해야 함을 알 수 있었다.

profile
taerin

0개의 댓글