37 #ifndef MOVEIT_DISTANCE_FIELD_DISTANCE_FIELD_H 38 #define MOVEIT_DISTANCE_FIELD_DISTANCE_FIELD_H 42 #include <visualization_msgs/Marker.h> 43 #include <visualization_msgs/MarkerArray.h> 45 #include <Eigen/Geometry> 107 DistanceField(
double size_x,
double size_y,
double size_z,
double resolution,
double origin_x,
double origin_y,
189 void addShapeToField(
const shapes::Shape* shape,
const Eigen::Isometry3d& pose);
192 [[deprecated]]
void addShapeToField(
const shapes::Shape* shape,
const geometry_msgs::Pose& pose);
227 void moveShapeInField(
const shapes::Shape* shape,
const Eigen::Isometry3d& old_pose,
228 const Eigen::Isometry3d& new_pose);
231 [[deprecated]]
void moveShapeInField(
const shapes::Shape* shape,
const geometry_msgs::Pose& old_pose,
232 const geometry_msgs::Pose& new_pose);
243 void removeShapeFromField(
const shapes::Shape* shape,
const Eigen::Isometry3d& pose);
246 [[deprecated]]
void removeShapeFromField(
const shapes::Shape* shape,
const geometry_msgs::Pose& pose);
252 virtual void reset() = 0;
273 virtual double getDistance(
double x,
double y,
double z)
const = 0;
322 double getDistanceGradient(
double x,
double y,
double z,
double& gradient_x,
double& gradient_y,
double& gradient_z,
323 bool& in_bounds)
const;
335 virtual double getDistance(
int x,
int y,
int z)
const = 0;
347 virtual bool isCellValid(
int x,
int y,
int z)
const = 0;
355 virtual int getXNumCells()
const = 0;
363 virtual int getYNumCells()
const = 0;
371 virtual int getZNumCells()
const = 0;
386 virtual bool gridToWorld(
int x,
int y,
int z,
double& world_x,
double& world_y,
double& world_z)
const = 0;
404 virtual bool worldToGrid(
double world_x,
double world_y,
double world_z,
int& x,
int& y,
int& z)
const = 0;
413 virtual bool writeToStream(std::ostream& stream)
const = 0;
424 virtual bool readFromStream(std::istream& stream) = 0;
439 void getIsoSurfaceMarkers(
double min_distance,
double max_distance,
const std::string& frame_id,
440 const ros::Time stamp, visualization_msgs::Marker& marker)
const;
455 void getGradientMarkers(
double min_radius,
double max_radius,
const std::string& frame_id,
const ros::Time& stamp,
456 visualization_msgs::MarkerArray& marker_array)
const;
485 visualization_msgs::Marker& marker)
const;
502 void getProjectionPlanes(
const std::string& frame_id,
const ros::Time& stamp,
double max_distance,
503 visualization_msgs::Marker& marker)
const;
588 virtual double getUninitializedDistance()
const = 0;
613 void setPoint(
int xCell,
int yCell,
int zCell,
double dist, geometry_msgs::Point& point, std_msgs::ColorRGBA& color,
614 double max_distance)
const;
628 #endif // MOVEIT_DISTANCE_FIELD_DISTANCE_FIELD_H
PlaneVisualizationType
The plane to visualize.
double getOriginX() const
Gets the origin (minimum value) along the X dimension.
Vec3fX< details::Vec3Data< double > > Vector3d
std::vector< Eigen::Vector3d, Eigen::aligned_allocator< Eigen::Vector3d > > vector_Vector3d
double getOriginZ() const
Gets the origin (minimum value) along the Z dimension.
double size_x_
X size of the distance field.
double getOriginY() const
Gets the origin (minimum value) along the Y dimension.
double origin_y_
Y origin of the distance field.
double getSizeY() const
Gets the distance field size along the Y dimension in meters.
double getSizeZ() const
Gets the distance field size along the Z dimension in meters.
DistanceField is an abstract base class for computing distances from sets of 3D obstacle points...
TF2SIMD_FORCE_INLINE tf2Scalar length(const Quaternion &q)
MOVEIT_CLASS_FORWARD(Shape)
double size_z_
Z size of the distance field.
double origin_z_
Z origin of the distance field.
double getResolution() const
Gets the resolution of the distance field in meters.
Namespace for holding classes that generate distance fields.
double origin_x_
X origin of the distance field.
double resolution_
Resolution of the distance field.
double size_y_
Y size of the distance field.
int inv_twice_resolution_
Computed value 1.0/(2.0*resolution_)
double getSizeX() const
Gets the distance field size along the X dimension in meters.