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 };
std::vector< tf2::Transform > handEyeCalibrationRobotTransforms
Definition: stereo_camera.h:61
void onFitPrimitive(ensenso::action::FitPrimitiveGoalConstPtr const &goal)
std::unique_ptr< FitPrimitiveServer > fitPrimitiveServer
Definition: stereo_camera.h:37
StereoCamera(ensenso::ros::NodeHandle &nh, CameraParameters params)
sensor_msgs::msg::CameraInfoPtr rightRectifiedCameraInfo
Definition: stereo_camera.h:33
sensor_msgs::msg::CameraInfoPtr leftRectifiedCameraInfo
Definition: stereo_camera.h:32
void onCalibrateWorkspace(ensenso::action::CalibrateWorkspaceGoalConstPtr const &goal)
::ros::Time Time
Definition: time.h:67
void addDisparityMapOffset(sensor_msgs::msg::CameraInfoPtr const &info) const
ensenso::ros::Publisher< T > PointCloudPublisher
Definition: pcl.h:63
image_transport::CameraPublisher leftRectifiedImagePublisher
Definition: stereo_camera.h:46
bool hasRightCamera() const
PointCloudPublisher< ensenso::pcl::PointCloud > pointCloudPublisher
Definition: stereo_camera.h:52
CameraParameters params
Definition: camera.h:258
std::unique_ptr< ProjectPatternServer > projectPatternServer
Definition: stereo_camera.h:39
bool hasDownloadedImages() const
void onProjectPattern(ensenso::action::ProjectPatternGoalConstPtr const &goal)
ensenso::ros::Time timestampOfCapturedImage() const
void init() override
image_transport::Publisher projectedImagePublisher
Definition: stereo_camera.h:50
ProjectorState
Definition: stereo_camera.h:20
std::string handEyeCalibrationPatternBuffer
Definition: stereo_camera.h:60
std::unique_ptr< CalibrateWorkspaceServer > calibrateWorkspaceServer
Definition: stereo_camera.h:36
ensenso::msg::ParameterPtr readParameter(std::string const &key) const override
ensenso::ros::NodeHandle nh
Definition: camera.h:271
void updateCameraTypeSpecifics() override
bool isXrSeries() const
image_transport::CameraPublisher depthImagePublisher
Definition: stereo_camera.h:49
void onTexturedPointCloud(ensenso::action::TexturedPointCloudGoalConstPtr const &goal)
std::unique_ptr< CalibrateHandEyeServer > calibrateHandEyeServer
Definition: stereo_camera.h:35
void startServers() const override
std::unique_ptr< LocatePatternServer > locatePatternServer
Definition: stereo_camera.h:38
bool isSSeries() const
void onTelecentricProjection(ensenso::action::TelecentricProjectionGoalConstPtr const &goal)
void advertiseTopics()
void fillCameraInfoFromNxLib(sensor_msgs::msg::CameraInfoPtr const &info, bool right, bool rectified=false) const
void loadParameterSet(std::string name, ProjectorState projector=projectorDontCare)
ensenso::ros::Time capture() const override
image_transport::CameraPublisher disparityMapPublisher
Definition: stereo_camera.h:48
::ros::NodeHandle NodeHandle
Definition: node.h:214
std::unique_ptr< RequestDataServer > requestDataServer
Definition: stereo_camera.h:40
std::unique_ptr< TexturedPointCloudServer > texturedPointCloudServer
Definition: stereo_camera.h:41
PointCloudPublisher< ensenso::pcl::PointCloud > pointCloudProjectedPublisher
Definition: stereo_camera.h:55
void saveParameterSet(std::string name, bool projectorWasSet)
void onSetParameter(ensenso::action::SetParameterGoalConstPtr const &goal) override
PointCloudPublisher< ensenso::pcl::PointCloudNormals > pointCloudNormalsPublisher
Definition: stereo_camera.h:53
std::vector< StereoCalibrationPattern > collectPattern(bool clearBuffer=false) const
void onRequestData(ensenso::action::RequestDataGoalConstPtr const &goal)
sensor_msgs::msg::CameraInfoPtr leftCameraInfo
Definition: stereo_camera.h:30
sensor_msgs::msg::CameraInfoPtr rightCameraInfo
Definition: stereo_camera.h:31
bool hasDisparityMap() const
image_transport::CameraPublisher leftRawImagePublisher
Definition: stereo_camera.h:44
void updateCameraInfo() override
image_transport::CameraPublisher rightRawImagePublisher
Definition: stereo_camera.h:45
bool hasRawImages() const
void writeParameter(ensenso::msg::Parameter const &parameter) override
void onLocatePattern(ensenso::action::LocatePatternGoalConstPtr const &goal)
image_transport::CameraPublisher rightRectifiedImagePublisher
Definition: stereo_camera.h:47
Definition: camera.h:255
std::vector< geometry_msgs::msg::PoseStamped > estimatePatternPoses(ensenso::ros::Time imageTimestamp, std::string const &targetFrame="") const override
void onCalibrateHandEye(ensenso::action::CalibrateHandEyeGoalConstPtr const &goal)
std::unique_ptr< TelecentricProjectionServer > telecentricProjectionServer
Definition: stereo_camera.h:42
PointCloudPublisher< ensenso::pcl::PointCloudColored > pointCloudColoredPublisher
Definition: stereo_camera.h:54
geometry_msgs::msg::PoseStamped estimatePatternPose(ensenso::ros::Time imageTimestamp, std::string const &targetFrame="", bool latestPatternOnly=false) const override


ensenso_camera
Author(s): Ensenso
autogenerated on Sat Jun 3 2023 02:17:04