empty keopint, 3d point, descriptor in CoreWrapper::commonMultiCameraCallbackImpl() with rgbd mode and rgbd_sync set false
I want to reduce the computational load, so I set the following parameters in the hope of reusing the feature points and descriptors from rgbd_odometry in rtabmap_slam, instead of extracting them again. However, I found that this does not work. The reason is that the function CoreWrapper::commonMultiCameraCallbackImpl() receives empty feature points, descriptors, and other related data.
--Vis/MaxFeatures 800 \
--Vis/FeatureType 6 \
--Kp/DetectorStrategy 6 \
--RGBD/LoopClosureReextractFeatures false \
--Mem/UseOdomFeatures true \
rtabmap:="--Kp/MaxFeatures 800" \
while I set rgbd_sync true, there is two topic rgbd_image and odom_rgbd_image, what's difference? it seems that odom_rgbd_image has keypoints,but in the code rtabmap_ros/rtabmap_sync/src/impl/CommonDataSubscriberRGBD.cpp rgbdSubs_[0]->subscribe(&node, "rgbd_image", rclcpp::QoS(topicQueueSize_).reliability(qosImage_).get_rmw_qos_profile(), options);, it seems rgbdSubs_[0] can't get keypoints even set rgbd_sync true. can i change rgbd_image to odom_rgbd_image here? How can I reuse odometry keypoints while rgbd_sync set false?
The odom_rgbd_image will include the features extracted by VO. You should connect this topic to rtabmap if you want to use --Mem/UseOdomFeatures true of rtabmap node (with 'subscribe_rgbd': True). This is what we do in this example:
https://github.com/introlab/rtabmap_ros/blob/d336369ca4ac4f979ed2836658137acf3b3677c2/rtabmap_examples/launch/rgbdslam_datasets.launch.py#L66-L69
When you refer to rgbd_sync, do you mean the argument of rtabmap.launch.py file? If so, there is currently no option in that launch file to use vo features (without hard-coding it here with ("rgbd_image", "odom_rgbd_image",). You will need to create your own launch file with the minimal nodes you need. See examples here: https://github.com/introlab/rtabmap_ros/tree/ros2/rtabmap_examples/launch