tsdf_range_data_inserter_2d.h
Go to the documentation of this file.
00001 /*
00002  * Copyright 2018 The Cartographer Authors
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #ifndef CARTOGRAPHER_MAPPING_2D_TSDF_RANGE_DATA_INSERTER_2D_H_
00018 #define CARTOGRAPHER_MAPPING_2D_TSDF_RANGE_DATA_INSERTER_2D_H_
00019 
00020 #include "cartographer/common/lua_parameter_dictionary.h"
00021 #include "cartographer/mapping/2d/tsdf_2d.h"
00022 #include "cartographer/mapping/proto/2d/tsdf_range_data_inserter_options_2d.pb.h"
00023 #include "cartographer/mapping/range_data_inserter_interface.h"
00024 #include "cartographer/sensor/point_cloud.h"
00025 #include "cartographer/sensor/range_data.h"
00026 
00027 namespace cartographer {
00028 namespace mapping {
00029 
00030 proto::TSDFRangeDataInserterOptions2D CreateTSDFRangeDataInserterOptions2D(
00031     common::LuaParameterDictionary* parameter_dictionary);
00032 
00033 class TSDFRangeDataInserter2D : public RangeDataInserterInterface {
00034  public:
00035   explicit TSDFRangeDataInserter2D(
00036       const proto::TSDFRangeDataInserterOptions2D& options);
00037 
00038   TSDFRangeDataInserter2D(const TSDFRangeDataInserter2D&) = delete;
00039   TSDFRangeDataInserter2D& operator=(const TSDFRangeDataInserter2D&) = delete;
00040 
00041   // Casts a ray from origin towards hit for each hit in range data.
00042   // If 'options.update_free_space' is 'true', all cells along the ray
00043   // until 'truncation_distance' behind hit are updated. Otherwise, only the
00044   // cells within 'truncation_distance' around hit are updated.
00045   virtual void Insert(const sensor::RangeData& range_data,
00046                       GridInterface* grid) const override;
00047 
00048  private:
00049   void InsertHit(const proto::TSDFRangeDataInserterOptions2D& options,
00050                  const Eigen::Vector2f& hit, const Eigen::Vector2f& origin,
00051                  float normal, TSDF2D* tsdf) const;
00052   void UpdateCell(const Eigen::Array2i& cell, float update_sdf,
00053                   float update_weight, TSDF2D* tsdf) const;
00054   const proto::TSDFRangeDataInserterOptions2D options_;
00055 };
00056 
00057 }  // namespace mapping
00058 }  // namespace cartographer
00059 
00060 #endif  // CARTOGRAPHER_MAPPING_2D_TSDF_RANGE_DATA_INSERTER_2D_H_


cartographer
Author(s): The Cartographer Authors
autogenerated on Thu May 9 2019 02:27:36