cartographer源码分析(24)-sensor-configuration.h
来源:互联网 发布:at指令c语言编程 编辑:程序博客网 时间:2024/06/07 05:38
源码可在https://github.com/learnmoreonce/SLAM 下载
文件:sensor/configuration.h#ifndef CARTOGRAPHER_SENSOR_CONFIGURATION_H_#define CARTOGRAPHER_SENSOR_CONFIGURATION_H_#include "Eigen/Geometry"#include "cartographer/common/lua_parameter_dictionary.h"#include "cartographer/sensor/proto/configuration.pb.h"#include "cartographer/transform/rigid_transform.h"namespace cartographer {namespace sensor {//从sensor配置文件解析sensor的数据参数。主要是sensor到机器坐标的转换// Creates the configuration for a singular sensor from 'parameter_dictionary'.proto::Configuration::Sensor CreateSensorConfiguration( common::LuaParameterDictionary* parameter_dictionary);//求得多个sensor的配置的集合。// Creates the mapping from frame_id to Sensors defined in// 'parameter_dictionary'.proto::Configuration CreateConfiguration( common::LuaParameterDictionary* parameter_dictionary);//系统是否支持某一传感器。// Returns true if 'frame_id' is mentioned in 'sensor_configuration'.bool IsEnabled(const string& frame_id, const sensor::proto::Configuration& sensor_configuration);//将sensor采集的data经过3d坐标变换为机器坐标。// Returns the transform which takes data from the sensor frame to the// tracking frame.transform::Rigid3d GetTransformToTracking( const string& frame_id, const sensor::proto::Configuration& sensor_configuration);} // namespace sensor} // namespace cartographer#endif // CARTOGRAPHER_SENSOR_CONFIGURATION_H_
文件:sensor/configuration.cc#include "cartographer/sensor/configuration.h"#include "Eigen/Core"#include "Eigen/Geometry"#include "cartographer/sensor/proto/configuration.pb.h"#include "cartographer/transform/proto/transform.pb.h"#include "cartographer/transform/rigid_transform.h"#include "cartographer/transform/transform.h"#include "glog/logging.h"namespace cartographer {namespace sensor {/*assets_writer_backpack_2d.luaSensor定义: message Sensor { string frame_id = 2; //'frame_id' of the sensor. Rigid3d transform = 3; }*/proto::Configuration::Sensor CreateSensorConfiguration( common::LuaParameterDictionary* const parameter_dictionary) { proto::Configuration::Sensor sensor; sensor.set_frame_id(parameter_dictionary->GetString("frame_id")); *sensor.mutable_transform() = transform::ToProto(transform::FromDictionary( parameter_dictionary->GetDictionary("transform").get())); return sensor;}/*Configuration定义:message Configuration { repeated Sensor sensor = 15;}*/proto::Configuration CreateConfiguration( common::LuaParameterDictionary* const parameter_dictionary) { proto::Configuration configuration; for (auto& sensor_parameter_dictionary : parameter_dictionary->GetArrayValuesAsDictionaries()) { *configuration.add_sensor() = CreateSensorConfiguration(sensor_parameter_dictionary.get()); } return configuration;}/*判断系统是否支持某一传感器id。*/bool IsEnabled(const string& frame_id, const sensor::proto::Configuration& sensor_configuration) { for (const auto& sensor : sensor_configuration.sensor()) { if (sensor.frame_id() == frame_id) { return true; } } return false;}/*将sensor坐标转换为机器坐标。以便于跟踪计算*/transform::Rigid3d GetTransformToTracking( const string& frame_id, const sensor::proto::Configuration& sensor_configuration) { for (const auto& sensor : sensor_configuration.sensor()) { if (sensor.frame_id() == frame_id) { return transform::ToRigid3(sensor.transform()); } } LOG(FATAL) << "No configuration found for sensor with frame ID '" << frame_id << "'.";}} // namespace sensor} // namespace cartographer```c++测试代码:
本文发于:
* http://www.jianshu.com/u/9e38d2febec1
* https://zhuanlan.zhihu.com/learnmoreonce
* http://blog.csdn.net/learnmoreonce
* slam源码分析微信公众号:slamcode
阅读全文
0 0
- cartographer源码分析(24)-sensor-configuration.h
- cartographer源码分析(17)-sensor-point_cloud.h
- cartographer源码分析(19)-sensor-range_data.h
- cartographer源码分析(20)-sensor-data.h
- cartographer源码分析(21)-sensor-ordered_multi_queue.h
- cartographer源码分析(22)-sensor-collator.h
- cartographer源码分析(23)-sensor-voxel_filter.h
- cartographer源码分析(18)-sensor-compressed_point_cloud
- cartographer源码分析(3)-common-port.h
- cartographer源码分析(4)-common-time.h
- cartographer源码分析(5)-common-rate_time.h
- cartographer源码分析(6)-common-histogram.h
- cartographer源码分析(7)-common-math.h
- cartographer源码分析(8)-common-make_unique.h
- cartographer源码分析(5)-common-fixed_ratio_sampler.h
- cartographer源码分析(9)-common-mutex.h
- cartographer源码分析(10)-common-thread_pool.h
- cartographer源码分析(11)-common-blocking_queue.h
- Android之TabLayout
- Matlab中image、imagesc和imshow函数用法解析
- Angularjs 数据的双向绑定和controller通信
- EL表达式
- Python中字符串的常用操作
- cartographer源码分析(24)-sensor-configuration.h
- 大数相加(正整数)
- 文章标题
- hpuoj 【1288】数组次值 【水题】&&【sort】
- 如何编译生成动态文件.so
- Java 异常
- 玲珑学院 1137 Sin your life 【数学】
- jsp标签
- day02