145 lines
3.9 KiB
Lua
145 lines
3.9 KiB
Lua
-- Copyright 2016 The Cartographer Authors
|
|
--
|
|
-- Licensed under the Apache License, Version 2.0 (the "License");
|
|
-- you may not use this file except in compliance with the License.
|
|
-- You may obtain a copy of the License at
|
|
--
|
|
-- http://www.apache.org/licenses/LICENSE-2.0
|
|
--
|
|
-- Unless required by applicable law or agreed to in writing, software
|
|
-- distributed under the License is distributed on an "AS IS" BASIS,
|
|
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
-- See the License for the specific language governing permissions and
|
|
-- limitations under the License.
|
|
|
|
-- WARNING: we create a lot of X-Rays of a potentially large space in this
|
|
-- pipeline. For example, running over the
|
|
-- cartographer_paper_deutsches_museum.bag requires ~25GiB of memory. You can
|
|
-- reduce this by writing fewer X-Rays or upping VOXEL_SIZE - which is the size
|
|
-- of a pixel in a X-Ray.
|
|
VOXEL_SIZE = 5e-2
|
|
|
|
XY_TRANSFORM = {
|
|
translation = { 0., 0., 0. },
|
|
rotation = { 0., -math.pi / 2., 0., },
|
|
}
|
|
|
|
XZ_TRANSFORM = {
|
|
translation = { 0., 0., 0. },
|
|
rotation = { 0. , 0., -math.pi / 2, },
|
|
}
|
|
|
|
YZ_TRANSFORM = {
|
|
translation = { 0., 0., 0. },
|
|
rotation = { 0. , 0., math.pi, },
|
|
}
|
|
|
|
options = {
|
|
tracking_frame = "base_link",
|
|
pipeline = {
|
|
{
|
|
action = "min_max_range_filter",
|
|
min_range = 1.,
|
|
max_range = 60.,
|
|
},
|
|
{
|
|
action = "dump_num_points",
|
|
},
|
|
|
|
-- Gray X-Rays. These only use geometry to color pixels.
|
|
{
|
|
action = "write_xray_image",
|
|
voxel_size = VOXEL_SIZE,
|
|
filename = "xray_yz_all",
|
|
transform = YZ_TRANSFORM,
|
|
},
|
|
{
|
|
action = "write_xray_image",
|
|
voxel_size = VOXEL_SIZE,
|
|
filename = "xray_xy_all",
|
|
transform = XY_TRANSFORM,
|
|
},
|
|
{
|
|
action = "write_xray_image",
|
|
voxel_size = VOXEL_SIZE,
|
|
filename = "xray_xz_all",
|
|
transform = XZ_TRANSFORM,
|
|
},
|
|
|
|
-- We now use the intensities to color our points. We apply a linear
|
|
-- transform to clamp our intensity values into [0, 255] and then use this
|
|
-- value for RGB of our points. Every stage in the pipeline after this now
|
|
-- receives colored points.
|
|
--
|
|
-- We write xrays again. These now use geometry and the intensities to
|
|
-- color pixels - they look quite similar, just a little lighter.
|
|
{
|
|
action = "intensity_to_color",
|
|
min_intensity = 0.,
|
|
max_intensity = 4095.,
|
|
},
|
|
|
|
{
|
|
action = "write_xray_image",
|
|
voxel_size = VOXEL_SIZE,
|
|
filename = "xray_yz_all_intensity",
|
|
transform = YZ_TRANSFORM,
|
|
},
|
|
{
|
|
action = "write_xray_image",
|
|
voxel_size = VOXEL_SIZE,
|
|
filename = "xray_xy_all_intensity",
|
|
transform = XY_TRANSFORM,
|
|
},
|
|
{
|
|
action = "write_xray_image",
|
|
voxel_size = VOXEL_SIZE,
|
|
filename = "xray_xz_all_intensity",
|
|
transform = XZ_TRANSFORM,
|
|
},
|
|
|
|
-- We also write a PLY file at this stage, because gray points look good.
|
|
-- The points in the PLY can be visualized using
|
|
-- https://github.com/googlecartographer/point_cloud_viewer.
|
|
{
|
|
action = "write_ply",
|
|
filename = "points.ply",
|
|
},
|
|
|
|
-- Now we recolor our points by frame and write another batch of X-Rays. It
|
|
-- is visible in them what was seen by the horizontal and the vertical
|
|
-- laser.
|
|
{
|
|
action = "color_points",
|
|
frame_id = "horizontal_laser_link",
|
|
color = { 255., 0., 0. },
|
|
},
|
|
{
|
|
action = "color_points",
|
|
frame_id = "vertical_laser_link",
|
|
color = { 0., 255., 0. },
|
|
},
|
|
|
|
{
|
|
action = "write_xray_image",
|
|
voxel_size = VOXEL_SIZE,
|
|
filename = "xray_yz_all_color",
|
|
transform = YZ_TRANSFORM,
|
|
},
|
|
{
|
|
action = "write_xray_image",
|
|
voxel_size = VOXEL_SIZE,
|
|
filename = "xray_xy_all_color",
|
|
transform = XY_TRANSFORM,
|
|
},
|
|
{
|
|
action = "write_xray_image",
|
|
voxel_size = VOXEL_SIZE,
|
|
filename = "xray_xz_all_color",
|
|
transform = XZ_TRANSFORM,
|
|
},
|
|
}
|
|
}
|
|
|
|
return options
|