Posted by
matlabbe on
URL: http://official-rtab-map-forum.206.s1.nabble.com/RTABMAP-Multi-RGBD-Camera-Error-tp11093p11123.html
For the rviz errors, make sure to launch rviz with use_sim_time:=true.
The second error says vo is lost (quality=0). note that if you have wheel odometry available, you may try that first in simulation, because with textureless simulated environment, it would be always be very challenging for any VO approaches.
for your question
GGYU wrote
I want to perform 2D grid-based mapping using LIDAR scan data (as in turtlebot3_sim_rgbd_scan demo),
while utilizing 3 RGB-D cameras solely for:
Detecting ArUco markers (for loop closure or localization refinement),
Extracting and matching visual features for visual loop closure optimization.
Yes, that is possible. If rtabmap node has subscribe_scan:=true, you can feed it a laser scan topic at the same time than the rgbd_image topics, similar to that example
https://github.com/introlab/rtabmap_ros/tree/ros2/rtabmap_demos#turtlebot3-nav2-2d-lidar-and-rgb-d-slam. By default it will construct the 2D occupancy grid map form the laser scan. The images will be used for loop closure detection. For the ArUco tags, either you enable RGBD/MarkerDetection with appriopriate Marker/Dictionary:
Param: Marker/Dictionary = "0" [Dictionary to use: DICT_ARUCO_4X4_50=0, DICT_ARUCO_4X4_100=1,
DICT_ARUCO_4X4_250=2, DICT_ARUCO_4X4_1000=3, DICT_ARUCO_5X5_50=4, DICT_ARUCO_5X5_100=5,
DICT_ARUCO_5X5_250=6, DICT_ARUCO_5X5_1000=7, DICT_ARUCO_6X6_50=8, DICT_ARUCO_6X6_100=9,
DICT_ARUCO_6X6_250=10, DICT_ARUCO_6X6_1000=11, DICT_ARUCO_7X7_50=12, DICT_ARUCO_7X7_100=13,
DICT_ARUCO_7X7_250=14, DICT_ARUCO_7X7_1000=15, DICT_ARUCO_ORIGINAL = 16, DICT_APRILTAG_16h5=17,
DICT_APRILTAG_25h9=18, DICT_APRILTAG_36h10=19, DICT_APRILTAG_36h11=20]
or connect fiducial_msgs::msg::FiducialTransformArray or apriltag_msgs::msg::AprilTagDetectionArray topic (from your external tag detector node) to rtabmap node.
For the Parameters, if you shared the Parameters.h file is because you hard-coded your change in it? You should not touch Parameters.h to change parameters, that is a waste of compilation time and make it difficult to see what you changed. Override parameters by using ROS arguments or ROS parameters approach instead in your ROs launch file. See
this for example.
parameters={
[...]
# RTAB-Map's parameters should be strings:
'Reg/Strategy':'1',
'Reg/Force3DoF':'true',
'RGBD/NeighborLinkRefining':'True',
'Grid/RayTracing':'true', # Fill empty space
'Grid/3D':'false', # Use 2D occupancy
'Grid/RangeMax':'3',
'Grid/NormalsSegmentation':'false', # Use passthrough filter to detect obstacles
'Grid/Sensor':'2', # Use both laser scan and camera for obstacle detection in global map
'Grid/MaxGroundHeight':'0.05', # All points above 5 cm are obstacles
'Grid/MaxObstacleHeight':'0.4', # All points over 1 meter are ignored
'Grid/RangeMin':'0.2', # ignore laser scan points on the robot itself
'Optimizer/GravitySigma':'0' # Disable imu constraints (we are already in 2D)
}