stereo_camera.h
Go to the documentation of this file.
1 #pragma once
2 
4 
6 
7 #include <ensenso_camera_msgs/RequestDataAction.h>
8 #include <ensenso_camera_msgs/LocatePatternAction.h>
9 #include <ensenso_camera_msgs/ProjectPatternAction.h>
10 #include <ensenso_camera_msgs/TexturedPointCloudAction.h>
11 #include <ensenso_camera_msgs/TelecentricProjectionAction.h>
12 
21 
27 {
28  projectorDontCare, //@< Inherit the projector settings from the parameter set.
29  projectorOn, //@< Enable the projector and disable the front light.
30  projectorOff //@< Enable the front light and disable the projector.
31 };
32 
33 class StereoCamera : public Camera
34 {
35 private:
36  std::string robotFrame;
37  std::string wristFrame;
38 
39  sensor_msgs::CameraInfoPtr leftCameraInfo;
40  sensor_msgs::CameraInfoPtr rightCameraInfo;
41  sensor_msgs::CameraInfoPtr leftRectifiedCameraInfo;
42  sensor_msgs::CameraInfoPtr rightRectifiedCameraInfo;
43 
44  std::unique_ptr<RequestDataServer> requestDataServer;
45  std::unique_ptr<CalibrateHandEyeServer> calibrateHandEyeServer;
46  std::unique_ptr<CalibrateWorkspaceServer> calibrateWorkspaceServer;
47  std::unique_ptr<FitPrimitiveServer> fitPrimitiveServer;
48  std::unique_ptr<LocatePatternServer> locatePatternServer;
49  std::unique_ptr<ProjectPatternServer> projectPatternServer;
50  std::unique_ptr<TexturedPointCloudServer> texturedPointCloudServer;
51  std::unique_ptr<TelecentricProjectionServer> telecentricProjectionServer;
52 
60 
62 
63  // Information that we remember between the different steps of the hand eye
64  // calibration.
65  // We save the pattern buffer outside of the NxLib, because otherwise we
66  // could not use the LocatePattern action while a hand eye calibration is
67  // in progress.
69  std::vector<tf2::Transform> handEyeCalibrationRobotPoses;
70 
71  // Timeout, in milliseconds, used for capture commands. If <= 0, default timeout is used.
73 
74  // Handler for virtual objects.
75  // If set, will update the 'Objects' item based on the current pose of the camera, before each capture.
76  std::unique_ptr<ensenso_camera::VirtualObjectHandler> virtualObjectHandler;
77 
78 public:
79  StereoCamera(ros::NodeHandle nh, std::string serial, std::string fileCameraPath, bool fixed, std::string cameraFrame,
80  std::string targetFrame, std::string robotFrame, std::string wristFrame, std::string linkFrame,
81  int captureTimeout, std::unique_ptr<ensenso_camera::VirtualObjectHandler> virtualObjectHandler=nullptr);
82 
83  bool open() override;
84 
89  void startServers() const override;
90 
94  void onSetParameter(ensenso_camera_msgs::SetParameterGoalConstPtr const& goal) override;
98  void onRequestData(ensenso_camera_msgs::RequestDataGoalConstPtr const& goal);
102  void onLocatePattern(ensenso_camera_msgs::LocatePatternGoalConstPtr const& goal);
106  void onProjectPattern(ensenso_camera_msgs::ProjectPatternGoalConstPtr const& goal);
110  void onCalibrateHandEye(ensenso_camera_msgs::CalibrateHandEyeGoalConstPtr const& goal);
114  void onCalibrateWorkspace(ensenso_camera_msgs::CalibrateWorkspaceGoalConstPtr const& goal);
118  void onFitPrimitive(ensenso_camera_msgs::FitPrimitiveGoalConstPtr const& goal);
119 
123  void onTexturedPointCloud(ensenso_camera_msgs::TexturedPointCloudGoalConstPtr const& goal);
124 
128  void onTelecentricProjection(ensenso_camera_msgs::TelecentricProjectionGoalConstPtr const& goal);
129 private:
137  void saveParameterSet(std::string name, bool projectorWasSet);
138 
147  void loadParameterSet(std::string name, ProjectorState projector = projectorDontCare);
148 
152  ros::Time capture() const override;
153 
158  std::vector<StereoCalibrationPattern> collectPattern(bool clearBuffer = false) const;
159 
169  void fillCameraInfoFromNxLib(sensor_msgs::CameraInfoPtr const& info, bool right, bool rectified = false) const;
174  void updateCameraInfo() override;
175 
176  ensenso_camera_msgs::ParameterPtr readParameter(std::string const& key) const override;
177  void writeParameter(ensenso_camera_msgs::Parameter const& parameter) override;
178 };
std::vector< tf2::Transform > handEyeCalibrationRobotPoses
Definition: stereo_camera.h:69
std::unique_ptr< FitPrimitiveServer > fitPrimitiveServer
Definition: stereo_camera.h:47
void writeParameter(ensenso_camera_msgs::Parameter const &parameter) override
void onFitPrimitive(ensenso_camera_msgs::FitPrimitiveGoalConstPtr const &goal)
void onProjectPattern(ensenso_camera_msgs::ProjectPatternGoalConstPtr const &goal)
bool fixed
Definition: camera.h:197
std::string targetFrame
Definition: camera.h:201
image_transport::CameraPublisher leftRectifiedImagePublisher
Definition: stereo_camera.h:55
ros::NodeHandle nh
Definition: camera.h:203
void onCalibrateWorkspace(ensenso_camera_msgs::CalibrateWorkspaceGoalConstPtr const &goal)
void onTexturedPointCloud(ensenso_camera_msgs::TexturedPointCloudGoalConstPtr const &goal)
StereoCamera(ros::NodeHandle nh, std::string serial, std::string fileCameraPath, bool fixed, std::string cameraFrame, std::string targetFrame, std::string robotFrame, std::string wristFrame, std::string linkFrame, int captureTimeout, std::unique_ptr< ensenso_camera::VirtualObjectHandler > virtualObjectHandler=nullptr)
image_transport::Publisher disparityMapPublisher
Definition: stereo_camera.h:57
std::unique_ptr< ProjectPatternServer > projectPatternServer
Definition: stereo_camera.h:49
std::unique_ptr< ensenso_camera::VirtualObjectHandler > virtualObjectHandler
Definition: stereo_camera.h:76
std::string cameraFrame
Definition: camera.h:199
image_transport::Publisher projectedImagePublisher
Definition: stereo_camera.h:59
ProjectorState
Definition: stereo_camera.h:26
std::string handEyeCalibrationPatternBuffer
Definition: stereo_camera.h:68
std::unique_ptr< CalibrateWorkspaceServer > calibrateWorkspaceServer
Definition: stereo_camera.h:46
sensor_msgs::CameraInfoPtr leftCameraInfo
Definition: stereo_camera.h:39
ros::Publisher projectedPointCloudPublisher
Definition: stereo_camera.h:61
ros::Publisher pointCloudPublisherColor
Definition: stereo_camera.h:61
image_transport::CameraPublisher depthImagePublisher
Definition: stereo_camera.h:58
std::string serial
Definition: camera.h:190
std::unique_ptr< CalibrateHandEyeServer > calibrateHandEyeServer
Definition: stereo_camera.h:45
std::vector< StereoCalibrationPattern > collectPattern(bool clearBuffer=false) const
void startServers() const override
std::unique_ptr< LocatePatternServer > locatePatternServer
Definition: stereo_camera.h:48
sensor_msgs::CameraInfoPtr leftRectifiedCameraInfo
Definition: stereo_camera.h:41
void loadParameterSet(std::string name, ProjectorState projector=projectorDontCare)
ros::Time capture() const override
std::string fileCameraPath
Definition: camera.h:183
ros::Publisher pointCloudPublisher
Definition: stereo_camera.h:61
void onSetParameter(ensenso_camera_msgs::SetParameterGoalConstPtr const &goal) override
std::unique_ptr< RequestDataServer > requestDataServer
Definition: stereo_camera.h:44
std::unique_ptr< TexturedPointCloudServer > texturedPointCloudServer
Definition: stereo_camera.h:50
void fillCameraInfoFromNxLib(sensor_msgs::CameraInfoPtr const &info, bool right, bool rectified=false) const
sensor_msgs::CameraInfoPtr rightRectifiedCameraInfo
Definition: stereo_camera.h:42
std::string linkFrame
Definition: camera.h:200
void saveParameterSet(std::string name, bool projectorWasSet)
std::string robotFrame
Definition: stereo_camera.h:36
void onRequestData(ensenso_camera_msgs::RequestDataGoalConstPtr const &goal)
void onCalibrateHandEye(ensenso_camera_msgs::CalibrateHandEyeGoalConstPtr const &goal)
void onLocatePattern(ensenso_camera_msgs::LocatePatternGoalConstPtr const &goal)
image_transport::CameraPublisher leftRawImagePublisher
Definition: stereo_camera.h:53
void updateCameraInfo() override
image_transport::CameraPublisher rightRawImagePublisher
Definition: stereo_camera.h:54
bool open() override
ensenso_camera_msgs::ParameterPtr readParameter(std::string const &key) const override
image_transport::CameraPublisher rightRectifiedImagePublisher
Definition: stereo_camera.h:56
Definition: camera.h:179
sensor_msgs::CameraInfoPtr rightCameraInfo
Definition: stereo_camera.h:40
void onTelecentricProjection(ensenso_camera_msgs::TelecentricProjectionGoalConstPtr const &goal)
std::unique_ptr< TelecentricProjectionServer > telecentricProjectionServer
Definition: stereo_camera.h:51
std::string wristFrame
Definition: stereo_camera.h:37


ensenso_camera
Author(s): Ensenso
autogenerated on Thu May 6 2021 02:50:06