map_server 노드localization 알고리즘을 수행하는 노드lifecycle_manager 노드시뮬레이션 환경(bookstore)에 neuronbot2을 spawn
ros2 launch neuronbot2_gazebo neuronbot2_world.launch.py

맵핑한 지도를 localization에 활용하기 위해, neuronbot2_nav 패키지의 localization_launch.py 파일을 수정
...
def generate_launch_description():
# Get the launch directory
my_nav_dir = get_package_share_directory('neuronbot2_nav')
my_param_dir = os.path.join(my_nav_dir, 'param')
my_param_file = 'neuronbot_params.yaml'
my_map_dir = os.path.join(my_nav_dir, 'map')
**my_map_file = 'bookstore.yaml'**
...
AMCL 기반 Localization 수행을 위해 아래 런치 파일 시작
ros2 launch neuronbot2_nav localization_launch.py use_sim_time:=true
Rviz2로 Localization 상황 확인
cd ~/nav2_ws/src/neuronbot2/neuronbot2_nav/rviz
rviz2 -d nav2_default_view.rviz
이제 지도에서 로봇의 초기 위치를 설정합니다. 2D Pose Estimate 버튼을 클릭한 후 다음 시뮬레이터 상에서 로봇의 실제 위치에 해당하는 위치와 방향을 클릭해줍니다.

언급드렸던 것 처럼 AMCL은 map → odom 프레임의 변환을 담당합니다. 그 변환에 집중하기 위해 TF 디스플레이 설정에서 base_footprint, map, odom 프레임만 볼 수 있도록 체크해줍니다.

그런 다음 키보드로 로봇을 움직여 AMCL이 새 로봇 위치에 어떻게 적응하는지 관찰합니다. 가장 가능성이 높은 로봇 위치에 파티클이 집중되면서 Localization에 성공하는 것을 볼 수 있습니다.
ros2 run teleop_twist_keyboard teleop_twist_keyboard


