configuration.cc
Go to the documentation of this file.
1 
37 #include <algorithm>
38 
41 
42 namespace multisense {
43 namespace legacy {
44 
46  const std::optional<crl::multisense::details::wire::AuxCamConfig> &aux_config,
47  const std::optional<crl::multisense::details::wire::ImuConfig> &imu_config,
48  const std::optional<crl::multisense::details::wire::LedStatus> &led_config,
50  bool ptp_enabled,
51  const MultiSenseInfo::DeviceInfo &info,
52  const std::optional<MultiSenseInfo::ImuInfo> &imu_info)
53 {
54  using namespace crl::multisense::details;
55 
56  using ms_config = MultiSenseConfig;
57 
58  ms_config::StereoConfig stereo{config.stereoPostFilterStrength};
59 
60  ms_config::ManualExposureConfig manual_exposure{config.gain,
61  std::chrono::microseconds{config.exposure}};
62 
63  ms_config::AutoExposureRoiConfig auto_exposure_roi{config.autoExposureRoiX,
64  config.autoExposureRoiY,
65  config.autoExposureRoiWidth,
66  config.autoExposureRoiHeight};
67 
68  ms_config::AutoExposureConfig auto_exposure{std::chrono::microseconds{config.autoExposureMax},
69  config.autoExposureDecay,
71  config.autoExposureThresh,
72  config.gainMax,
73  std::move(auto_exposure_roi)};
74 
75  ms_config::ManualWhiteBalanceConfig manual_white_balance{config.whiteBalanceRed, config.whiteBalanceBlue};
76  ms_config::AutoWhiteBalanceConfig auto_white_balance{config.autoWhiteBalanceDecay,
77  config.autoWhiteBalanceThresh};
78 
79  const bool main_color = info.has_main_stereo_color();
80 
81  ms_config::ImageConfig image{config.gamma,
82  (config.autoExposure != 0),
83  std::move(manual_exposure),
84  std::move(auto_exposure),
85  (main_color && config.autoWhiteBalance != 0),
86  (main_color ? std::make_optional(std::move(manual_white_balance)) : std::nullopt),
87  (main_color ? std::make_optional(std::move(auto_white_balance)) : std::nullopt)};
88 
89  return MultiSenseConfig{config.width,
90  config.height,
92  config.framesPerSecond,
93  std::move(stereo),
94  std::move(image),
95  (aux_config ? std::make_optional(convert(aux_config.value())) : std::nullopt),
96  ms_config::TimeConfig{ptp_enabled},
97  convert(packet_delay),
98  (imu_config && imu_info) ?
99  std::make_optional(convert(imu_config.value(), imu_info.value())) :
100  std::nullopt,
101  (led_config && led_config->available) ?
102  std::make_optional(convert(led_config.value(), info.lighting_type)) :
103  std::nullopt};
104 }
105 
107 {
108  using namespace crl::multisense::details;
109  using ms_config = MultiSenseConfig;
110 
111  ms_config::ManualExposureConfig manual_exposure{config.gain,
112  std::chrono::microseconds{config.exposure}};
113 
114  ms_config::AutoExposureRoiConfig auto_exposure_roi{config.autoExposureRoiX,
115  config.autoExposureRoiY,
116  config.autoExposureRoiWidth,
117  config.autoExposureRoiHeight};
118 
119  ms_config::AutoExposureConfig auto_exposure{std::chrono::microseconds{config.autoExposureMax},
120  config.autoExposureDecay,
122  config.autoExposureThresh,
123  config.gainMax,
124  std::move(auto_exposure_roi)};
125 
126  ms_config::ManualWhiteBalanceConfig manual_white_balance{config.whiteBalanceRed, config.whiteBalanceBlue};
127  ms_config::AutoWhiteBalanceConfig auto_white_balance{config.autoWhiteBalanceDecay,
128  config.autoWhiteBalanceThresh};
129 
130  ms_config::ImageConfig image{config.gamma,
131  (config.autoExposure != 0),
132  std::move(manual_exposure),
133  std::move(auto_exposure),
134  (config.autoWhiteBalance != 0),
135  std::move(manual_white_balance),
136  std::move(auto_white_balance)};
137 
138  return ms_config::AuxConfig{std::move(image),
139  config.sharpeningEnable,
140  config.sharpeningPercentage,
141  config.sharpeningLimit};
142 }
143 
144 template <>
145 crl::multisense::details::wire::CamSetResolution convert<crl::multisense::details::wire::CamSetResolution>(const MultiSenseConfig &config)
146 {
147  using namespace crl::multisense::details;
148 
149  int32_t disparities = 256;
150 
151  switch(config.disparities)
152  {
153  case MultiSenseConfig::MaxDisparities::D64: {disparities = 64; break;}
154  case MultiSenseConfig::MaxDisparities::D128: {disparities = 128; break;}
155  case MultiSenseConfig::MaxDisparities::D256: {disparities = 256; break;}
156  }
157 
158  return wire::CamSetResolution{config.width, config.height, disparities};
159 }
160 
161 template <>
162 crl::multisense::details::wire::CamControl convert<crl::multisense::details::wire::CamControl>(const MultiSenseConfig &config)
163 {
164  using namespace crl::multisense::details;
165 
166  wire::CamControl output;
167 
168  output.framesPerSecond = config.frames_per_second;
169 
170  const auto manual_exposure = config.image_config.manual_exposure ? config.image_config.manual_exposure.value() :
172 
173  output.gain = manual_exposure.gain;
174  output.exposure = static_cast<uint32_t>(manual_exposure.exposure_time.count());
175 
177 
178  const auto auto_exposure = config.image_config.auto_exposure ? config.image_config.auto_exposure.value() :
180 
181  output.autoExposureMax = static_cast<uint32_t>(auto_exposure.max_exposure_time.count());
182  output.autoExposureDecay = auto_exposure.decay;
183  output.autoExposureThresh = auto_exposure.target_threshold;
184  output.autoExposureTargetIntensity = auto_exposure.target_intensity;
185  output.gainMax = auto_exposure.max_gain;
186 
187  output.autoExposureRoiX = auto_exposure.roi.top_left_x_position;
188  output.autoExposureRoiY = auto_exposure.roi.top_left_y_position;
189  output.autoExposureRoiWidth = auto_exposure.roi.width;
190  output.autoExposureRoiHeight = auto_exposure.roi.height;
191 
192 
193  const auto manual_wb = config.image_config.manual_white_balance ? config.image_config.manual_white_balance.value() :
195 
196  output.whiteBalanceRed = manual_wb.red;
197  output.whiteBalanceBlue = manual_wb.blue;
198 
199  const auto auto_wb = config.image_config.auto_white_balance ? config.image_config.auto_white_balance.value() :
201 
203  output.autoWhiteBalanceDecay = auto_wb.decay;
204  output.autoWhiteBalanceThresh = auto_wb.threshold;
205 
207 
208  output.hdrEnabled = false;
209  output.gamma = config.image_config.gamma;
210 
211  return output;
212 }
213 
215 {
216  using namespace crl::multisense::details;
217 
218  wire::AuxCamControl output;
219 
220  const auto manual_exposure = config.image_config.manual_exposure ? config.image_config.manual_exposure.value() :
222 
223  output.gain = manual_exposure.gain;
224  output.exposure = static_cast<uint32_t>(manual_exposure.exposure_time.count());
225 
227 
228  const auto auto_exposure = config.image_config.auto_exposure ? config.image_config.auto_exposure.value() :
230 
231  output.autoExposureMax = static_cast<uint32_t>(auto_exposure.max_exposure_time.count());
232  output.autoExposureDecay = auto_exposure.decay;
233  output.autoExposureThresh = auto_exposure.target_threshold;
234  output.autoExposureTargetIntensity = auto_exposure.target_intensity;
235  output.gainMax = auto_exposure.max_gain;
236 
237  output.autoExposureRoiX = auto_exposure.roi.top_left_x_position;
238  output.autoExposureRoiY = auto_exposure.roi.top_left_y_position;
239  output.autoExposureRoiWidth = auto_exposure.roi.width;
240  output.autoExposureRoiHeight = auto_exposure.roi.height;
241 
242 
243  const auto manual_wb = config.image_config.manual_white_balance ? config.image_config.manual_white_balance.value() :
245 
246  output.whiteBalanceRed = manual_wb.red;
247  output.whiteBalanceBlue = manual_wb.blue;
248 
249  const auto auto_wb = config.image_config.auto_white_balance ? config.image_config.auto_white_balance.value() :
251 
253  output.autoWhiteBalanceDecay = auto_wb.decay;
254  output.autoWhiteBalanceThresh = auto_wb.threshold;
255 
256 
257  output.hdrEnabled = false;
258  output.gamma = config.image_config.gamma;
259  output.sharpeningEnable = config.sharpening_enabled;
261  output.sharpeningLimit = config.sharpening_limit;
262 
263  //
264  // Currently unsupported values
265  //
266  output.cameraProfile = 0;
267 
268  return output;
269 }
270 
272 {
273  using namespace crl::multisense::details;
274 
275  wire::SysSetPtp output;
276  output.enable = config.ptp_enabled ? 1 : 0;
277 
278  return output;
279 }
280 
282  const MultiSenseInfo::ImuInfo &imu_info)
283 {
284  using namespace crl::multisense::details;
285  using ImuConfig = MultiSenseConfig::ImuConfig;
286 
287  std::optional<ImuConfig::OperatingMode> accelerometer = std::nullopt;
288  std::optional<ImuConfig::OperatingMode> gyroscope = std::nullopt;
289  std::optional<ImuConfig::OperatingMode> magnetometer = std::nullopt;
290  for (const auto &element : imu.configs)
291  {
292  if (imu_info.accelerometer && element.name == imu_info.accelerometer->name)
293  {
294  accelerometer = ImuConfig::OperatingMode{static_cast<bool>(element.flags & wire::imu::Config::FLAGS_ENABLED),
295  imu_info.accelerometer->rates[element.rateTableIndex],
296  imu_info.accelerometer->ranges[element.rangeTableIndex]};
297  }
298  else if (imu_info.gyroscope && element.name == imu_info.gyroscope->name)
299  {
300  gyroscope = ImuConfig::OperatingMode{static_cast<bool>(element.flags & wire::imu::Config::FLAGS_ENABLED),
301  imu_info.gyroscope->rates[element.rateTableIndex],
302  imu_info.gyroscope->ranges[element.rangeTableIndex]};
303  }
304  else if (imu_info.magnetometer && element.name == imu_info.magnetometer->name)
305  {
306  magnetometer = ImuConfig::OperatingMode{static_cast<bool>(element.flags & wire::imu::Config::FLAGS_ENABLED),
307  imu_info.magnetometer->rates[element.rateTableIndex],
308  imu_info.magnetometer->ranges[element.rangeTableIndex]};
309  }
310  else
311  {
312  CRL_EXCEPTION("Unknown imu name: %s\n", element.name.c_str());
313  }
314  }
315 
316  return ImuConfig{imu.samplesPerMessage, std::move(accelerometer), std::move(gyroscope), std::move(magnetometer)};
317 }
318 
320  const MultiSenseInfo::ImuInfo &imu_info,
321  uint32_t max_samples_per_message)
322 {
323  using namespace crl::multisense::details;
324 
325  wire::ImuConfig output;
326 
327  output.samplesPerMessage = std::min(max_samples_per_message, imu.samples_per_frame);
328 
329  std::vector<wire::imu::Config> configs;
330 
331  if (imu.accelerometer && imu_info.accelerometer)
332  {
333  wire::imu::Config config;
334  config.name = imu_info.accelerometer->name;
335  config.flags = imu.accelerometer->enabled ? wire::imu::Config::FLAGS_ENABLED : 0;
336 
337  config.rateTableIndex = get_rate_index(imu_info.accelerometer->rates, imu.accelerometer->rate);
338  config.rangeTableIndex = get_range_index(imu_info.accelerometer->ranges, imu.accelerometer->range);
339 
340  configs.emplace_back(std::move(config));
341  }
342 
343  if (imu.gyroscope && imu_info.gyroscope)
344  {
345  wire::imu::Config config;
346  config.name = imu_info.gyroscope->name;
347  config.flags = imu.gyroscope->enabled ? wire::imu::Config::FLAGS_ENABLED : 0;
348 
349  config.rateTableIndex = get_rate_index(imu_info.gyroscope->rates, imu.gyroscope->rate);
350  config.rangeTableIndex = get_range_index(imu_info.gyroscope->ranges, imu.gyroscope->range);
351 
352  configs.emplace_back(std::move(config));
353  }
354 
355  if (imu.magnetometer && imu_info.magnetometer)
356  {
357  wire::imu::Config config;
358  config.name = imu_info.magnetometer->name;
359  config.flags = imu.magnetometer->enabled ? wire::imu::Config::FLAGS_ENABLED : 0;
360 
361  config.rateTableIndex = get_rate_index(imu_info.magnetometer->rates, imu.magnetometer->rate);
362  config.rangeTableIndex = get_range_index(imu_info.magnetometer->ranges, imu.magnetometer->range);
363 
364  configs.emplace_back(std::move(config));
365  }
366 
367  output.storeSettingsInFlash = false;
368  output.configs= std::move(configs);
369 
370  return output;
371 }
372 
375 {
376  using lighting = MultiSenseConfig::LightingConfig;
377 
378  const auto intensity = static_cast<float>(led.intensity[0]) * 100.0f / 255.0f;
379 
380  std::optional<lighting::InternalConfig> internal = std::nullopt;
381  std::optional<lighting::ExternalConfig> external = std::nullopt;
382 
383  switch (type)
384  {
386  {
387  break;
388  }
391  {
392  internal = lighting::InternalConfig{intensity, led.flash != 0};
393  break;
394  }
395 
399  {
400  lighting::ExternalConfig::FlashMode mode = lighting::ExternalConfig::FlashMode::NONE;
401 
402  if (led.rolling_shutter_led)
403  {
404  mode = lighting::ExternalConfig::FlashMode::SYNC_WITH_AUX;
405  }
406  else if (led.flash)
407  {
408  mode = lighting::ExternalConfig::FlashMode::SYNC_WITH_MAIN_STEREO;
409  }
410 
411  external = lighting::ExternalConfig{intensity, mode, led.number_of_pulses, std::chrono::microseconds{led.led_delay_us}};
412  break;
413  }
414  default:{CRL_EXCEPTION("Unsupported lighting type\n");}
415  }
416 
417  return MultiSenseConfig::LightingConfig{std::move(internal), std::move(external)};
418 }
419 
421 {
422  using namespace crl::multisense::details;
423 
424  if (!led.internal && !led.external)
425  {
426  CRL_EXCEPTION("Invalid lighting config input\n");
427  }
428 
429  wire::LedSet output;
430 
431  if (led.internal)
432  {
433  for(size_t i = 0; i< wire::MAX_LIGHTS; ++i)
434  {
435  output.mask |= (1<<i);
436  output.intensity[i] = static_cast<uint8_t> (255.0f * (std::clamp(led.internal->intensity, 0.0f, 100.0f) / 100.0f));
437  }
438 
439  output.flash = led.internal->flash ? 1 : 0;
440 
441  output.number_of_pulses = 1;
442  output.invert_pulse = 0;
443  output.led_delay_us = 0;
444  output.rolling_shutter_led = false;
445  }
446  else if (led.external)
447  {
448  for(size_t i = 0; i< wire::MAX_LIGHTS; ++i)
449  {
450  output.mask |= (1<<i);
451  output.intensity[i] = static_cast<uint8_t> (255.0f * (std::clamp(led.external->intensity, 0.0f, 100.0f) / 100.0f));
452  }
453 
454  switch (led.external->flash)
455  {
457  {
458  output.flash = 0;
459  output.rolling_shutter_led = 0;
460  break;
461  }
463  {
464  output.flash = 1;
465  output.rolling_shutter_led = 0;
466  break;
467  }
469  {
470  output.flash = 1;
471  output.rolling_shutter_led = 1;
472  break;
473  }
474  default:
475  {
476  CRL_EXCEPTION("Unhandled LED flash mode\n");
477  }
478  }
479 
480  output.number_of_pulses = led.external->pulses_per_exposure;
481  output.invert_pulse = false;
482  output.led_delay_us = static_cast<uint32_t>(led.external->startup_time.count());
483  }
484 
485  return output;
486 }
487 
490 {
492 }
493 
494 template <>
496 {
497  using namespace crl::multisense::details;
498 
499  wire::SysPacketDelay delay;
500 
501  delay.enable = config.packet_delay_enabled;
502 
503  return delay;
504 }
505 
506 }
507 }
crl::multisense::details::wire::AuxCamConfig
Definition: AuxCamConfigMessage.hh:51
crl::multisense::details::wire::CamConfig::autoExposureRoiY
uint16_t autoExposureRoiY
Definition: CamConfigMessage.hh:103
crl::multisense::details::wire::CamConfig::framesPerSecond
float framesPerSecond
Definition: CamConfigMessage.hh:64
crl::multisense::details::wire::AuxCamConfig::gain
float gain
Definition: AuxCamConfigMessage.hh:62
multisense::MultiSenseConfig
Complete configuration object for configuring the MultiSense. Can be updated during camera operation.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:478
crl::multisense::details::wire::imu::Config::name
std::string name
Definition: ImuConfigMessage.hh:53
crl::multisense::details
Definition: Legacy/details/channel.cc:63
multisense::MultiSenseConfig::height
uint32_t height
The operating height of the MultiSense in pixels. For available operating resolutions see the MultiSe...
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1011
crl::multisense::details::wire::CamControl::autoExposureRoiX
uint16_t autoExposureRoiX
Definition: CamControlMessage.hh:95
multisense::MultiSenseConfig::ImageConfig::auto_white_balance_enabled
bool auto_white_balance_enabled
Enable or disable auto white balance.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:704
multisense::MultiSenseConfig::image_config
ImageConfig image_config
The image configuration to use for the main stereo pair.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1031
multisense::MultiSenseConfig::ManualWhiteBalanceConfig
Manual white balance specific configuration.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:626
crl::multisense::details::wire::CamControl::autoExposureMax
uint32_t autoExposureMax
Definition: CamControlMessage.hh:67
crl::multisense::details::wire::CamConfig::autoExposureRoiX
uint16_t autoExposureRoiX
Definition: CamConfigMessage.hh:102
multisense::MultiSenseInfo::DeviceInfo::LightingType::INTERNAL
@ INTERNAL
Lights driven internally.
multisense::MultiSenseConfig::LightingConfig::ExternalConfig::FlashMode::NONE
@ NONE
multisense::MultiSenseConfig::ImuConfig::samples_per_frame
uint32_t samples_per_frame
The number of IMU samples which should be included in a IMU frame.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:870
multisense::MultiSenseInfo::DeviceInfo::LightingType::OUTPUT_TRIGGER
@ OUTPUT_TRIGGER
A GPIO line is used to trigger an external light.
crl::multisense::details::wire::CamControl::autoExposureRoiY
uint16_t autoExposureRoiY
Definition: CamControlMessage.hh:96
crl::multisense::details::wire::LedSet
Definition: LedSetMessage.hh:50
crl::multisense::details::wire::CamConfig
Definition: CamConfigMessage.hh:54
multisense::MultiSenseConfig::AuxConfig
Image specific configuration for the Aux imager.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:734
crl::multisense::details::wire::CamControl::gain
float gain
Definition: CamControlMessage.hh:63
multisense::legacy::get_disparities
MultiSenseConfig::MaxDisparities get_disparities(size_t disparity)
Convert a disparity integer to a fixed disparity setting.
Definition: legacy/utilities.cc:94
crl::multisense::details::wire::AuxCamControl::sharpeningLimit
uint8_t sharpeningLimit
Definition: AuxCamControlMessage.hh:87
crl::multisense::details::wire::CamConfig::width
uint16_t width
Definition: CamConfigMessage.hh:62
crl::multisense::details::wire::AuxCamConfig::sharpeningPercentage
float sharpeningPercentage
Definition: AuxCamConfigMessage.hh:92
multisense::MultiSenseConfig::ImuConfig
Config for the IMU sensor.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:834
multisense::MultiSenseInfo::ImuInfo::gyroscope
std::optional< Source > gyroscope
Configuration specific to the gyroscope.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1629
crl::multisense::details::wire::CamConfig::autoExposure
uint8_t autoExposure
Definition: CamConfigMessage.hh:68
crl::multisense::details::wire::CamConfig::gain
float gain
Definition: CamConfigMessage.hh:65
crl::multisense::details::wire::AuxCamConfig::autoExposureRoiX
uint16_t autoExposureRoiX
Definition: AuxCamConfigMessage.hh:81
crl::multisense::details::wire::AuxCamConfig::autoExposureTargetIntensity
float autoExposureTargetIntensity
Definition: AuxCamConfigMessage.hh:88
crl::multisense::details::wire::AuxCamControl::cameraProfile
uint32_t cameraProfile
Definition: AuxCamControlMessage.hh:80
crl::multisense::details::wire::AuxCamConfig::exposure
uint32_t exposure
Definition: AuxCamConfigMessage.hh:64
multisense::MultiSenseConfig::AuxConfig::image_config
ImageConfig image_config
Image configuration for the Aux imager.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:739
crl::multisense::details::wire::AuxCamConfig::whiteBalanceBlue
float whiteBalanceBlue
Definition: AuxCamConfigMessage.hh:71
crl::multisense::details::wire::CamConfig::autoExposureRoiHeight
uint16_t autoExposureRoiHeight
Definition: CamConfigMessage.hh:105
multisense::MultiSenseConfig::LightingConfig::ExternalConfig::FlashMode::SYNC_WITH_MAIN_STEREO
@ SYNC_WITH_MAIN_STEREO
multisense::MultiSenseConfig::ImageConfig::auto_exposure_enabled
bool auto_exposure_enabled
Enable or disable auto exposure.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:689
multisense::MultiSenseConfig::AutoWhiteBalanceConfig
Auto white balance specific configuration.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:652
multisense::MultiSenseInfo::DeviceInfo::LightingType::PATTERN_PROJECTOR_OUTPUT_TRIGGER
@ PATTERN_PROJECTOR_OUTPUT_TRIGGER
A pattern projector with a GPIO line used to trigger a external light.
crl::multisense::details::wire::AuxCamControl::sharpeningEnable
bool sharpeningEnable
Definition: AuxCamControlMessage.hh:85
crl::multisense::details::wire::AuxCamConfig::autoExposureThresh
float autoExposureThresh
Definition: AuxCamConfigMessage.hh:68
crl::multisense::details::wire::AuxCamConfig::autoExposureRoiHeight
uint16_t autoExposureRoiHeight
Definition: AuxCamConfigMessage.hh:84
multisense::MultiSenseConfig::LightingConfig::external
std::optional< ExternalConfig > external
The external lighting config. Will be nullopt if the camera does not support internal lighting contro...
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:990
utilities.hh
crl::multisense::details::wire::CamControl::autoWhiteBalanceDecay
uint32_t autoWhiteBalanceDecay
Definition: CamControlMessage.hh:74
crl::multisense::details::wire::LedStatus::led_delay_us
uint32_t led_delay_us
Definition: LedStatusMessage.hh:74
crl::multisense::details::wire::ImuConfig::samplesPerMessage
uint32_t samplesPerMessage
Definition: ImuConfigMessage.hh:82
crl::multisense::details::wire::LedStatus::rolling_shutter_led
uint8_t rolling_shutter_led
Definition: LedStatusMessage.hh:93
crl::multisense::details::wire::CamConfig::autoExposureMax
uint32_t autoExposureMax
Definition: CamConfigMessage.hh:69
crl::multisense::details::wire::AuxCamControl::exposure
uint32_t exposure
Definition: AuxCamControlMessage.hh:61
device_info_utility.type
type
Definition: device_info_utility.py:61
multisense::MultiSenseInfo::DeviceInfo::LightingType::PATTERN_PROJECTOR
@ PATTERN_PROJECTOR
A pattern projector.
multisense::MultiSenseInfo::DeviceInfo::LightingType
LightingType
MultiSense lighting types.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1344
configuration.hh
crl::multisense::details::wire::AuxCamControl::whiteBalanceRed
float whiteBalanceRed
Definition: AuxCamControlMessage.hh:67
crl::multisense::details::wire::CamControl::autoExposureTargetIntensity
float autoExposureTargetIntensity
Definition: CamControlMessage.hh:114
crl::multisense::details::wire::LedStatus
Definition: LedStatusMessage.hh:50
multisense::MultiSenseConfig::ImuConfig::gyroscope
std::optional< OperatingMode > gyroscope
Configuration for the onboard gyroscope.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:880
multisense::MultiSenseConfig::stereo_config
StereoConfig stereo_config
The stereo configuration to use.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1026
multisense::MultiSenseConfig::ImageConfig::auto_white_balance
std::optional< AutoWhiteBalanceConfig > auto_white_balance
The white balance parameters to use if auto white balance is enabled.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:714
multisense::legacy::get_rate_index
uint32_t get_rate_index(const std::vector< ImuRate > &rates, const ImuRate &rate)
Get the index of the rate in a vector of rates.
Definition: legacy/utilities.cc:227
crl::multisense::details::wire::imu::Config::flags
uint32_t flags
Definition: ImuConfigMessage.hh:54
crl::multisense::details::wire::CamControl::whiteBalanceRed
float whiteBalanceRed
Definition: CamControlMessage.hh:71
crl::multisense::details::wire::CamControl::gamma
float gamma
Definition: CamControlMessage.hh:115
multisense::MultiSenseConfig::AutoExposureConfig
Auto-exposure specific configuration.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:566
multisense::MultiSenseInfo::DeviceInfo::has_main_stereo_color
constexpr bool has_main_stereo_color() const
Determine if the MultiSense's main stereo pair supports color.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1489
multisense::MultiSenseConfig::NetworkTransmissionConfig::packet_delay_enabled
bool packet_delay_enabled
Add a small delay between the transmission of each packet to hopefully interact better with slower cl...
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:820
crl::multisense::details::wire::AuxCamControl::autoExposureMax
uint32_t autoExposureMax
Definition: AuxCamControlMessage.hh:63
crl::multisense::details::wire::AuxCamControl::whiteBalanceBlue
float whiteBalanceBlue
Definition: AuxCamControlMessage.hh:68
crl::multisense::details::wire::LedSet::rolling_shutter_led
uint8_t rolling_shutter_led
Definition: LedSetMessage.hh:93
f
f
crl::multisense::details::wire::AuxCamControl::hdrEnabled
bool hdrEnabled
Definition: AuxCamControlMessage.hh:73
crl::multisense::details::wire::LedSet::flash
uint8_t flash
Definition: LedSetMessage.hh:68
crl::multisense::details::wire::AuxCamControl::autoWhiteBalanceThresh
float autoWhiteBalanceThresh
Definition: AuxCamControlMessage.hh:71
crl::multisense::details::wire::AuxCamConfig::autoExposureDecay
uint32_t autoExposureDecay
Definition: AuxCamConfigMessage.hh:67
crl::multisense::details::wire::CamConfig::autoWhiteBalanceDecay
uint32_t autoWhiteBalanceDecay
Definition: CamConfigMessage.hh:76
crl::multisense::details::wire::AuxCamConfig::autoExposureRoiY
uint16_t autoExposureRoiY
Definition: AuxCamConfigMessage.hh:82
multisense::MultiSenseConfig::ImuConfig::magnetometer
std::optional< OperatingMode > magnetometer
Configuration for the onboard magnetometer.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:885
crl::multisense::details::wire::AuxCamConfig::autoExposureMax
uint32_t autoExposureMax
Definition: AuxCamConfigMessage.hh:66
CRL_EXCEPTION
#define CRL_EXCEPTION(fmt,...)
Definition: Exception.hh:85
crl::multisense::details::wire::LedSet::number_of_pulses
uint32_t number_of_pulses
Definition: LedSetMessage.hh:80
multisense::MultiSenseConfig::ImageConfig::auto_exposure
std::optional< AutoExposureConfig > auto_exposure
The exposure config to use if auto exposure is enabled.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:699
crl::multisense::details::wire::LedStatus::number_of_pulses
uint32_t number_of_pulses
Definition: LedStatusMessage.hh:80
crl::multisense::details::wire::CamControl::autoExposureDecay
uint32_t autoExposureDecay
Definition: CamControlMessage.hh:68
crl::multisense::details::wire::AuxCamControl::gainMax
float gainMax
Definition: AuxCamControlMessage.hh:89
crl::multisense::details::wire::CamControl::whiteBalanceBlue
float whiteBalanceBlue
Definition: CamControlMessage.hh:72
crl::multisense::details::wire::AuxCamControl::autoExposureTargetIntensity
float autoExposureTargetIntensity
Definition: AuxCamControlMessage.hh:82
crl::multisense::details::wire::AuxCamConfig::gamma
float gamma
Definition: AuxCamConfigMessage.hh:89
multisense::MultiSenseConfig::MaxDisparities::D256
@ D256
256 pixels
crl::multisense::details::wire::AuxCamConfig::autoWhiteBalance
uint8_t autoWhiteBalance
Definition: AuxCamConfigMessage.hh:72
crl::multisense::details::wire::CamControl::hdrEnabled
bool hdrEnabled
Definition: CamControlMessage.hh:85
crl::multisense::details::wire::CamConfig::gainMax
float gainMax
Definition: CamConfigMessage.hh:133
crl::multisense::details::wire::CamConfig::autoWhiteBalanceThresh
float autoWhiteBalanceThresh
Definition: CamConfigMessage.hh:77
multisense::MultiSenseInfo::ImuInfo::magnetometer
std::optional< Source > magnetometer
Configuration specific to the magnetometer.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1634
crl::multisense::details::wire::AuxCamControl::autoWhiteBalanceDecay
uint32_t autoWhiteBalanceDecay
Definition: AuxCamControlMessage.hh:70
crl::multisense::details::wire::CamControl::autoExposure
uint8_t autoExposure
Definition: CamControlMessage.hh:66
multisense::MultiSenseInfo::ImuInfo::accelerometer
std::optional< Source > accelerometer
Configuration specific to the accelerometer.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1624
crl::multisense::details::wire::ImuConfig::configs
std::vector< imu::Config > configs
Definition: ImuConfigMessage.hh:83
crl::multisense::details::wire::CamControl::autoWhiteBalanceThresh
float autoWhiteBalanceThresh
Definition: CamControlMessage.hh:75
crl::multisense::details::wire::SysSetPtp::enable
uint8_t enable
Definition: SysSetPtpMessage.hh:57
multisense::MultiSenseConfig::ImuConfig::accelerometer
std::optional< OperatingMode > accelerometer
Configuration for the onboard accelerometer.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:875
crl::multisense::details::wire::CamConfig::gamma
float gamma
Definition: CamConfigMessage.hh:122
crl::multisense::details::wire::SysPacketDelay
Definition: SysPacketDelayMessage.hh:49
crl::multisense::details::wire::AuxCamControl::autoExposureRoiHeight
uint16_t autoExposureRoiHeight
Definition: AuxCamControlMessage.hh:78
crl::multisense::details::wire::AuxCamControl::autoExposureRoiX
uint16_t autoExposureRoiX
Definition: AuxCamControlMessage.hh:75
multisense::MultiSenseConfig::LightingConfig::internal
std::optional< InternalConfig > internal
The internal lighting config. Will be nullopt if the camera does not support internal lighting contro...
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:984
crl::multisense::details::wire::CamConfig::autoExposureThresh
float autoExposureThresh
Definition: CamConfigMessage.hh:71
crl::multisense::details::wire::AuxCamControl::autoExposure
uint8_t autoExposure
Definition: AuxCamControlMessage.hh:62
crl::multisense::details::wire::CamControl::stereoPostFilterStrength
float stereoPostFilterStrength
Definition: CamControlMessage.hh:80
crl::multisense::details::wire::CamConfig::stereoPostFilterStrength
float stereoPostFilterStrength
Definition: CamConfigMessage.hh:92
crl::multisense::details::wire::AuxCamConfig::autoExposure
uint8_t autoExposure
Definition: AuxCamConfigMessage.hh:65
crl::multisense::details::wire::CamConfig::disparities
int32_t disparities
Definition: CamConfigMessage.hh:87
multisense::MultiSenseConfig::frames_per_second
float frames_per_second
The target framerate the MultiSense should operate at.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1021
crl::multisense::details::wire::CamControl::autoWhiteBalance
uint8_t autoWhiteBalance
Definition: CamControlMessage.hh:73
crl::multisense::details::wire::CamConfig::height
uint16_t height
Definition: CamConfigMessage.hh:63
crl::multisense::details::wire::AuxCamControl::gamma
float gamma
Definition: AuxCamControlMessage.hh:83
multisense::MultiSenseInfo::DeviceInfo
The Device information associated with the MultiSense. The DeviceInfo is used to determine what featu...
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1290
multisense::MultiSenseInfo::DeviceInfo::LightingType::NONE
@ NONE
No lights.
crl::multisense::details::wire::CamConfig::autoWhiteBalance
uint8_t autoWhiteBalance
Definition: CamConfigMessage.hh:75
crl::multisense::details::wire::AuxCamControl::autoWhiteBalance
uint8_t autoWhiteBalance
Definition: AuxCamControlMessage.hh:69
crl::multisense::details::wire::CamControl::gainMax
float gainMax
Definition: CamControlMessage.hh:126
crl::multisense::details::wire::CamControl::exposure
uint32_t exposure
Definition: CamControlMessage.hh:65
multisense::MultiSenseConfig::ManualExposureConfig
Manual exposure specific configuration.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:504
crl::multisense::details::wire::AuxCamConfig::autoExposureRoiWidth
uint16_t autoExposureRoiWidth
Definition: AuxCamConfigMessage.hh:83
multisense::MultiSenseInfo::DeviceInfo::LightingType::EXTERNAL
@ EXTERNAL
Drive lights via an external output.
crl::multisense::details::wire::imu::Config::rateTableIndex
uint32_t rateTableIndex
Definition: ImuConfigMessage.hh:55
crl::multisense::details::wire::AuxCamControl::autoExposureRoiWidth
uint16_t autoExposureRoiWidth
Definition: AuxCamControlMessage.hh:77
multisense::MultiSenseConfig::ImageConfig::manual_exposure
std::optional< ManualExposureConfig > manual_exposure
The exposure config to use if auto exposure is disabled.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:694
multisense::legacy::convert
CameraCalibration convert(const crl::multisense::details::wire::CameraCalData &cal)
Convert a wire calibration to our API calibration object.
Definition: calibration.cc:56
crl::multisense::details::wire::CamConfig::autoExposureRoiWidth
uint16_t autoExposureRoiWidth
Definition: CamConfigMessage.hh:104
crl::multisense::details::wire::CamConfig::whiteBalanceRed
float whiteBalanceRed
Definition: CamConfigMessage.hh:73
crl::multisense::details::wire::LedStatus::intensity
uint8_t intensity[MAX_LIGHTS]
Definition: LedStatusMessage.hh:63
crl::multisense::details::wire::CamSetResolution
Definition: CamSetResolutionMessage.hh:50
crl::multisense::details::wire::AuxCamConfig::autoWhiteBalanceThresh
float autoWhiteBalanceThresh
Definition: AuxCamConfigMessage.hh:74
crl::multisense::details::wire::AuxCamControl
Definition: AuxCamControlMessage.hh:51
crl::multisense::details::wire::imu::Config
Definition: ImuConfigMessage.hh:48
crl::multisense::details::wire::AuxCamConfig::sharpeningLimit
uint8_t sharpeningLimit
Definition: AuxCamConfigMessage.hh:93
crl::multisense::details::wire::LedSet::mask
uint8_t mask
Definition: LedSetMessage.hh:58
multisense::MultiSenseConfig::MaxDisparities::D128
@ D128
128 pixels
multisense::MultiSenseConfig::ImageConfig::manual_white_balance
std::optional< ManualWhiteBalanceConfig > manual_white_balance
The white balance parameters to use if auto white balance is disabled.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:709
multisense
Definition: factory.cc:39
crl::multisense::details::wire::ImuConfig
Definition: ImuConfigMessage.hh:76
crl::multisense::details::wire::AuxCamConfig::sharpeningEnable
bool sharpeningEnable
Definition: AuxCamConfigMessage.hh:91
multisense::MultiSenseConfig::width
uint32_t width
The operating width of the MultiSense in pixels. For available operating resolutions see the MultiSen...
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1005
crl::multisense::details::wire::AuxCamControl::sharpeningPercentage
float sharpeningPercentage
Definition: AuxCamControlMessage.hh:86
crl::multisense::details::wire::SysSetPtp
Definition: SysSetPtpMessage.hh:49
crl::multisense::details::wire::CamControl::autoExposureThresh
float autoExposureThresh
Definition: CamControlMessage.hh:69
crl::multisense::details::wire::CamControl::framesPerSecond
float framesPerSecond
Definition: CamControlMessage.hh:62
crl::multisense::details::wire::CamConfig::exposure
uint32_t exposure
Definition: CamConfigMessage.hh:67
crl::multisense::details::wire::LedSet::intensity
uint8_t intensity[MAX_LIGHTS]
Definition: LedSetMessage.hh:63
multisense::MultiSenseConfig::TimeConfig
Config for time-based controls.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:795
crl::multisense::details::wire::AuxCamConfig::gainMax
float gainMax
Definition: AuxCamConfigMessage.hh:95
crl::multisense::details::wire::CamConfig::whiteBalanceBlue
float whiteBalanceBlue
Definition: CamConfigMessage.hh:74
multisense::MultiSenseConfig::AuxConfig::sharpening_percentage
float sharpening_percentage
The percentage strength of the sharpening gain to apply to the aux image Valid range is [0,...
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:750
crl::multisense::lighting::MAX_LIGHTS
static CRL_CONSTEXPR uint32_t MAX_LIGHTS
Definition: Legacy/include/MultiSense/MultiSenseTypes.hh:2211
crl::multisense::details::wire::AuxCamConfig::whiteBalanceRed
float whiteBalanceRed
Definition: AuxCamConfigMessage.hh:70
crl::multisense::details::wire::imu::Config::rangeTableIndex
uint32_t rangeTableIndex
Definition: ImuConfigMessage.hh:56
crl::multisense::details::wire::AuxCamControl::autoExposureDecay
uint32_t autoExposureDecay
Definition: AuxCamControlMessage.hh:64
multisense::MultiSenseConfig::LightingConfig
Lighting configuration for the camera.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:902
multisense::MultiSenseConfig::MaxDisparities::D64
@ D64
64 pixels
crl::multisense::details::wire::ImuConfig::storeSettingsInFlash
uint8_t storeSettingsInFlash
Definition: ImuConfigMessage.hh:81
crl::multisense::details::wire::AuxCamControl::autoExposureRoiY
uint16_t autoExposureRoiY
Definition: AuxCamControlMessage.hh:76
multisense::legacy::get_range_index
uint32_t get_range_index(const std::vector< ImuRange > &ranges, const ImuRange &range)
Get the index of the range in a vector of ranges.
Definition: legacy/utilities.cc:238
multisense::MultiSenseConfig::TimeConfig::ptp_enabled
bool ptp_enabled
Enable PTP sync on the camera.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:800
crl::multisense::details::wire::CamControl::autoExposureRoiHeight
uint16_t autoExposureRoiHeight
Definition: CamControlMessage.hh:98
multisense::MultiSenseConfig::StereoConfig::postfilter_strength
float postfilter_strength
This is used to filter low confidence stereo data before it is sent to the host. Larger numbers indic...
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:490
multisense::MultiSenseConfig::disparities
MaxDisparities disparities
The max number of pixels the MultiSense searches when computing the disparity output.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1016
multisense::MultiSenseConfig::LightingConfig::ExternalConfig::FlashMode::SYNC_WITH_AUX
@ SYNC_WITH_AUX
crl::multisense::details::wire::AuxCamControl::gain
float gain
Definition: AuxCamControlMessage.hh:59
multisense::MultiSenseConfig::AuxConfig::sharpening_enabled
bool sharpening_enabled
Enable sharpening.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:744
multisense::MultiSenseConfig::AuxConfig::sharpening_limit
uint8_t sharpening_limit
The maximum difference in pixels that sharpening is is allowed to change between neighboring pixels....
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:758
crl::multisense::details::wire::LedSet::led_delay_us
uint32_t led_delay_us
Definition: LedSetMessage.hh:74
crl::multisense::details::wire::AuxCamControl::autoExposureThresh
float autoExposureThresh
Definition: AuxCamControlMessage.hh:65
crl::multisense::details::wire::AuxCamConfig::autoWhiteBalanceDecay
uint32_t autoWhiteBalanceDecay
Definition: AuxCamConfigMessage.hh:73
multisense::MultiSenseInfo::ImuInfo
Information about the IMU onboard the MultiSense.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1593
crl::multisense::details::wire::LedSet::invert_pulse
uint8_t invert_pulse
Definition: LedSetMessage.hh:87
multisense::MultiSenseConfig::NetworkTransmissionConfig
Config for transmitting packets from the MultiSense to the host.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:814
crl::multisense::details::wire::CamConfig::autoExposureTargetIntensity
float autoExposureTargetIntensity
Definition: CamConfigMessage.hh:121
crl::multisense::details::wire::SysPacketDelay::enable
bool enable
Definition: SysPacketDelayMessage.hh:55
crl::multisense::details::wire::CamConfig::autoExposureDecay
uint32_t autoExposureDecay
Definition: CamConfigMessage.hh:70
multisense::MultiSenseInfo::DeviceInfo::lighting_type
LightingType lighting_type
The type of lighting used in the MultiSense.
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:1463
crl::multisense::details::wire::CamControl::autoExposureRoiWidth
uint16_t autoExposureRoiWidth
Definition: CamControlMessage.hh:97
multisense::MultiSenseConfig::ImageConfig::gamma
float gamma
Set the gamma correction for the image. Valid range [1.0, 2.2].
Definition: LibMultiSense/include/MultiSense/MultiSenseTypes.hh:684
crl::multisense::details::wire::LedStatus::flash
uint8_t flash
Definition: LedStatusMessage.hh:68
crl::multisense::details::wire::CamControl
Definition: CamControlMessage.hh:54


multisense_lib
Author(s):
autogenerated on Thu Apr 17 2025 02:49:08