Our system is attempting to use rtabmap to map and localize with a 2D Lidar and a pair of Realsense cameras (a D435 and a T265). Rtabmap also receives odom info from a state estimator (we feed our robot's imu and odometry topics into robot_localization, which outputs to /odometry/filtered). As far as we can tell, /odometry/filtered outputs its data fine. When viewing the camera feeds via RealsenseViewer, they display fine. Lidar produced point-clouds seem to be produced correctly as well.
The issue we still run into is that rtabmap will repeatedly fail on its odometry, as indicated in its GUI when the odometry panel flashes red every two or three seconds. Looking at the live map being produced confirms that the mapping is failing (see the screenshot attached). We have also tried using a 3D Lidar, to no different effect.
Additionally, we get this warning during run time: [ WARN] [1565188919.498007946]: Could not get transform from RLodom to base_link after 0.400000 seconds (for stamp=1565188919.076626)! Error="Could not find a connection between 'RLodom' and 'base_link' because they are not part of the same tree.Tf has two or more unconnected trees.. canTransform returned after 0.402265 timeout was 0.4.". [ WARN] (2019-08-07 10:42:00.006) Memory.cpp:810::addSignatureToStm() Very large angular variance (8.190147) detected! Please fix odometry twist covariance, otherwise poor graph optimizations are expected and wrong loop closure detections creating a lot of errors in the map could be accepted. [ INFO] [1565188920.017104185]: rtabmap (567): Rate=1.00s, Limit=0.700s, RTAB-Map=0.0554s, Maps update=0.0019s pub=0.0002s (local map=106, WM=106). roswtf produces this output: "WARNING The following nodes are unexpectedly connected: * /cam_d435/realsense2_camera_manager->/rtabmap/rtabmapviz (/tf_static) * /cam_d435/realsense2_camera_manager->/rtabmap/rtabmap (/tf_static) * /cam_t265/realsense2_camera_manager->/rtabmap/rtabmap (/tf_static) * /cam_t265/realsense2_camera_manager->/rtabmap/rtabmapviz (/tf_static) WARNING These nodes have respawned at least once: * microstrain_comm_35-3 (2) WARNING Received out-of-date/future transforms: * receiving transform from [/imu_filter] that differed from ROS time by 1.447143925s * receiving transform from [/cam_t265/realsense2_camera_manager] that differed from ROS time by 1.091286898s * receiving transform from [/odom2] that differed from ROS time by 1.446536843s" Our source code is below:
Thank you in advance for any help! |
Administrator
|
Hi,
Can you show your TF tree ("$ rosrun tf view_frames")? Are there multiples nodes publishing the same TF? The TF tree seems broken: Red screens mean that rtabmap received null odometry. Are values in /odometry/filtered always valid? For warning like "Very large angular variance (8.190147) detected!", you may fix the covariance yourself to avoid this problem coming from robot_localization. This can be done by using Tf for odometry instead of the topic. To do so, add the following under rtabmap node: <param name="odom_frame_id" type="string" value="RLodom"/> <!-- the fixed frame used by robot_localization --> <param name="odom_tf_angular_variance" type="double" value="0.0005"/> <param name="odom_tf_linear_variance" type="double" value="0.0001"/> <!-- 1 cm stddev error --> As you are also synchronizing with a lidar, another suggestion is to use rgbd_sync node to presync the images together before rtabmap node, like in this example. Also, "RGBD/LoopClosureReextractFeatures" can be removed in recent versions. cheers, Mathieu |
Free forum by Nabble | Edit this page |