Follow googlecartographer/cartographer#1174 (#883)

Update all users to the new serialization format [RFC 0021](https://github.com/googlecartographer/rfcs/blob/master/text/0021-serialization-format.md)

See also corresponding change in cartographer: googlecartographer/cartographer#1174
master
Sebastian Klose 2018-05-30 15:29:48 +02:00 committed by Wally B. Feed
parent 46cfb7dfad
commit b28be6fb58
4 changed files with 19 additions and 39 deletions

View File

@ -27,6 +27,7 @@
#include "cartographer/io/points_processor.h" #include "cartographer/io/points_processor.h"
#include "cartographer/io/points_processor_pipeline_builder.h" #include "cartographer/io/points_processor_pipeline_builder.h"
#include "cartographer/io/proto_stream.h" #include "cartographer/io/proto_stream.h"
#include "cartographer/io/proto_stream_deserializer.h"
#include "cartographer/mapping/proto/pose_graph.pb.h" #include "cartographer/mapping/proto/pose_graph.pb.h"
#include "cartographer/mapping/proto/trajectory_builder_options.pb.h" #include "cartographer/mapping/proto/trajectory_builder_options.pb.h"
#include "cartographer/sensor/point_cloud.h" #include "cartographer/sensor/point_cloud.h"
@ -54,14 +55,6 @@ namespace {
constexpr char kTfStaticTopic[] = "/tf_static"; constexpr char kTfStaticTopic[] = "/tf_static";
namespace carto = ::cartographer; namespace carto = ::cartographer;
carto::mapping::proto::PoseGraph LoadPoseGraph(
const std::string& pose_graph_filename) {
carto::mapping::proto::PoseGraph pose_graph_proto;
carto::io::ProtoStreamReader reader(pose_graph_filename);
CHECK(reader.ReadProto(&pose_graph_proto));
return pose_graph_proto;
}
std::unique_ptr<carto::io::PointsProcessorPipelineBuilder> std::unique_ptr<carto::io::PointsProcessorPipelineBuilder>
CreatePipelineBuilder( CreatePipelineBuilder(
const std::vector<carto::mapping::proto::Trajectory>& trajectories, const std::vector<carto::mapping::proto::Trajectory>& trajectories,
@ -147,7 +140,8 @@ AssetsWriter::AssetsWriter(const std::string& pose_graph_filename,
const std::vector<std::string>& bag_filenames, const std::vector<std::string>& bag_filenames,
const std::string& output_file_prefix) const std::string& output_file_prefix)
: bag_filenames_(bag_filenames), : bag_filenames_(bag_filenames),
pose_graph_(LoadPoseGraph(pose_graph_filename)) { pose_graph_(
carto::io::DeserializePoseGraphFromFile(pose_graph_filename)) {
CHECK_EQ(pose_graph_.trajectory_size(), bag_filenames_.size()) CHECK_EQ(pose_graph_.trajectory_size(), bag_filenames_.size())
<< "Pose graphs contains " << pose_graph_.trajectory_size() << "Pose graphs contains " << pose_graph_.trajectory_size()
<< " trajectories while " << bag_filenames_.size() << " trajectories while " << bag_filenames_.size()

View File

@ -21,9 +21,8 @@
#include <vector> #include <vector>
#include "cartographer/common/math.h" #include "cartographer/common/math.h"
#include "cartographer/io/proto_stream.h" #include "cartographer/io/proto_stream_deserializer.h"
#include "cartographer/mapping/proto/pose_graph.pb.h" #include "cartographer/mapping/proto/pose_graph.pb.h"
#include "cartographer/mapping/proto/trajectory_builder_options.pb.h"
#include "cartographer/transform/transform_interpolation_buffer.h" #include "cartographer/transform/transform_interpolation_buffer.h"
#include "cartographer_ros/msg_conversion.h" #include "cartographer_ros/msg_conversion.h"
#include "cartographer_ros/time_conversion.h" #include "cartographer_ros/time_conversion.h"
@ -67,9 +66,8 @@ std::string QuantilesToString(std::vector<double>* v) {
void Run(const std::string& pbstream_filename, void Run(const std::string& pbstream_filename,
const std::string& bag_filename) { const std::string& bag_filename) {
cartographer::io::ProtoStreamReader reader(pbstream_filename); cartographer::mapping::proto::PoseGraph pose_graph_proto =
cartographer::mapping::proto::PoseGraph pose_graph_proto; cartographer::io::DeserializePoseGraphFromFile(pbstream_filename);
CHECK(reader.ReadProto(&pose_graph_proto));
const cartographer::mapping::proto::Trajectory& last_trajectory_proto = const cartographer::mapping::proto::Trajectory& last_trajectory_proto =
*pose_graph_proto.mutable_trajectory()->rbegin(); *pose_graph_proto.mutable_trajectory()->rbegin();
const cartographer::transform::TransformInterpolationBuffer const cartographer::transform::TransformInterpolationBuffer

View File

@ -20,6 +20,7 @@
#include <string> #include <string>
#include "cartographer/io/proto_stream.h" #include "cartographer/io/proto_stream.h"
#include "cartographer/io/proto_stream_deserializer.h"
#include "cartographer/io/submap_painter.h" #include "cartographer/io/submap_painter.h"
#include "cartographer/mapping/2d/probability_grid.h" #include "cartographer/mapping/2d/probability_grid.h"
#include "cartographer/mapping/2d/submap_2d.h" #include "cartographer/mapping/2d/submap_2d.h"
@ -50,29 +51,21 @@ namespace {
void Run(const std::string& pbstream_filename, const std::string& map_topic, void Run(const std::string& pbstream_filename, const std::string& map_topic,
const std::string& map_frame_id, const double resolution) { const std::string& map_frame_id, const double resolution) {
::cartographer::io::ProtoStreamReader reader(pbstream_filename); ::cartographer::io::ProtoStreamReader reader(pbstream_filename);
::cartographer::io::ProtoStreamDeserializer deserializer(&reader);
::cartographer::mapping::proto::PoseGraph pose_graph;
CHECK(reader.ReadProto(&pose_graph));
::cartographer::mapping::proto::AllTrajectoryBuilderOptions
all_trajectory_builder_options;
CHECK(reader.ReadProto(&all_trajectory_builder_options));
LOG(INFO) << "Loading submap slices from serialized data."; LOG(INFO) << "Loading submap slices from serialized data.";
std::map<::cartographer::mapping::SubmapId, ::cartographer::io::SubmapSlice> std::map<::cartographer::mapping::SubmapId, ::cartographer::io::SubmapSlice>
submap_slices; submap_slices;
for (;;) {
::cartographer::mapping::proto::SerializedData proto; ::cartographer::mapping::proto::SerializedData proto;
if (!reader.ReadProto(&proto)) { while (deserializer.ReadNextSerializedData(&proto)) {
break;
}
if (proto.has_submap()) { if (proto.has_submap()) {
const auto& submap = proto.submap(); const auto& submap = proto.submap();
const ::cartographer::mapping::SubmapId id{ const ::cartographer::mapping::SubmapId id{
submap.submap_id().trajectory_id(), submap.submap_id().trajectory_id(),
submap.submap_id().submap_index()}; submap.submap_id().submap_index()};
const ::cartographer::transform::Rigid3d global_submap_pose = const ::cartographer::transform::Rigid3d global_submap_pose =
::cartographer::transform::ToRigid3( ::cartographer::transform::ToRigid3(deserializer.pose_graph()
pose_graph.trajectory(id.trajectory_id) .trajectory(id.trajectory_id)
.submap(id.submap_index) .submap(id.submap_index)
.pose()); .pose());
FillSubmapSlice(global_submap_pose, submap, &submap_slices[id]); FillSubmapSlice(global_submap_pose, submap, &submap_slices[id]);

View File

@ -18,6 +18,7 @@
#include <string> #include <string>
#include "cartographer/io/proto_stream.h" #include "cartographer/io/proto_stream.h"
#include "cartographer/io/proto_stream_deserializer.h"
#include "cartographer/io/submap_painter.h" #include "cartographer/io/submap_painter.h"
#include "cartographer/mapping/2d/probability_grid.h" #include "cartographer/mapping/2d/probability_grid.h"
#include "cartographer/mapping/2d/submap_2d.h" #include "cartographer/mapping/2d/submap_2d.h"
@ -42,21 +43,15 @@ namespace {
void Run(const std::string& pbstream_filename, const std::string& map_filestem, void Run(const std::string& pbstream_filename, const std::string& map_filestem,
const double resolution) { const double resolution) {
::cartographer::io::ProtoStreamReader reader(pbstream_filename); ::cartographer::io::ProtoStreamReader reader(pbstream_filename);
::cartographer::io::ProtoStreamDeserializer deserializer(&reader);
::cartographer::mapping::proto::PoseGraph pose_graph; const auto& pose_graph = deserializer.pose_graph();
CHECK(reader.ReadProto(&pose_graph));
::cartographer::mapping::proto::AllTrajectoryBuilderOptions
all_trajectory_builder_options;
CHECK(reader.ReadProto(&all_trajectory_builder_options));
LOG(INFO) << "Loading submap slices from serialized data."; LOG(INFO) << "Loading submap slices from serialized data.";
std::map<::cartographer::mapping::SubmapId, ::cartographer::io::SubmapSlice> std::map<::cartographer::mapping::SubmapId, ::cartographer::io::SubmapSlice>
submap_slices; submap_slices;
for (;;) {
::cartographer::mapping::proto::SerializedData proto; ::cartographer::mapping::proto::SerializedData proto;
if (!reader.ReadProto(&proto)) { while (deserializer.ReadNextSerializedData(&proto)) {
break;
}
if (proto.has_submap()) { if (proto.has_submap()) {
const auto& submap = proto.submap(); const auto& submap = proto.submap();
const ::cartographer::mapping::SubmapId id{ const ::cartographer::mapping::SubmapId id{