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