RGBD SLAM using Turtlebot 3's Realsense R200 camera
Hello all, I am trying to do a RGBD SLAM using Turtlebot 3 (waffle) and the Realsense R200 camera.
I have configured the R200 camera and tested it by running the following command [in TurtleBot]
$ roslaunch realsense_camera r200_nodelet_default.launch
While the realsense_camera node is running, I launched rqt_image_view
by running the following command [in Remote PC]
$ rqt_image_view
The GUI application has appeared and video stream was successful. Then I used the depth data coming from the R200 camera and displayed it as a Point Cloud in Rviz, during SLAM (using gmapping
). To do this I ran the following commands:
[In Turtlebot] Ran the realsense_camera node.
$ roslaunch realsense_camera r200_nodelet_rgbd.launch
[In TurtleBot] Ran the turtlebot3_bringup node to get data for doing SLAM
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
[In Remote PC] Ran turtlebot3_slam node to do SLAM
$ roslaunch turtlebot3_slam turtlebot3_slam.launch
and then by using the teleop
package I drove the robot and created a map. But the map that is created is actually a 2D map using the Laser Range Finder (as gmapping uses Lidar by default) and the depth info that is obtained from the R200 camera is only for demonstration purposes, i.e. it is not actually used to create the map. Then I decided to try the RTAB-MAP
package to do the RGB-D SLAM. So I followed the steps given in RGB-D Handheld Mapping. I started by installing rtabmap_ros
$ sudo apt-get install ros-kinetic-rtabmap-ros
and then I ran
$ roscore
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
$ roslaunch realsense_camera r200_nodelet_rgbd.launch
// To get registration without empty lines
$ rosrun rtabmap_ros pointcloud_to_depthimage cloud:=/camera/depth/points camera_info:=/camera/rgb/camera_info image_raw:=/camera/depth/points/image_raw image:=/camera/depth/points/image _approx:=false _fill_holes_size:=2
// Launch (rtabmapviz):
$ roslaunch rtabmap_ros rtabmap.launch rtabmap_args:="--delete_db_on_start"
// For R200
$ roslaunch rtabmap_ros rtabmap.launch rtabmap_args:="--delete_db_on_start" depth_topic:=/camera/depth_registered/sw_registered/image_rect_raw
// Using depth registered from `rtabmap_ros/pointcloud_to_depthimage`
$ roslaunch rtabmap_ros rtabmap.launch rtabmap_args:="--delete_db_on_start" depth_topic:=/camera/depth/points/image_raw /camera/color/camera_info
The RTAB-MAP interfaces launches successfully but nothing appears in the GUI and the following Warning is given:
[ WARN] [1500890325.598924032]: /rtabmap/rtabmapviz: Did not receive data since 5 seconds! Make sure the input topics are published ("$ rostopic hz my_topic") and the timestamps in their header are set. If topics are coming from different computers, make sure the clocks of the computers are synchronized ("ntpdate"). Parameter "approx_sync" is false, which means that input topics should have all the exact timestamp for the callback to be called. /rtabmap/rtabmapviz subscribed to (exact sync): /rtabmap/odom, /stereo_camera/left/image_rect_color, /stereo_camera/right/image_rect, /stereo_camera/left/camera_info, /stereo_camera/right/camera_info, /rtabmap/odom_info
At this point I am a little bit confused and hence I am seeking guidance. Please, help me.
I am using ROS Kinect. Ubuntu 16.04. 64-bit machine.