21 #ifndef SENSORCAPTURE_HPP
22 #define SENSORCAPTURE_HPP
31 #ifdef SENSORS_MOD_AVAILABLE
38 #ifdef VIDEO_MOD_AVAILABLE
51 struct SL_OC_EXPORT
Imu
61 uint64_t timestamp = 0;
85 uint64_t timestamp = 0;
104 uint64_t timestamp = 0;
122 uint64_t timestamp = 0;
134 ZED_OC_VERSION_ATTRIBUTE;
153 std::vector<int> getDeviceList(
bool refresh=
false);
161 bool initializeSensors(
int sn=-1 );
168 void getFirmwareVersion( uint16_t& fw_major, uint16_t& fw_minor );
174 int getSerialNumber();
181 const data::Imu& getLastIMUData(uint64_t timeout_usec=1500);
202 const data::Temperature& getLastCameraTemperatureData(uint64_t timeout_usec=100);
214 static bool resetSensorModule(
int serial_number=0);
225 static bool resetVideoModule(
int serial_number=0);
227 #ifdef VIDEO_MOD_AVAILABLE
228 void updateTimestampOffset(uint64_t frame_ts);
234 static bool searchForConnectedDev(
int* serial_number,
unsigned short* found_pid);
236 void grabThreadFunc();
240 bool open(uint16_t pid,
int serial_number);
243 int enumerateDevices();
246 bool enableDataStream(
bool enable);
247 bool isDataStreamEnabled();
254 bool mNewIMUData=
false;
255 bool mNewMagData=
false;
256 bool mNewEnvData=
false;
257 bool mNewCamTempData=
false;
259 bool mInitialized =
false;
260 bool mStopCapture =
false;
261 bool mGrabRunning =
false;
263 std::map<int,uint16_t> mSlDevPid;
264 std::map<int,uint16_t> mSlDevFwVer;
266 hid_device* mDevHandle =
nullptr;
269 unsigned short mDevPid = 0;
276 std::thread mGrabThread;
278 std::mutex mIMUMutex;
279 std::mutex mMagMutex;
280 std::mutex mEnvMutex;
281 std::mutex mCamTempMutex;
283 uint64_t mStartSysTs=0;
284 uint64_t mLastMcuTs=0;
286 bool mFirstImuData=
true;
289 uint64_t mLastFrameSyncCount=0;
291 std::vector<uint64_t> mMcuTsQueue;
292 std::vector<uint64_t> mSysTsQueue;
294 double mNTPTsScaling=1.0;
295 int mNTPAdjustedCount = 0;
297 int64_t mSyncOffset=0;
300 #ifdef VIDEO_MOD_AVAILABLE
The SensorCapture class provides sensor grabbing functions for the Stereolabs ZED Mini and ZED2 camer...
void setVideoPtr(video::VideoCapture *videoPtr)
Called by VideoCapture to set the pointer to it.
void setStartTimestamp(uint64_t start_ts)
Called by VideoCapture to sync timestamps reference point.
The VideoCapture class provides image grabbing functions and settings control for all the Stereolabs ...
Contains the acquired Environment data.
float press
Atmospheric pressure in hPa.
float temp
Sensor temperature in °C.
float humid
Humidity in rH.
enum sl_oc::sensors::data::Environment::_env_status EnvStatus
Contains the acquired Imu data.
float gX
Angular velocity around X axis in °/s.
float aX
Acceleration along X axis in m/s²
enum sl_oc::sensors::data::Imu::_imu_status ImuStatus
bool sync
Indicates in IMU data are synchronized with a video frame.
float temp
Sensor temperature in °C.
float gZ
Angular velocity around > axis in °/s.
float gY
Angular velocity around Y axis in °/s.
float aY
Acceleration along Y axis in m/s²
float aZ
Acceleration along Z axis in m/s²
Contains the acquired Magnetometer data.
float mY
Acceleration along Y axis in uT.
float mX
Acceleration along X axis in uT.
enum sl_oc::sensors::data::Magnetometer::_mag_status MagStatus
float mZ
Acceleration along Z axis in uT.
Contains the acquired Camera Temperature data.
float temp_right
Temperature of the right CMOS camera sensor.
enum sl_oc::sensors::data::Temperature::_temp_status TempStatus
float temp_left
Temperature of the left CMOS camera sensor.