-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Wrong point cloud origin when accumulating data of different sensors #947
Wrong point cloud origin when accumulating data of different sensors #947
Comments
I believe your urdf config is incorrect. |
Well, the sensor positions are fairly OK as set in the urdf (I did not yet calibrate the sensor positions. It seems that point clouds of multiple measurements are accumulated together and then joined with the map assuming that all data are originating from the same origin which is not the case. |
No, cartographer_ros queries tf and transforms the data to the tracking frame. For more help, please give more details on your config following the issue template https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/.github/ISSUE_TEMPLATE |
Cartographer makes the occupancy grid insertions by rays from the return point to the single tracking frame origin. |
Yes, that's what I mean. |
If it is true that Cartographer makes the occupancy grid insertions by rays from the return point to the single tracking frame origin rather than to their respective ray origins, should we not classify this as a bug? |
Just some context, the |
I think the answer is no. We are also experiencing the same problem as #1242 and just tested the latest cartographer/cartographer_ros yesterday to find the problem being still alive. |
This does seem to be a very severe bug - any robot which has either of
will have freespace calculated incorrectly by cartographer. I think this might take a fair bit of work to fix, however, because you can no longer take the approach of "convert all data to the tracking frame and then deal with it". Instead, each scan will need to keep some information about its origin. |
Adds the laser ray origin to `RangefinderPoint` to enable correct raytracing of range data misses into a 2D probability grid also after scan accumulation. Previously, all rays were casted from their hit point to the tracking frame. This is wrong for any setup where the tracking frame is not the sensor frame and leads to artifacts in the map. Fixes: cartographer-project#947
Adds the laser ray origin to `RangefinderPoint` to enable correct raytracing of range data misses into a 2D probability grid also after scan accumulation. Previously, all rays were casted from their hit point to the tracking frame. This is wrong for any setup where the tracking frame is not the sensor frame and leads to artifacts in the map. Fixes: cartographer-project#947 Signed-off-by: Valerio Magnago <[email protected]>
Adds the laser ray origin to `RangefinderPoint` to enable correct raytracing of range data misses into a 2D probability grid also after scan accumulation. Previously, all rays were casted from their hit point to the tracking frame. This is wrong for any setup where the tracking frame is not the sensor frame and leads to artifacts in the map. Fixes: cartographer-project#947 Signed-off-by: Valerio Magnago <[email protected]>
Adds the laser ray origin to `RangefinderPoint` to enable correct raytracing of range data misses into a 2D probability grid also after scan accumulation. Previously, all rays were casted from their hit point to the tracking frame. This is wrong for any setup where the tracking frame is not the sensor frame and leads to artifacts in the map. Fixes: cartographer-project#947 Signed-off-by: Valerio Magnago <[email protected]>
Hi,
I'm going to map with four LIDARs which have some position separation. The occupancy grid (see screenshot) then gets some free-space lines drawn between e.g. sensor 1 (the upper right) and the orange data points measured by sensor 4 (the sensor most left). I think this shouldn't be the case, i.e. only free-space lines between each sensor and its own measured point cloud.
This is observed with setting
TRAJECTORY_BUILDER_2D.num_accumulated_range_data >=1
. WithTRAJECTORY_BUILDER_2D.num_accumulated_range_data = 1
, the behavior is correct, however scan matching quality is lowered then. I tested only the 2D version.The text was updated successfully, but these errors were encountered: