vdb2pc.cpp
Go to the documentation of this file.
1 /*********************************************************************
2  *
3  * Software License Agreement
4  *
5  * Copyright (c) 2018, Simbe Robotics, Inc.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * * Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above
15  * copyright notice, this list of conditions and the following
16  * disclaimer in the documentation and/or other materials provided
17  * with the distribution.
18  * * Neither the name of Simbe Robotics, Inc. nor the names of its
19  * contributors may be used to endorse or promote products derived
20  * from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGE.
34  *
35  * Author: Steve Macenski (steven.macenski@simberobotics.com)
36  *********************************************************************/
37 
39 
40 namespace utilities
41 {
42 
43 /*****************************************************************************/
45 /*****************************************************************************/
46 {
47  openvdb::initialize();
48 }
49 
50 /*****************************************************************************/
51 void VDB2PCLPointCloud::SetFile(const std::string& file_name)
52 /*****************************************************************************/
53 {
54  _file_name = file_name;
55 }
56 
57 /*****************************************************************************/
58 bool VDB2PCLPointCloud::GetCloud(pcl::PointCloud<pcl::PointXYZ>::Ptr& cloud)
59 /*****************************************************************************/
60 {
61  openvdb::io::File file(_file_name);
62  file.open();
63  openvdb::GridBase::Ptr baseGrid;
64  openvdb::DoubleGrid::Ptr grid;
65 
66  bool valid_grid = false;
67 
68  for (openvdb::io::File::NameIterator nameIter = file.beginName();
69  nameIter != file.endName(); ++nameIter)
70  {
71  if (nameIter.gridName() == "SpatioTemporalVoxelLayer")
72  {
73  baseGrid = file.readGrid(nameIter.gridName());
74  grid = openvdb::gridPtrCast<openvdb::DoubleGrid>(baseGrid);
75  valid_grid = true;
76  }
77  }
78 
79  if (!valid_grid)
80  {
81  std::cout << "No valid grid inside of provided file." << std::endl;
82  return false;
83  }
84 
85  //populate pcl pointcloud
86  openvdb::DoubleGrid::ValueOnCIter cit_grid = grid->cbeginValueOn();
87  for (cit_grid; cit_grid; ++cit_grid)
88  {
89  const openvdb::Vec3d pt = grid->indexToWorld(cit_grid.getCoord());
90  cloud->push_back(pcl::PointXYZ(pt[0], pt[1], pt[2]));
91  }
92 
93  return true;
94 }
95 
96 } // end namespace
void SetFile(const std::string &file_name)
Definition: vdb2pc.cpp:51
bool GetCloud(pcl::PointCloud< pcl::PointXYZ >::Ptr &cloud)
Definition: vdb2pc.cpp:58


spatio_temporal_voxel_layer
Author(s):
autogenerated on Sat Dec 21 2019 04:06:19