Follow googlecartographer/cartographer#396. (#417)
parent
6b1e9fb55c
commit
35389d0adb
|
@ -67,16 +67,19 @@ void Write3DAssets(
|
|||
|
||||
carto::io::NullPointsProcessor null_points_processor;
|
||||
carto::io::XRayPointsProcessor xy_xray_points_processor(
|
||||
voxel_size, carto::transform::Rigid3f::Rotation(
|
||||
Eigen::AngleAxisf(-M_PI / 2.f, Eigen::Vector3f::UnitY())),
|
||||
voxel_size,
|
||||
carto::transform::Rigid3f::Rotation(
|
||||
Eigen::AngleAxisf(-M_PI / 2.f, Eigen::Vector3f::UnitY())),
|
||||
{}, stem + "_xray_xy", file_writer_factory, &null_points_processor);
|
||||
carto::io::XRayPointsProcessor yz_xray_points_processor(
|
||||
voxel_size, carto::transform::Rigid3f::Rotation(
|
||||
Eigen::AngleAxisf(M_PI, Eigen::Vector3f::UnitZ())),
|
||||
voxel_size,
|
||||
carto::transform::Rigid3f::Rotation(
|
||||
Eigen::AngleAxisf(M_PI, Eigen::Vector3f::UnitZ())),
|
||||
{}, stem + "_xray_yz", file_writer_factory, &xy_xray_points_processor);
|
||||
carto::io::XRayPointsProcessor xz_xray_points_processor(
|
||||
voxel_size, carto::transform::Rigid3f::Rotation(
|
||||
Eigen::AngleAxisf(-M_PI / 2.f, Eigen::Vector3f::UnitZ())),
|
||||
voxel_size,
|
||||
carto::transform::Rigid3f::Rotation(
|
||||
Eigen::AngleAxisf(-M_PI / 2.f, Eigen::Vector3f::UnitZ())),
|
||||
{}, stem + "_xray_xz", file_writer_factory, &yz_xray_points_processor);
|
||||
carto::io::PlyWritingPointsProcessor ply_writing_points_processor(
|
||||
file_writer_factory(stem + ".ply"), &xz_xray_points_processor);
|
||||
|
@ -86,7 +89,7 @@ void Write3DAssets(
|
|||
for (const auto& node : all_trajectory_nodes[trajectory_id]) {
|
||||
const carto::sensor::RangeData range_data =
|
||||
carto::sensor::TransformRangeData(
|
||||
carto::sensor::Decompress(node.constant_data->range_data_3d),
|
||||
carto::sensor::Decompress(node.constant_data->range_data),
|
||||
node.pose.cast<float>());
|
||||
auto points_batch = carto::common::make_unique<carto::io::PointsBatch>();
|
||||
points_batch->time = node.time();
|
||||
|
|
|
@ -36,7 +36,7 @@ Eigen::AlignedBox2f ComputeMapBoundingBox2D(
|
|||
const auto& data = *node.constant_data;
|
||||
::cartographer::sensor::RangeData range_data;
|
||||
range_data = ::cartographer::sensor::TransformRangeData(
|
||||
data.range_data_2d, node.pose.cast<float>());
|
||||
Decompress(data.range_data), node.pose.cast<float>());
|
||||
bounding_box.extend(range_data.origin.head<2>());
|
||||
for (const Eigen::Vector3f& hit : range_data.returns) {
|
||||
bounding_box.extend(hit.head<2>());
|
||||
|
@ -72,11 +72,10 @@ void BuildOccupancyGrid2D(
|
|||
continue;
|
||||
}
|
||||
latest_time = std::max(latest_time, node.time());
|
||||
CHECK(node.constant_data->range_data_3d.returns.empty());
|
||||
range_data_inserter.Insert(
|
||||
carto::sensor::TransformRangeData(node.constant_data->range_data_2d,
|
||||
node.pose.cast<float>()),
|
||||
&probability_grid);
|
||||
range_data_inserter.Insert(carto::sensor::TransformRangeData(
|
||||
Decompress(node.constant_data->range_data),
|
||||
node.pose.cast<float>()),
|
||||
&probability_grid);
|
||||
}
|
||||
}
|
||||
CHECK(latest_time != carto::common::Time::min());
|
||||
|
|
|
@ -31,12 +31,11 @@ TEST(OccupancyGridTest, ComputeMapLimits) {
|
|||
const TrajectoryNode trajectory_node{
|
||||
std::make_shared<TrajectoryNode::Data>(TrajectoryNode::Data{
|
||||
::cartographer::common::FromUniversal(52),
|
||||
::cartographer::sensor::RangeData{Eigen::Vector3f::Zero(),
|
||||
{Eigen::Vector3f(-30.f, 1.f, 0.f),
|
||||
Eigen::Vector3f(50.f, -10.f, 0.f)},
|
||||
{}},
|
||||
::cartographer::sensor::Compress(::cartographer::sensor::RangeData{
|
||||
Eigen::Vector3f::Zero(), {}, {}}),
|
||||
Eigen::Vector3f::Zero(),
|
||||
{Eigen::Vector3f(-30.f, 1.f, 0.f),
|
||||
Eigen::Vector3f(50.f, -10.f, 0.f)},
|
||||
{}}),
|
||||
::cartographer::transform::Rigid3d::Identity()}),
|
||||
::cartographer::transform::Rigid3d::Identity()};
|
||||
constexpr double kResolution = 0.05;
|
||||
|
|
Loading…
Reference in New Issue