환경: Ubuntu 22.05
ros2 humble
먼저 navigation2를 사용하기 위해서 아래 명령어를 통해 필요한 패키지를 설치한다.
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup
가제보로 시뮬레이션을 돌리고 싶으면 아래 명령어로 설치할 수 있다.
sudo apt install ros-humble-turtlebot3*
Nav2로 맵을 만들기 전에 먼저 nav가 내 환경에서 잘 작동하도록 설정해주어야 한다.
turtlebot3 model 변수를 설정해준다.
export TURTLEBOT3_MODEL=waffle
다음 Gazebo가 제대로 작동하는지 확인해보자.
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

Gazebo가 올바르게 동작하니까 이제 Cartographer SLAM을 위한 준비가 다 되었다.
먼저 turtlebot을 켠다.
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
그리고 SLAM을 작동시킨다. 참고로, use_sim_time은 시뮬레이션을 하고 있기 때문에 Gazebo 시간을 사용해야 한다. 실제 로봇인 경우에는 사용하지 않아도 된다.
ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True
이제 로봇을 직접 움직여서 map을 그려보자. W A S D X로 조종할 수 있는데, 선속도와 각속도를 조종하기 때문에 화살표키로 제어하는 것과는 달라 주의해야 한다. a, d로 각속도를 조정, w와 x로 선속도를 조정할 수 있다.
ros2 run turtlebot3_teleop teleop_keyboard

벽에 부딪치거나 너무 빠른 속도로 이동하면 맵이 일그러지기 때문에 조심해야 한다. 나는 조종이 어려워 기둥에 부딪치기도 했다. 로봇이 더이상 움직일 수 없는 상황이라고 판단되면 아예 처음부터 다시 실행하는게 좋다. 재실행을 했지만 로봇을 움직일 수 없는 경우에는 로봇 위치를 reset 해주면 된다.
ros2 service call /reset_simulation std_srvs/srv/Empty
이제 맵이 다 만들어졌다고 판단되면, 아래 명령어를 사용해 map을 저장할 수 있다.
ros2 run nav2_map_server map_saver_cli -f my_map

'ROS' 카테고리의 다른 글
| [SLAM] Ouster 데이터셋으로 LIO-SAM 구현하기 (0) | 2025.03.05 |
|---|---|
| [ROS2] Nav2를 사용한 자율주행 테스트 (0) | 2025.03.04 |
| [ROS2] ROS 기초(Node, Package, Launch, Parameter) (0) | 2025.02.07 |