롤롤하
[Isaac Sim + ROS2] 2D LiDAR Cartographer SLAM 본문
안녕하세요. 저번 글에서 Isaac Sim에서의 2D Lidar 사용에 대해 공유하였는데 오늘은 2D Lidar 구성과 라이다를 이용한 Cartographer SLAM을 함께 다루어볼까 합니다.
https://cafe.naver.com/isaacsimkr?iframe_url=/MyCafeIntro.nhn%3Fclubid=31363662
1. 환경 셋업
1.1. aws_robo_maker 불러오기
RoboMaker에서 모델을 불러오기 위해 Isaac Asset에 aws를 검색한 후 로봇을 추가합니다.

1.2. 2D Lidar Sensor 추가
1) Create - Pysics = Sensors - PhysX Lidar - Rotating을 클릭하여 2D LiDAR sensor를 추가합니다.
2) Lidar를 기존 jetbot의 scan xform의 이름을 base_scan으로 수정한 후 Lidar를 해당 xform안에 포함시켜 줍니다.
3) (옵션) Lidar의 properties에서 Lidar의 관련 설정들을 수정합니다.


4) 3)번의 drawLines를 체크하셨다면 플레이버튼을 눌러 실제 라이다가 작동하는지 확인합니다.

2. ROS2를 위한 Omnigraph 추가
2.1. Isaac Read Lidar Beams Node 추가
1. Prim 설정
- lidar를 검색 후 클릭하여 Read Lidar Beams Node를 생성합니다.
2.2. ROS2 Publish Laser Scan 추가
1. Isaac Read Lidar Beams Node와 연결
- Read Lidar Beams Node에서 수집한 데이터를 ROS2 Publish Laser Scan 노드와 연결합니다.
2. frame ID 설정 변경
- base_scan으로 변경 (추후 `tf` 관리 시 필요)

2.3. ROS2 Rviz2 실행
이제 rviz2를 실행시켜 라이다가 정상적으로 publish 되는지 확인합니다.

3. ROS2 Cartographer SLAM을 위한 Omnigraph 추가
SLAM을 진행하기 위해서는 기본적으로 cmd_vel, ros_clock, odometry 그래프가 추가적으로 필요합니다.
이 중 cmd_vel과 ros_clock은 기존의 글을 따라하시면 무리 없이 진행 가능하십니다.
3.1. cmd_vel Graph
https://cafe.naver.com/isaacsimkr?iframe_url=/MyCafeIntro.nhn%3Fclubid=31363662
3.2. ROS_Clock Graph
https://cafe.naver.com/isaacsimkr?iframe_url=/MyCafeIntro.nhn%3Fclubid=31363662
3.3 odometry Graph
Odometry 그래프의 추가 방법은 생각보다 매우 간단합니다.
1) Isaac Util - Common Omnigraphs - ROS2 Odometry Publisher 클릭
2) Robot Articulation Root : aws_robomaker_jetbot, Chassis Link Prim : base_link 선택 후 OK


진행하시면 Graph/ROS_Odometry가 생기신걸 확인하실 수 있습니다. 그래프를 열어 확인하시면

가장 위의 그래프인 TFWorld2Odom 그래프를 삭제해줍니다. 저희는 map <-> odom을 cartographer로 진행할 것이기 때문에 크게 필요가 없는 노드 입니다.
이후 그대로 진행하시면 됩니다.
참고로 삭제한 노드를 제외한 3개의 노드는 위에서 부터
1. 로봇의 tf를 자동으로 발행해주는 노드
2. /odom topic을 publish해주는 노드
3. odom과 base_link tf 관계를 발행해주는 노드
역할입니다. 다음에 기회가 된다면 더 자세히 다룰 수 있도록 하겠습니다.
해당 과정을 진행해주셨다면 isaac_sim에서 할 일은 다 끝났습니다.
4. Test를 위한 Cartographer SLAM Package 설치
정상작동 테스트를 위하여 Turtlebot3의 cartographer SLAM을 설치 후 실행하겠습니다.
1. 패키지 설치
sudo apt install ros-humble-turtlebot3-cartographer
2. 실행파일 수정 (기존 추적 frame을 imu_link에서 base_link로 수정)
sudo nano /opt/ros/humble/share/turtlebot3_cartographer/config/turtlebot3_lds_2d.lua
해당 파일에서 imu_link를 base_link로 변경한 후 저장(`CTRL+O`, `CTRL+X`)합니다.

3. SLAM 실행
ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True

LoopClosure까지 잘 작동하는 모습이네요 ㅎㅎ
이번 작업을 통해 2D LiDAR 설정과 Cartographer SLAM을 직접 다뤄보았습니다.
- LiDAR 센서를 추가한 후
- LiDAR 관련 Omnigraph를 제작하여
- ROS 2와 연동 및 SLAM을 적용하는 과정을 거쳤습니다.
혹시 이 과정에서 추가로 궁금한 점이 있거나 더 효율적인 방법이 있다면 의견을 나누면 좋겠습니다!
다음 글에서는 기회가 된다면 V-SLAM을 주제로 찾아뵙겠습니다.~
'Isaac Sim' 카테고리의 다른 글
| [Isaac Sim + ROS2] Depth Camera를 이용한 RGB-D SLAM RTAB-Map 구현 (0) | 2025.03.03 |
|---|---|
| [Isaac Sim + ROS2] LIO-SAM (LiDAR Inertial Odometry SLAM) 구현 (3) | 2025.02.23 |
| [Isaac Sim + ROS2] Wheel Slip과 2D Odometry (0) | 2025.02.19 |
| [Isaac Sim + ROS2] ROS2 카메라 프레임 드랍 개선 (WSL2) (5) | 2025.02.12 |