이번 프로젝트에서는 Gazebo에서 Depth 카메라를 추가하고 RTAB-Map SLAM을 활용하여 실시간 지도 작성 및 자율 주행을 구현
- orbbec astra 카메라 가제보모델을 gazebo.fuel에서 다운
- camera.xacro 및 robot_core.xacro에 링크 및 설정 추가
- vicpinky_gazebo/params/pinky_bridge.yaml depth카메라 토픽 추가
- sudo apt install ros-$ROS_DISTRO-rtabmap-ros 설치
- vicpinky_navigation/launch/rtabmap_rgbd.launch.xml 파일 추가
- 공식 예제를 참고하여 rtabmap_rgbd.launch.xml파일작성
- depth 단일로만 rtamp_slam을 실행시 맵이 꼬이는 현상이 발생
- 단순한 맵에서 시각적특징 추출의 어려움으로 오차가 누적되어 맵이 이상해지는걸로 예상
- depth와 2d lidar의 센서 데이터를 융합하는 방식으로 변경
- vicpinky_navigation/launch/rtabmap_rgbd_lidar.launch.xml 파일 추가
- 정확도가 월등히 좋아짐.
- 환경: Ubuntu 24.04, ROS2 Jazzy
- 패키지 클론:
mkdir -p ~/dev_ws cd ~/dev_ws git clone https://github.com/jongbob1918/vic_pinky_VSLAM.git
- 의존성 설치:
cd vicpinky_VSLAM rosdep install --from-paths src --ignore-src -r -y - 빌드:
cd vicpinky_VSLAM colcon build source ./install/setup.bash
-
로봇 실행:
ros2 launch vicpinky_bringup gazebo_bringupe.launch.xml use_sim_time:=True
-
SLAM 실행: 다른 터미널 열기
source ./install/setup.bash ros2 launch vicpinky_navigation rtabmap_rgbd.launch.xml -
키보드 조작 실행: 다른 터미널 열기
source ./install/setup.bash ros2 run teleop_twist_keyboard teleop_twist_keyboard
| 키 | 동작 |
|---|---|
u |
좌측 상단 이동 |
i |
전진 |
o |
우측 상단 이동 |
j |
좌측 이동 |
k |
정지 |
l |
우측 이동 |
m |
좌측 하단 이동 |
, |
후진 |
. |
우측 하단 이동 |
t |
위로 이동 (+z) |
b |
아래로 이동 (-z) |
q/z |
최대 속도 증가/감소 (10%) |
w/x |
직진 속도만 증가/감소 (10%) |
e/c |
회전 속도만 증가/감소 (10%) |
Holonomic 모드 (스트레이프 이동): Shift 키를 누른 상태에서 위의 키를 사용하세요.
- 지도 저장:
다른 터미널 열기
ros2 run nav2_map_server map_saver_cli -f <map_name>
-
로봇 실행:
ros2 launch vicpinky_bringup gazebo_bringup.launch.xml use_sim_time:=True
-
SLAM 실행: 다른 터미널 열기
source ./install/setup.bash ros2 launch vicpinky_navigation rtabmap_rgbd_lidar.launch.xml -
키보드 조작 실행: 다른 터미널 열기
source ./install/setup.bash ros2 run teleop_twist_keyboard teleop_twist_keyboard
cd vic_pinky_VSLAM/src/vicpinky_gazebo/launch/launch_sim.launch.xml code . ''' 해당 부분을 (addinedu_map.world, factory_L1.world,empty.world ) 중 하나로 변경 하고
터미널에서 colcon build source ./install/setup.bash '''
db에 자동저장 db에서 열기
# 데이터베이스 확인
ls -lh ~/.ros/rtabmap.db
# 데이터베이스 뷰어로 열기
rtabmap-databaseViewer ~/.ros/rtabmap.dbRTABMAP이 발행하는 /map 토픽을 pgm/yaml 형식으로 저장
# RTABMAP 실행 중에
ros2 run nav2_map_server map_saver_cli -f ~/my_map- Navigation2 실행:
ros2 launch vicpinky_navigation bringup_launch.xml map:=<map_name>



