34#ifndef OCTOMAP_SCANGRAPH_H
35#define OCTOMAP_SCANGRAPH_H
64 return (
id == other.
id);
98 std::ostream&
writeASCII(std::ostream &s)
const;
151 bool edgeExists(
unsigned int first_id,
unsigned int second_id);
193 bool writeBinary(
const std::string& filename)
const;
A collection of 3D coordinates (point3d), which are regarded as endpoints of a 3D laser scan.
Definition: Pointcloud.h:47
A connection between two ScanNodes.
Definition: ScanGraph.h:82
bool operator==(const ScanEdge &other)
Definition: ScanGraph.h:90
ScanNode * first
Definition: ScanGraph.h:101
std::ostream & writeASCII(std::ostream &s) const
Definition: ScanGraph.cpp:134
ScanNode * second
Definition: ScanGraph.h:102
ScanEdge()
Definition: ScanGraph.h:88
std::istream & readBinary(std::istream &s, ScanGraph &graph)
Definition: ScanGraph.cpp:117
pose6d constraint
Definition: ScanGraph.h:104
ScanEdge(ScanNode *_first, ScanNode *_second, pose6d _constraint)
Definition: ScanGraph.h:86
double weight
Definition: ScanGraph.h:105
std::ostream & writeBinary(std::ostream &s) const
Definition: ScanGraph.cpp:106
std::istream & readASCII(std::istream &s, ScanGraph &graph)
Definition: ScanGraph.cpp:146
A ScanGraph is a collection of ScanNodes, connected by ScanEdges.
Definition: ScanGraph.h:114
const_edge_iterator edges_end() const
Definition: ScanGraph.h:188
void exportDot(std::string filename)
Definition: ScanGraph.cpp:236
void crop(point3d lowerBound, point3d upperBound)
Cut graph (all containing Pointclouds) to given BBX in global coords.
Definition: ScanGraph.cpp:596
std::vector< ScanEdge * > edges
Definition: ScanGraph.h:225
const_edge_iterator edges_begin() const
Definition: ScanGraph.h:187
bool edgeExists(unsigned int first_id, unsigned int second_id)
Definition: ScanGraph.cpp:259
~ScanGraph()
Definition: ScanGraph.cpp:163
void transformScans()
Transform every scan according to its pose.
Definition: ScanGraph.cpp:311
std::vector< ScanEdge * >::const_iterator const_edge_iterator
Definition: ScanGraph.h:184
std::istream & readNodePosesASCII(std::istream &s)
Definition: ScanGraph.cpp:556
const_iterator begin() const
Definition: ScanGraph.h:177
iterator begin()
Definition: ScanGraph.h:175
iterator end()
Definition: ScanGraph.h:176
std::ostream & writeEdgesASCII(std::ostream &s) const
Definition: ScanGraph.cpp:491
std::vector< ScanEdge * > getInEdges(ScanNode *node)
Definition: ScanGraph.cpp:299
std::ostream & writeBinary(std::ostream &s) const
Definition: ScanGraph.cpp:328
std::vector< unsigned int > getNeighborIDs(unsigned int id)
Definition: ScanGraph.cpp:272
std::vector< ScanNode * >::iterator iterator
Definition: ScanGraph.h:173
size_t size() const
Definition: ScanGraph.h:180
ScanNode * getNodeByID(unsigned int id)
will return NULL if node was not found
Definition: ScanGraph.cpp:252
const_iterator end() const
Definition: ScanGraph.h:178
std::vector< ScanNode * > nodes
Definition: ScanGraph.h:224
ScanGraph()
Definition: ScanGraph.h:118
edge_iterator edges_begin()
Definition: ScanGraph.h:185
std::istream & readEdgesASCII(std::istream &s)
Definition: ScanGraph.cpp:510
std::istream & readPlainASCII(std::istream &s)
Reads in a ScanGraph from a "plain" ASCII file of the form NODE x y z R P Y x y z x y z x y z NODE x ...
Definition: ScanGraph.cpp:436
ScanEdge * addEdge(ScanNode *first, ScanNode *second, pose6d constraint)
Creates an edge between two ScanNodes.
Definition: ScanGraph.cpp:191
std::ostream & writeNodePosesASCII(std::ostream &s) const
Definition: ScanGraph.cpp:543
void connectPrevious()
Connect previously added ScanNode to the one before that.
Definition: ScanGraph.cpp:226
edge_iterator edges_end()
Definition: ScanGraph.h:186
std::vector< ScanNode * >::const_iterator const_iterator
Definition: ScanGraph.h:174
void cropEachScan(point3d lowerBound, point3d upperBound)
Cut Pointclouds to given BBX in local coords.
Definition: ScanGraph.cpp:588
size_t getNumPoints(unsigned int max_id=-1) const
Definition: ScanGraph.cpp:611
void clear()
Clears all nodes and edges, and will delete the corresponding objects.
Definition: ScanGraph.cpp:167
ScanNode * addNode(Pointcloud *scan, pose6d pose)
Creates a new ScanNode in the graph from a Pointcloud.
Definition: ScanGraph.cpp:179
std::vector< ScanEdge * >::iterator edge_iterator
Definition: ScanGraph.h:183
std::istream & readBinary(std::ifstream &s)
Definition: ScanGraph.cpp:369
std::vector< ScanEdge * > getOutEdges(ScanNode *node)
Definition: ScanGraph.cpp:287
A 3D scan as Pointcloud, performed from a Pose6D.
Definition: ScanGraph.h:52
ScanNode()
Definition: ScanGraph.h:58
unsigned int id
Definition: ScanGraph.h:75
Pointcloud * scan
Definition: ScanGraph.h:73
bool operator==(const ScanNode &other)
Definition: ScanGraph.h:63
std::ostream & writeBinary(std::ostream &s) const
Definition: ScanGraph.cpp:52
std::istream & readPoseASCII(std::istream &s)
Definition: ScanGraph.cpp:90
~ScanNode()
Definition: ScanGraph.cpp:45
std::istream & readBinary(std::istream &s)
Definition: ScanGraph.cpp:65
std::ostream & writePoseASCII(std::ostream &s) const
Definition: ScanGraph.cpp:80
pose6d pose
6D pose from which the scan was performed
Definition: ScanGraph.h:74
ScanNode(Pointcloud *_scan, pose6d _pose, unsigned int _id)
Definition: ScanGraph.h:56
This class represents a tree-dimensional pose of an object.
Definition: Pose6D.h:49
This class represents a three-dimensional vector.
Definition: Vector3.h:50
Namespace the OctoMap library and visualization tools.