[ROS] ORB SLAM 실습

HEEJOON MOON·2023년 1월 9일
0

ROS

목록 보기
4/5
post-thumbnail

이번 포스트에서는 ORB SLAM2 패키지를 이용하여 monocular SLAM을 진행하고자 합니다.

Procedure

1) 먼저 ORB-SLAM2 를 catkin_ws/src 에 다운받습니다.

# Move to catkin_ws/src
$ cd catkin_ws/src

# Download 
$ git clone https://github.com/appliedAI-Initiative/orb_slam_2_ros.git

2) 이 떄 주의해야 할 사항으로는, 배포된 코드에 error가 있으므로 이를 수정해주어야 합니다

이를 위해서 먼저 orb_slam2_ros/orb_slam2/src에 접근합니다.

위의 Initializer.cc and ORBmatcher.cc를 수정해주어야 합니다.

  • Initializer.cc의 line 890에 접근하여, nGood를 if문 안에 다음처럼 넣어주어야 합니다

  • ORBmatcher.cc의 line 485에 factor를 (360.0f*factor)로 수정해주어야 합니다

3) 이후, catkin_make를 통해 빌드합니다.

$ cd ~/catkin_ws
$ catkin_make

4) Roscore를 실행시킨 이후, 가제보 시뮬레이터를 실행합니다. 이 때, 주의할 사항으로는 turtlebot_burger는 카메라가 장착되어 있지 않으므로, 반드시 turtlebot_waffle로 설정해주어야 합니다.

$ export TURTLEBOT3_MODEL=waffle
$ roslaunch turtlebot3_gazebo turtlebot3_house.launch

House 맵은 textureless한 visual odometry를 가지는 경우가 많아서, ORB feature extraction이 잘 안 되는 경우가 많습니다.

5) Monocular camera를 사용하는 ORB SLAM2 노드를 실행시킵니다

$ roslaunch orb_slam2_ros orb_slam2_r200_mono.launch

ORB SLAM2는 Monocular, Stereo, RGB-D camera를 이용한 방법을 제공합니다. 아래의 표를 보면 각각에 해당하는 command가 있습니다.

본 실습에서는 Monocular camera의 Default setting으로 되어있는 Intel Realsense r200의 카메라 파라미터들이 그대로 사용합니다. 실제로는 터틀봇에는 pi_camera가 설치되어 있기에, 정확한 값을 사용하는 것은 아니라고 할 수 있겠습니다.

6) RViz를 실행시킨 이후에, /orb_slam2_mono/debug_image을 subcribe하게 되면 아래와 같이 ORB features이 표현된 imageView를 살펴볼 수 있습니다

Point cloud를 visualize하기 위해서, Rviz에서 PointCloud2 메시지의 orb_slam2 토픽을 subsribe합니다.

Result

  • Texturless region
profile
Robotics, 3D-Vision, Deep-Learning에 관심이 있습니다

0개의 댓글