reconfigure.h
Go to the documentation of this file.
1 
34 #ifndef MULTISENSE_ROS_RECONFIGURE_H
35 #define MULTISENSE_ROS_RECONFIGURE_H
36 
37 #include <ros/ros.h>
38 #include <chrono>
39 #include <thread>
40 
41 #include <multisense_lib/MultiSenseChannel.hh>
42 
43 #include <dynamic_reconfigure/server.h>
44 #include <multisense_ros/sl_bm_cmv2000Config.h>
45 #include <multisense_ros/sl_bm_cmv2000_imuConfig.h>
46 #include <multisense_ros/sl_bm_cmv4000Config.h>
47 #include <multisense_ros/sl_bm_cmv4000_imuConfig.h>
48 #include <multisense_ros/sl_sgm_cmv2000_imuConfig.h>
49 #include <multisense_ros/sl_sgm_cmv4000_imuConfig.h>
50 #include <multisense_ros/bcam_imx104Config.h>
51 #include <multisense_ros/st21_sgm_vga_imuConfig.h>
52 #include <multisense_ros/mono_cmv2000Config.h>
53 #include <multisense_ros/mono_cmv4000Config.h>
54 #include <multisense_ros/s27_sgm_AR0234Config.h>
55 #include <multisense_ros/s27_sgm_AR0234_ground_surfaceConfig.h>
56 #include <multisense_ros/ks21_sgm_AR0234Config.h>
57 #include <multisense_ros/ks21_sgm_AR0234_ground_surfaceConfig.h>
58 #include <multisense_ros/remote_head_vpbConfig.h>
59 #include <multisense_ros/remote_head_sgm_AR0234Config.h>
60 #include <multisense_ros/remote_head_sgm_AR0234_ground_surfaceConfig.h>
61 #include <multisense_ros/remote_head_monocam_AR0234Config.h>
64 
65 namespace multisense_ros {
66 
67 class Reconfigure {
68 public:
69 
71  std::function<void (crl::multisense::image::Config)> resolutionChangeCallback,
72  std::function<void (BorderClip, double)> borderClipChangeCallback,
73  std::function<void (double)> maxPointCloudRangeCallback,
74  std::function<void (crl::multisense::system::ExternalCalibration)> extrinsicsCallback,
75  std::function<void (ground_surface_utilities::SplineDrawParameters)> groundSurfaceSplineDrawParametersCallback);
76 
77  ~Reconfigure();
78 
80 
81 private:
82 
83  //
84  // Dynamic reconfigure callback variations
85 
86  void callback_sl_bm_cmv2000 (multisense_ros::sl_bm_cmv2000Config& config, uint32_t level);
87  void callback_sl_bm_cmv2000_imu (multisense_ros::sl_bm_cmv2000_imuConfig& config, uint32_t level);
88  void callback_sl_bm_cmv4000 (multisense_ros::sl_bm_cmv4000Config& config, uint32_t level);
89  void callback_sl_bm_cmv4000_imu (multisense_ros::sl_bm_cmv4000_imuConfig& config, uint32_t level);
90  void callback_sl_sgm_cmv2000_imu(multisense_ros::sl_sgm_cmv2000_imuConfig& config, uint32_t level);
91  void callback_sl_sgm_cmv4000_imu(multisense_ros::sl_sgm_cmv4000_imuConfig& config, uint32_t level);
92  void callback_bcam_imx104 (multisense_ros::bcam_imx104Config& config, uint32_t level);
93  void callback_st21_vga (multisense_ros::st21_sgm_vga_imuConfig& config, uint32_t level);
94  void callback_mono_cmv2000 (multisense_ros::mono_cmv2000Config& config, uint32_t level);
95  void callback_mono_cmv4000 (multisense_ros::mono_cmv4000Config& config, uint32_t level);
96  void callback_s27_AR0234 (multisense_ros::s27_sgm_AR0234Config& config, uint32_t level);
97  void callback_ks21_AR0234 (multisense_ros::ks21_sgm_AR0234Config& config, uint32_t level);
98 
99  void callback_s27_AR0234_ground_surface (multisense_ros::s27_sgm_AR0234_ground_surfaceConfig& dyn, uint32_t level);
100  void callback_ks21_AR0234_ground_surface (multisense_ros::ks21_sgm_AR0234_ground_surfaceConfig& dyn, uint32_t level);
101 
102  void callback_remote_head_vpb (multisense_ros::remote_head_vpbConfig& dyn, uint32_t level);
103  void callback_remote_head_sgm_AR0234 (multisense_ros::remote_head_sgm_AR0234Config& dyn, uint32_t level);
104  void callback_remote_head_sgm_AR0234_ground_surface(multisense_ros::remote_head_sgm_AR0234_ground_surfaceConfig& dyn, uint32_t level);
105  void callback_remote_head_monocam_AR0234 (multisense_ros::remote_head_monocam_AR0234Config& dyn, uint32_t level);
106 
107  //
108  // Internal helper functions
109 
111  int32_t width, int32_t height, int32_t disparities);
112  template<class T> void configureSgm(crl::multisense::image::Config& cfg, const T& dyn);
113  template<class T> void configureHdr(crl::multisense::image::Config& cfg, const T& dyn);
114  template<class T> void configureAutoWhiteBalance(crl::multisense::image::Config& cfg, const T& dyn);
115  template<class T> void configureAuxCamera(const T& dyn);
116  template<class T> void configureCamera(crl::multisense::image::Config& cfg, const T& dyn);
117  template<class T> void configureMotor(const T& dyn);
118  template<class T> void configureLeds(const T& dyn);
119  template<class T> void configureS19Leds(const T& dyn);
120  template<class T> void configureImu(const T& dyn);
121  template<class T> void configureBorderClip(const T& dyn);
122  template<class T> void configurePointCloudRange(const T& dyn);
123  template<class T> void configurePtp(const T& dyn);
124  template<class T> void configureStereoProfile(crl::multisense::CameraProfile &profile, const T& dyn);
125  template<class T> void configureGroundSurfaceStereoProfile(crl::multisense::CameraProfile &profile, const T& dyn);
126  template<class T> void configureFullResAuxStereoProfile(crl::multisense::CameraProfile &profile, const T& dyn);
127  template<class T> void configureDetailDisparityStereoProfile(crl::multisense::CameraProfile &profile, const T& dyn);
128  template<class T> void configureExtrinsics(const T& dyn);
129  template<class T> void configureGroundSurfaceParams(const T& dyn);
130 
131  //
132  // CRL sensor API
133 
135 
136  //
137  // Resolution change callback
138 
139  std::function<void (crl::multisense::image::Config)> resolution_change_callback_;
140 
141  //
142  // Driver nodes
143 
145 
146  //
147  // Cached modes from the sensor
148 
149  std::vector<crl::multisense::system::DeviceMode> device_modes_;
151  std::vector<crl::multisense::imu::Config> imu_configs_;
152 
153  //
154  // Dynamic reconfigure server variations
155 
156  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::sl_bm_cmv2000Config> > server_sl_bm_cmv2000_;
157  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::sl_bm_cmv2000_imuConfig> > server_sl_bm_cmv2000_imu_;
158  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::sl_bm_cmv4000Config> > server_sl_bm_cmv4000_;
159  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::sl_bm_cmv4000_imuConfig> > server_sl_bm_cmv4000_imu_;
160  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::sl_sgm_cmv2000_imuConfig> > server_sl_sgm_cmv2000_imu_;
161  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::sl_sgm_cmv4000_imuConfig> > server_sl_sgm_cmv4000_imu_;
162  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::bcam_imx104Config> > server_bcam_imx104_;
163  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::st21_sgm_vga_imuConfig> > server_st21_vga_;
164  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::mono_cmv2000Config> > server_mono_cmv2000_;
165  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::mono_cmv4000Config> > server_mono_cmv4000_;
166  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::s27_sgm_AR0234Config> > server_s27_AR0234_;
167  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::ks21_sgm_AR0234Config> > server_ks21_sgm_AR0234_;
168  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::s27_sgm_AR0234_ground_surfaceConfig> > server_s27_AR0234_ground_surface_;
169  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::ks21_sgm_AR0234_ground_surfaceConfig> > server_ks21_sgm_AR0234_ground_surface_;
170 
171  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::remote_head_vpbConfig> > server_remote_head_vpb_;
172  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::remote_head_sgm_AR0234Config> > server_remote_head_sgm_AR0234_;
173  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::remote_head_sgm_AR0234_ground_surfaceConfig> > server_remote_head_sgm_AR0234_ground_surface_;
174  std::shared_ptr< dynamic_reconfigure::Server<multisense_ros::remote_head_monocam_AR0234Config> > server_remote_head_monocam_AR0234_;
175 
176  //
177  // Cached values for supported sub-systems (these may be unavailable on
178  // certain hardware variations: S7, S7S, M, etc.)
179 
180  bool lighting_supported_ = false;
181  bool motor_supported_ = false;
182  bool crop_mode_changed_ = false;
183  bool ptp_supported_ = false;
184  bool roi_supported_ = false;
185  bool aux_supported_ = false;
187 
188  //
189  // Cached value for the boarder clip. These are used to determine if we
190  // should regenerate our border clipping mask
191 
193  double border_clip_value_ = 0.0;
194 
195  //
196  // Border clip change callback
197 
198  std::function<void (BorderClip, double)> border_clip_change_callback_;
199 
200  //
201  // Max point cloud range callback
202 
203  std::function<void (double)> max_point_cloud_range_callback_;
204 
205  //
206  // Extrinsics callback to modify pointcloud
207 
209  std::function<void (crl::multisense::system::ExternalCalibration)> extrinsics_callback_;
210 
211  //
212  // Extrinsics callback to modify pointcloud
213 
214  std::function<void (ground_surface_utilities::SplineDrawParameters)> spline_draw_parameters_callback_;
215 };
216 
217 } // multisense_ros
218 
219 #endif
void callback_sl_bm_cmv4000(multisense_ros::sl_bm_cmv4000Config &config, uint32_t level)
void callback_s27_AR0234(multisense_ros::s27_sgm_AR0234Config &config, uint32_t level)
uint32_t CameraProfile
void imuCallback(const crl::multisense::imu::Header &header)
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::sl_bm_cmv2000_imuConfig > > server_sl_bm_cmv2000_imu_
Definition: reconfigure.h:157
void configureCamera(crl::multisense::image::Config &cfg, const T &dyn)
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::remote_head_sgm_AR0234Config > > server_remote_head_sgm_AR0234_
Definition: reconfigure.h:172
std::function< void(BorderClip, double)> border_clip_change_callback_
Definition: reconfigure.h:198
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::mono_cmv4000Config > > server_mono_cmv4000_
Definition: reconfigure.h:165
void configureBorderClip(const T &dyn)
void configureGroundSurfaceStereoProfile(crl::multisense::CameraProfile &profile, const T &dyn)
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::sl_bm_cmv4000_imuConfig > > server_sl_bm_cmv4000_imu_
Definition: reconfigure.h:159
std::vector< crl::multisense::system::DeviceMode > device_modes_
Definition: reconfigure.h:149
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::ks21_sgm_AR0234Config > > server_ks21_sgm_AR0234_
Definition: reconfigure.h:167
crl::multisense::Channel * driver_
Definition: reconfigure.h:134
void callback_ks21_AR0234(multisense_ros::ks21_sgm_AR0234Config &config, uint32_t level)
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::bcam_imx104Config > > server_bcam_imx104_
Definition: reconfigure.h:162
void callback_mono_cmv4000(multisense_ros::mono_cmv4000Config &config, uint32_t level)
void configureAuxCamera(const T &dyn)
void callback_mono_cmv2000(multisense_ros::mono_cmv2000Config &config, uint32_t level)
void configurePointCloudRange(const T &dyn)
void callback_sl_sgm_cmv4000_imu(multisense_ros::sl_sgm_cmv4000_imuConfig &config, uint32_t level)
void callback_remote_head_sgm_AR0234(multisense_ros::remote_head_sgm_AR0234Config &dyn, uint32_t level)
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::st21_sgm_vga_imuConfig > > server_st21_vga_
Definition: reconfigure.h:163
void callback_st21_vga(multisense_ros::st21_sgm_vga_imuConfig &config, uint32_t level)
void callback_s27_AR0234_ground_surface(multisense_ros::s27_sgm_AR0234_ground_surfaceConfig &dyn, uint32_t level)
void callback_sl_sgm_cmv2000_imu(multisense_ros::sl_sgm_cmv2000_imuConfig &config, uint32_t level)
void configureExtrinsics(const T &dyn)
void callback_remote_head_sgm_AR0234_ground_surface(multisense_ros::remote_head_sgm_AR0234_ground_surfaceConfig &dyn, uint32_t level)
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::sl_sgm_cmv2000_imuConfig > > server_sl_sgm_cmv2000_imu_
Definition: reconfigure.h:160
ros::NodeHandle device_nh_
Definition: reconfigure.h:144
void configureHdr(crl::multisense::image::Config &cfg, const T &dyn)
void callback_sl_bm_cmv4000_imu(multisense_ros::sl_bm_cmv4000_imuConfig &config, uint32_t level)
std::function< void(ground_surface_utilities::SplineDrawParameters)> spline_draw_parameters_callback_
Definition: reconfigure.h:214
crl::multisense::system::ExternalCalibration calibration_
Definition: reconfigure.h:208
void configureMotor(const T &dyn)
void callback_ks21_AR0234_ground_surface(multisense_ros::ks21_sgm_AR0234_ground_surfaceConfig &dyn, uint32_t level)
void configureImu(const T &dyn)
Reconfigure(crl::multisense::Channel *driver, std::function< void(crl::multisense::image::Config)> resolutionChangeCallback, std::function< void(BorderClip, double)> borderClipChangeCallback, std::function< void(double)> maxPointCloudRangeCallback, std::function< void(crl::multisense::system::ExternalCalibration)> extrinsicsCallback, std::function< void(ground_surface_utilities::SplineDrawParameters)> groundSurfaceSplineDrawParametersCallback)
Definition: reconfigure.cpp:40
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::remote_head_vpbConfig > > server_remote_head_vpb_
Definition: reconfigure.h:171
Struct containing parameters for drawing a pointcloud representation of a B-Spline model...
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::ks21_sgm_AR0234_ground_surfaceConfig > > server_ks21_sgm_AR0234_ground_surface_
Definition: reconfigure.h:169
std::function< void(crl::multisense::system::ExternalCalibration)> extrinsics_callback_
Definition: reconfigure.h:209
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::sl_bm_cmv4000Config > > server_sl_bm_cmv4000_
Definition: reconfigure.h:158
void configureDetailDisparityStereoProfile(crl::multisense::CameraProfile &profile, const T &dyn)
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::remote_head_sgm_AR0234_ground_surfaceConfig > > server_remote_head_sgm_AR0234_ground_surface_
Definition: reconfigure.h:173
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::remote_head_monocam_AR0234Config > > server_remote_head_monocam_AR0234_
Definition: reconfigure.h:174
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::sl_bm_cmv2000Config > > server_sl_bm_cmv2000_
Definition: reconfigure.h:156
std::function< void(crl::multisense::image::Config)> resolution_change_callback_
Definition: reconfigure.h:139
void configureSgm(crl::multisense::image::Config &cfg, const T &dyn)
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::s27_sgm_AR0234_ground_surfaceConfig > > server_s27_AR0234_ground_surface_
Definition: reconfigure.h:168
void configureAutoWhiteBalance(crl::multisense::image::Config &cfg, const T &dyn)
bool changeResolution(crl::multisense::image::Config &cfg, int32_t width, int32_t height, int32_t disparities)
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::s27_sgm_AR0234Config > > server_s27_AR0234_
Definition: reconfigure.h:166
void configureFullResAuxStereoProfile(crl::multisense::CameraProfile &profile, const T &dyn)
void callback_remote_head_vpb(multisense_ros::remote_head_vpbConfig &dyn, uint32_t level)
void callback_sl_bm_cmv2000(multisense_ros::sl_bm_cmv2000Config &config, uint32_t level)
void configureStereoProfile(crl::multisense::CameraProfile &profile, const T &dyn)
bool reconfigure_external_calibration_supported_
Definition: reconfigure.h:186
void callback_bcam_imx104(multisense_ros::bcam_imx104Config &config, uint32_t level)
const std::string header
void configureGroundSurfaceParams(const T &dyn)
void callback_sl_bm_cmv2000_imu(multisense_ros::sl_bm_cmv2000_imuConfig &config, uint32_t level)
void configurePtp(const T &dyn)
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::mono_cmv2000Config > > server_mono_cmv2000_
Definition: reconfigure.h:164
std::vector< crl::multisense::imu::Config > imu_configs_
Definition: reconfigure.h:151
std::function< void(double)> max_point_cloud_range_callback_
Definition: reconfigure.h:203
void configureS19Leds(const T &dyn)
void callback_remote_head_monocam_AR0234(multisense_ros::remote_head_monocam_AR0234Config &dyn, uint32_t level)
std::shared_ptr< dynamic_reconfigure::Server< multisense_ros::sl_sgm_cmv4000_imuConfig > > server_sl_sgm_cmv4000_imu_
Definition: reconfigure.h:161
void configureLeds(const T &dyn)


multisense_ros
Author(s):
autogenerated on Sat Jun 24 2023 03:01:30