Aruco Marker Landmarks error in Localisation after good mapping.

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Aruco Marker Landmarks error in Localisation after good mapping.

Mike.Hallettuk@gmail.com
Been using RTABmap for ~ a year now... all good. Now tried the Aruco Marker Landmarks which seemed to work well for mapping, showing my three Landmarks recognised etc... Then with same params but in Localisation mode, I get these errors:
[ WARN] (2022-08-13 10:36:47.509) RegistrationIcp.cpp:552::computeTransformationImpl() ICP PointToPlane ignored as structural complexity cannot be computed (from=0.000000 to=0.000000)!? PointToPoint is done instead.
[ WARN] (2022-08-13 10:36:47.509) RegistrationIcp.cpp:687::computeTransformationImpl() libpointmatcher icp...temporary maxDist=0.05 (Icp/MaxCorrespondenceDistance=0.050000, Icp/VoxelSize=0.050000)
[ WARN] (2022-08-13 10:36:47.511) RegistrationIcp.cpp:816::computeTransformationImpl() not supposed to be here!
[ERROR] (2022-08-13 10:36:47.512) OptimizerG2O.cpp:890::optimize() Map: Failed adding constraint between -3 and -3, skipping
[ERROR] (2022-08-13 10:36:47.512) OptimizerG2O.cpp:890::optimize() Map: Failed adding constraint between -2 and -2, skipping
[ERROR] (2022-08-13 10:36:47.512) OptimizerG2O.cpp:890::optimize() Map: Failed adding constraint between -1 and -1, skipping
Setup is Turtlebot3 with Realsense D455, apt installed : ros-noetic-rtabmap-ros/focal,now 0.20.18-2focal.20220621.181925 amd64 [installed] params:
      <param name="RGBD/MarkerDetection"            type="string" value="true"/>      
      <param name="Marker/Dictionary"               type="string" value="10"/>
      <param name="Marker/Length"                   type="string" value="0.1705"/>
      <param name="Marker/MaxRange"                 type="string" value="2.5"/>            
      <param name="Marker/MinRange"                 type="string" value="0.35"/> 
I have a small .db example (88Mb) if it would be useful ? Any advice please. Thanks, Michael Hallett.
Reply | Threaded
Open this post in threaded view
|

Re: Aruco Marker Landmarks error in Localisation after good mapping.

matlabbe
Administrator
Hi,

The ICP warning is about failing to get appropriate normals, falling back to PointToPoint matching. There is maybe something wrong with the input scans. If you have a db, always useful to share it. Anyway, I think the transform was still computed.

For the landmark constraint errors, this is strange. I would need to test in localization mode to try to reproduce the error. Which package did you use for aruco marker detection?

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Aruco Marker Landmarks error in Localisation after good mapping.

Mike.Hallettuk@gmail.com
Thanks: now revisiting this with RTAB-Map version = 0.20.21

I use no "package for aruco marker detection" ( but markers are aruco_detect based).  I just set params in RTAB-Map and it now seems to work fine both in mapping and localisation.  Markers are detected well in rtabmapviz.

Still getting loop closure icp errors, (and ARUCO markers do not seem to help to remove these) e.g. in db downloadable from here at:  https://drive.google.com/file/d/1ljo05eKDJ8a7hxtJey4OZLxOEMgipqyk/view?usp=sharing 

typical erros =

[ INFO] [1668037684.773586831]: rtabmap (563): Rate=0.33s, Limit=0.000s, Conversion=0.0010s, RTAB-Map=0.5541s, Maps update=0.0132s pub=0.0000s (local map=494, WM=491)
[ WARN] (2022-11-10 10:48:04.782) MainWindow.cpp:1923::processStats() Processing time (0.549191s) is over detection rate (0.333333s), real-time problem!
[ WARN] (2022-11-10 10:48:05.013) RegistrationIcp.cpp:552::computeTransformationImpl() ICP PointToPlane ignored as structural complexity cannot be computed (from=0.000000 to=0.000000)!? PointToPoint is done instead.
[ WARN] (2022-11-10 10:48:05.013) RegistrationIcp.cpp:687::computeTransformationImpl() libpointmatcher icp...temporary maxDist=0.05 (Icp/MaxCorrespondenceDistance=0.050000, Icp/VoxelSize=0.050000)
[ WARN] (2022-11-10 10:48:05.018) RegistrationIcp.cpp:816::computeTransformationImpl() not supposed to be here!
[ WARN] (2022-11-10 10:48:05.358) Rtabmap.cpp:3560::process() Rejecting all added loop closures (1, first is 564 <-> 541) in this iteration because a wrong loop closure has been detected after graph optimization, resulting in a maximum graph error ratio of 3.016655 (edge 379->380, type=0, abs error=5.465732 deg, stddev=0.031623). The maximum error ratio parameter "RGBD/OptimizeMaxError" is 2.500000 of std deviation.
[ WARN] (2022-11-10 10:48:05.358) Rtabmap.cpp:3585::process() Loop closure 564->541 rejected!
[ INFO] [1668037685.375852705]: rtabmap (564): Rate=0.33s, Limit=0.000s, Conversion=0.0011s, RTAB-Map=0.5886s, Maps update=0.0114s pub=0.0000s (local map=494, WM=491)
Reply | Threaded
Open this post in threaded view
|

Re: Aruco Marker Landmarks error in Localisation after good mapping.

matlabbe
Administrator
Hi,

The issue with ICP is that the scan format in the database is XYZ, instead of XY for 2d scans. Because of this, normals are computed wrongly assuming the scan is 3D. Normally, rtabmap_ros should generate XY format from sensor_msgs::LaserScan topics, then normals will be generated in 2D instead of 3D. If you are feeding a sensor_msgs::LaserScan topic, can you share the launch file you used for rtabmap node? There could be a bug here. However, if you are feding a sensor_msgs::PointCloud2, you would need to remove the Z channel before feeding it to rtabmap so that the scan is considered 2D.

cheers,
Mathieu