Add sensor::OdometryData. (#442)

master
Wolfgang Hess 2017-08-08 14:52:47 +02:00 committed by GitHub
parent f60b2cbb16
commit 8732e43f16
3 changed files with 87 additions and 3 deletions

View File

@ -0,0 +1,37 @@
/*
* Copyright 2017 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.
*/
#include "cartographer/sensor/odometry_data.h"
#include "cartographer/transform/transform.h"
namespace cartographer {
namespace sensor {
proto::OdometryData ToProto(const OdometryData& odometry_data) {
proto::OdometryData proto;
proto.set_timestamp(common::ToUniversal(odometry_data.time));
*proto.mutable_pose() = transform::ToProto(odometry_data.pose);
return proto;
}
OdometryData FromProto(const proto::OdometryData& proto) {
return OdometryData{common::FromUniversal(proto.timestamp()),
transform::ToRigid3(proto.pose())};
}
} // namespace sensor
} // namespace cartographer

View File

@ -0,0 +1,41 @@
/*
* Copyright 2017 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.
*/
#ifndef CARTOGRAPHER_SENSOR_ODOMETRY_DATA_H_
#define CARTOGRAPHER_SENSOR_ODOMETRY_DATA_H_
#include "cartographer/common/time.h"
#include "cartographer/sensor/proto/sensor.pb.h"
#include "cartographer/transform/rigid_transform.h"
namespace cartographer {
namespace sensor {
struct OdometryData {
common::Time time;
transform::Rigid3d pose;
};
// Converts 'odometry_data' to a proto::OdometryData.
proto::OdometryData ToProto(const OdometryData& odometry_data);
// Converts 'proto' to an OdometryData.
OdometryData FromProto(const proto::OdometryData& proto);
} // namespace sensor
} // namespace cartographer
#endif // CARTOGRAPHER_SENSOR_ODOMETRY_DATA_H_

View File

@ -20,22 +20,28 @@ option java_outer_classname = "Sensor";
import "cartographer/transform/proto/transform.proto"; import "cartographer/transform/proto/transform.proto";
// Compressed collection of 3D 'points'. // Compressed collection of a 3D point cloud.
message CompressedPointCloud { message CompressedPointCloud {
optional int32 num_points = 1; optional int32 num_points = 1;
repeated int32 point_data = 3 [packed = true]; repeated int32 point_data = 3 [packed = true];
} }
// Proto representation of ::cartographer::sensor::ImuData // Proto representation of ::cartographer::sensor::ImuData.
message ImuData { message ImuData {
optional int64 timestamp = 1; optional int64 timestamp = 1;
optional transform.proto.Vector3d linear_acceleration = 2; optional transform.proto.Vector3d linear_acceleration = 2;
optional transform.proto.Vector3d angular_velocity = 3; optional transform.proto.Vector3d angular_velocity = 3;
} }
// Proto representation of ::cartographer::sensor::CompressedRangeData // Proto representation of ::cartographer::sensor::CompressedRangeData.
message CompressedRangeData { message CompressedRangeData {
optional transform.proto.Vector3f origin = 1; optional transform.proto.Vector3f origin = 1;
optional CompressedPointCloud returns = 2; optional CompressedPointCloud returns = 2;
optional CompressedPointCloud misses = 3; optional CompressedPointCloud misses = 3;
} }
// Proto representation of ::cartographer::sensor::OdometryData.
message OdometryData {
optional int64 timestamp = 1;
optional transform.proto.Rigid3d pose = 2;
}