ROS

[ROS2] Nav2를 사용한 자율주행 테스트

소-은 2025. 3. 4. 16:54
728x90

환경: Ubuntu 22.05

ros2 humble 

 

이전 글에 이어 Nav2를 사용해서 Navigating을 실제로 하려고 한다.

https://2nnsv.tistory.com/223

 

[ROS2] Cartographer SLAM

환경: Ubuntu 22.05 ros2 humble  먼저 navigation2를 사용하기 위해서 아래 명령어를 통해 필요한 패키지를 설치한다.sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup 가제보로 시뮬레이션을 돌리고 싶

2nnsv.tistory.com

 

 

먼저 환경 변수 설정을 해준다.

source /opt/ros/humble/setup.bash 
export TURTLEBOT3_MODEL=waffle

 

 

하던 중에 아래와 같은 오류가 발생했다. 실제로 frame을 찍어보면 odom이 없다.

local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist.

 

찾아보니 gazebo 환경설정도 해주어야 한다.

export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/humble/share/turtlebot3_gazebo/models
source /usr/share/gazebo/setup.bash

 

 

이제 실행해보자. 아래 명령어를 실행하면 rviz와 gazebo가 자동적으로 실행될 것이다.

ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False

 

 

1. Rviz의 상단부에 2D Pose Estimate로 로봇의 초기 위치를 설정해주어야 한다.

마음대로 설정하는게 아니라 gazebo 로봇의 현재 위치에 맞게 설정해야 한다. 2D Pose Estimate를 누른 다음, 지도 내 한 군데를 클릭하면 설정된다. 이렇게 설정하지 않고 마음대로 설정하면 gazebo에서의 위치와 rviz에서의 위치가 얽히면서 제대로 동작하지 않는다.

 

2. Rvix의 상단부에 Nav2 Goal을 사용해 로봇의 목표 위치를 설정해준다.
본인이 설정한 초기 위치에서 목표 위치까지 알아서 이동하는 것을 확인할 수 있다.

 

728x90