stereo_camera.h
Go to the documentation of this file.
1 #pragma once
2 
4 
6 
16 
21 {
22  projectorDontCare, //@< Inherit the projector settings from the parameter set.
23  projectorOn, //@< Enable the projector and disable the front light.
24  projectorOff //@< Enable the front light and disable the projector.
25 };
26 
27 class StereoCamera : public Camera
28 {
29 private:
30  sensor_msgs::msg::CameraInfoPtr leftCameraInfo;
31  sensor_msgs::msg::CameraInfoPtr rightCameraInfo;
32  sensor_msgs::msg::CameraInfoPtr leftRectifiedCameraInfo;
33  sensor_msgs::msg::CameraInfoPtr rightRectifiedCameraInfo;
34 
35  std::unique_ptr<CalibrateHandEyeServer> calibrateHandEyeServer;
36  std::unique_ptr<CalibrateWorkspaceServer> calibrateWorkspaceServer;
37  std::unique_ptr<FitPrimitiveServer> fitPrimitiveServer;
38  std::unique_ptr<LocatePatternServer> locatePatternServer;
39  std::unique_ptr<ProjectPatternServer> projectPatternServer;
40  std::unique_ptr<RequestDataServer> requestDataServer;
41  std::unique_ptr<TexturedPointCloudServer> texturedPointCloudServer;
42  std::unique_ptr<TelecentricProjectionServer> telecentricProjectionServer;
43 
51 
56 
57  // Information that we remember between the different steps of the hand-eye calibration. We save the pattern buffer
58  // outside of the NxLib, because otherwise we could not use the LocatePattern action while a hand-eye calibration is
59  // in progress.
61  std::vector<tf2::Transform> handEyeCalibrationRobotTransforms;
62 
63 public:
65 
66  void init() override;
67 
68  void onSetParameter(ensenso::action::SetParameterGoalConstPtr const& goal) override;
69 
73  void onRequestData(ensenso::action::RequestDataGoalConstPtr const& goal);
74 
78  void onLocatePattern(ensenso::action::LocatePatternGoalConstPtr const& goal);
79 
83  void onProjectPattern(ensenso::action::ProjectPatternGoalConstPtr const& goal);
84 
88  void onCalibrateHandEye(ensenso::action::CalibrateHandEyeGoalConstPtr const& goal);
89 
93  void onCalibrateWorkspace(ensenso::action::CalibrateWorkspaceGoalConstPtr const& goal);
94 
98  void onFitPrimitive(ensenso::action::FitPrimitiveGoalConstPtr const& goal);
99 
103  void onTexturedPointCloud(ensenso::action::TexturedPointCloudGoalConstPtr const& goal);
104 
108  void onTelecentricProjection(ensenso::action::TelecentricProjectionGoalConstPtr const& goal);
109 
110 private:
111  void updateCameraTypeSpecifics() override;
112 
113  void startServers() const override;
114 
115  void updateCameraInfo() override;
116 
117  geometry_msgs::msg::PoseStamped estimatePatternPose(ensenso::ros::Time imageTimestamp,
118  std::string const& targetFrame = "",
119  bool latestPatternOnly = false) const override;
120 
121  std::vector<geometry_msgs::msg::PoseStamped> estimatePatternPoses(ensenso::ros::Time imageTimestamp,
122  std::string const& targetFrame = "") const override;
123 
124  ensenso::ros::Time capture() const override;
125 
126  ensenso::msg::ParameterPtr readParameter(std::string const& key) const override;
127 
128  void writeParameter(ensenso::msg::Parameter const& parameter) override;
129 
133  void advertiseTopics();
134 
141  void saveParameterSet(std::string name, bool projectorWasSet);
142 
150  void loadParameterSet(std::string name, ProjectorState projector = projectorDontCare);
151 
157 
162  std::vector<StereoCalibrationPattern> collectPattern(bool clearBuffer = false) const;
163 
170  void fillCameraInfoFromNxLib(sensor_msgs::msg::CameraInfoPtr const& info, bool right, bool rectified = false) const;
171 
175  bool isSSeries() const;
176 
180  bool isXrSeries() const;
181 
185  bool hasRightCamera() const;
186 
190  bool hasRawImages() const;
191 
195  bool hasDownloadedImages() const;
196 
200  bool hasDisparityMap() const;
201 
205  void addDisparityMapOffset(sensor_msgs::msg::CameraInfoPtr const& info) const;
206 };
pcl.h
StereoCamera::onProjectPattern
void onProjectPattern(ensenso::action::ProjectPatternGoalConstPtr const &goal)
Definition: stereo_camera.cpp:647
StereoCamera::hasDisparityMap
bool hasDisparityMap() const
Definition: stereo_camera.cpp:1630
StereoCamera::rightRawImagePublisher
image_transport::CameraPublisher rightRawImagePublisher
Definition: stereo_camera.h:45
Camera::params
CameraParameters params
Definition: camera.h:258
StereoCamera::rightRectifiedImagePublisher
image_transport::CameraPublisher rightRectifiedImagePublisher
Definition: stereo_camera.h:47
projectorOn
@ projectorOn
Definition: stereo_camera.h:23
StereoCamera::onCalibrateHandEye
void onCalibrateHandEye(ensenso::action::CalibrateHandEyeGoalConstPtr const &goal)
Definition: stereo_camera.cpp:714
StereoCamera::handEyeCalibrationPatternBuffer
std::string handEyeCalibrationPatternBuffer
Definition: stereo_camera.h:60
StereoCamera::estimatePatternPose
geometry_msgs::msg::PoseStamped estimatePatternPose(ensenso::ros::Time imageTimestamp, std::string const &targetFrame="", bool latestPatternOnly=false) const override
Definition: stereo_camera.cpp:1388
Camera
Definition: camera.h:255
StereoCamera::estimatePatternPoses
std::vector< geometry_msgs::msg::PoseStamped > estimatePatternPoses(ensenso::ros::Time imageTimestamp, std::string const &targetFrame="") const override
Definition: stereo_camera.cpp:1415
StereoCamera::readParameter
ensenso::msg::ParameterPtr readParameter(std::string const &key) const override
Definition: stereo_camera.cpp:1521
projectorOff
@ projectorOff
Definition: stereo_camera.h:24
StereoCamera::projectedImagePublisher
image_transport::Publisher projectedImagePublisher
Definition: stereo_camera.h:50
StereoCamera::onFitPrimitive
void onFitPrimitive(ensenso::action::FitPrimitiveGoalConstPtr const &goal)
Definition: stereo_camera.cpp:81
StereoCamera::pointCloudColoredPublisher
PointCloudPublisher< ensenso::pcl::PointCloudColored > pointCloudColoredPublisher
Definition: stereo_camera.h:54
CameraParameters
Definition: camera.h:175
StereoCamera::calibrateWorkspaceServer
std::unique_ptr< CalibrateWorkspaceServer > calibrateWorkspaceServer
Definition: stereo_camera.h:36
StereoCamera::updateCameraTypeSpecifics
void updateCameraTypeSpecifics() override
Definition: stereo_camera.cpp:27
StereoCamera::rightRectifiedCameraInfo
sensor_msgs::msg::CameraInfoPtr rightRectifiedCameraInfo
Definition: stereo_camera.h:33
StereoCamera::fitPrimitiveServer
std::unique_ptr< FitPrimitiveServer > fitPrimitiveServer
Definition: stereo_camera.h:37
StereoCamera::depthImagePublisher
image_transport::CameraPublisher depthImagePublisher
Definition: stereo_camera.h:49
StereoCamera::onTexturedPointCloud
void onTexturedPointCloud(ensenso::action::TexturedPointCloudGoalConstPtr const &goal)
Definition: stereo_camera.cpp:1145
StereoCamera::calibrateHandEyeServer
std::unique_ptr< CalibrateHandEyeServer > calibrateHandEyeServer
Definition: stereo_camera.h:35
StereoCamera::isXrSeries
bool isXrSeries() const
Definition: stereo_camera.cpp:1608
StereoCamera::startServers
void startServers() const override
Definition: stereo_camera.cpp:68
StereoCamera::onCalibrateWorkspace
void onCalibrateWorkspace(ensenso::action::CalibrateWorkspaceGoalConstPtr const &goal)
Definition: stereo_camera.cpp:967
StereoCamera::locatePatternServer
std::unique_ptr< LocatePatternServer > locatePatternServer
Definition: stereo_camera.h:38
StereoCamera::fillCameraInfoFromNxLib
void fillCameraInfoFromNxLib(sensor_msgs::msg::CameraInfoPtr const &info, bool right, bool rectified=false) const
Definition: stereo_camera.cpp:1441
StereoCamera::isSSeries
bool isSSeries() const
Definition: stereo_camera.cpp:1603
fit_primitive.h
StereoCamera::pointCloudPublisher
PointCloudPublisher< ensenso::pcl::PointCloud > pointCloudPublisher
Definition: stereo_camera.h:52
StereoCamera::projectPatternServer
std::unique_ptr< ProjectPatternServer > projectPatternServer
Definition: stereo_camera.h:39
primitive.h
StereoCamera::advertiseTopics
void advertiseTopics()
Definition: stereo_camera.cpp:36
StereoCamera::init
void init() override
Definition: stereo_camera.cpp:60
StereoCamera::disparityMapPublisher
image_transport::CameraPublisher disparityMapPublisher
Definition: stereo_camera.h:48
StereoCamera::hasDownloadedImages
bool hasDownloadedImages() const
Definition: stereo_camera.cpp:1625
StereoCamera::timestampOfCapturedImage
ensenso::ros::Time timestampOfCapturedImage() const
Definition: stereo_camera.cpp:1254
project_pattern.h
StereoCamera
Definition: stereo_camera.h:27
ensenso::ros::NodeHandle
::ros::NodeHandle NodeHandle
Definition: node.h:215
StereoCamera::texturedPointCloudServer
std::unique_ptr< TexturedPointCloudServer > texturedPointCloudServer
Definition: stereo_camera.h:41
StereoCamera::pointCloudProjectedPublisher
PointCloudPublisher< ensenso::pcl::PointCloud > pointCloudProjectedPublisher
Definition: stereo_camera.h:55
ensenso::ros::Time
::ros::Time Time
Definition: time.h:67
image_transport::CameraPublisher
StereoCamera::onSetParameter
void onSetParameter(ensenso::action::SetParameterGoalConstPtr const &goal) override
Definition: stereo_camera.cpp:486
StereoCamera::collectPattern
std::vector< StereoCalibrationPattern > collectPattern(bool clearBuffer=false) const
Definition: stereo_camera.cpp:1309
camera.h
StereoCamera::onRequestData
void onRequestData(ensenso::action::RequestDataGoalConstPtr const &goal)
Definition: stereo_camera.cpp:198
StereoCamera::leftCameraInfo
sensor_msgs::msg::CameraInfoPtr leftCameraInfo
Definition: stereo_camera.h:30
calibrate_hand_eye.h
StereoCamera::hasRawImages
bool hasRawImages() const
Definition: stereo_camera.cpp:1619
ProjectorState
ProjectorState
Definition: stereo_camera.h:20
StereoCamera::onTelecentricProjection
void onTelecentricProjection(ensenso::action::TelecentricProjectionGoalConstPtr const &goal)
Definition: stereo_camera.cpp:1040
StereoCamera::rightCameraInfo
sensor_msgs::msg::CameraInfoPtr rightCameraInfo
Definition: stereo_camera.h:31
StereoCamera::leftRawImagePublisher
image_transport::CameraPublisher leftRawImagePublisher
Definition: stereo_camera.h:44
StereoCamera::updateCameraInfo
void updateCameraInfo() override
Definition: stereo_camera.cpp:1510
PointCloudPublisher
ensenso::ros::Publisher< T > PointCloudPublisher
Definition: pcl.h:63
StereoCamera::writeParameter
void writeParameter(ensenso::msg::Parameter const &parameter) override
Definition: stereo_camera.cpp:1562
StereoCamera::onLocatePattern
void onLocatePattern(ensenso::action::LocatePatternGoalConstPtr const &goal)
Definition: stereo_camera.cpp:537
StereoCamera::telecentricProjectionServer
std::unique_ptr< TelecentricProjectionServer > telecentricProjectionServer
Definition: stereo_camera.h:42
image_transport::Publisher
StereoCamera::capture
ensenso::ros::Time capture() const override
Definition: stereo_camera.cpp:1281
StereoCamera::loadParameterSet
void loadParameterSet(std::string name, ProjectorState projector=projectorDontCare)
Definition: stereo_camera.cpp:1217
StereoCamera::handEyeCalibrationRobotTransforms
std::vector< tf2::Transform > handEyeCalibrationRobotTransforms
Definition: stereo_camera.h:61
locate_pattern.h
telecentric_projection.h
StereoCamera::StereoCamera
StereoCamera(ensenso::ros::NodeHandle &nh, CameraParameters params)
Definition: stereo_camera.cpp:9
StereoCamera::requestDataServer
std::unique_ptr< RequestDataServer > requestDataServer
Definition: stereo_camera.h:40
StereoCamera::leftRectifiedCameraInfo
sensor_msgs::msg::CameraInfoPtr leftRectifiedCameraInfo
Definition: stereo_camera.h:32
StereoCamera::pointCloudNormalsPublisher
PointCloudPublisher< ensenso::pcl::PointCloudNormals > pointCloudNormalsPublisher
Definition: stereo_camera.h:53
projectorDontCare
@ projectorDontCare
Definition: stereo_camera.h:22
calibrate_workspace.h
StereoCamera::hasRightCamera
bool hasRightCamera() const
Definition: stereo_camera.cpp:1614
Camera::nh
ensenso::ros::NodeHandle nh
Definition: camera.h:271
StereoCamera::addDisparityMapOffset
void addDisparityMapOffset(sensor_msgs::msg::CameraInfoPtr const &info) const
Definition: stereo_camera.cpp:1635
request_data.h
StereoCamera::saveParameterSet
void saveParameterSet(std::string name, bool projectorWasSet)
Definition: stereo_camera.cpp:1201
StereoCamera::leftRectifiedImagePublisher
image_transport::CameraPublisher leftRectifiedImagePublisher
Definition: stereo_camera.h:46
textured_point_cloud.h


ensenso_camera
Author(s): Ensenso
autogenerated on Wed Apr 2 2025 02:37:46