Bump 0.20.8 version. Parameters: updated default of Vis/CorGuessWinSize=40 (was 20), GFTT/MinDistance=7 (was 3), Optimizer/GravitySigma=0.3 if built with g2o or gtsam. Those parameters help for smooth tracking on latest sensors with higher resolution and use IMU by default if available. Updated docker jfr2018 to use original parameters. CameraStereoZed: wait for imu to be available before sending frames (Zed-m and Zed2).

This commit is contained in:
matlabbe
2021-01-08 13:04:24 -05:00
parent 792c967d46
commit 1a967127d9
12 changed files with 46 additions and 86 deletions

View File

@@ -113,7 +113,10 @@ CameraRealSense2::~CameraRealSense2()
UWARN("%s", error.what());
}
}
#ifdef WIN32
dev_[i]->hardware_reset(); // To avoid freezing on some Windows computers in the following destructor
// Don't do this on linux (tested on Ubuntu 18.04, realsense v2.41.0): T265 cannot be restarted
#endif
delete dev_[i];
}
}

View File

@@ -565,7 +565,22 @@ SensorData CameraStereoZed::captureImage(CameraInfo * info)
if(res==sl::SUCCESS)
#else
sl::ERROR_CODE res = zed_->grab(rparam);
sl::ERROR_CODE res;
bool imuReceived = true;
do
{
res = zed_->grab(rparam);
// If the sensor supports IMU, wait IMU to be available before sending data.
if(imuPublishingThread_ == 0 && !imuLocalTransform_.isNull())
{
sl::SensorsData imudatatmp;
res = zed_->getSensorsData(imudatatmp, sl::TIME_REFERENCE::IMAGE);
imuReceived = res == sl::ERROR_CODE::SUCCESS && imudatatmp.imu.is_available && imudatatmp.imu.timestamp.data_ns != 0;
}
}
while(src_ == CameraVideo::kUsbDevice && (res!=sl::ERROR_CODE::SUCCESS || !imuReceived) && timer.elapsed() < 2.0);
if(res==sl::ERROR_CODE::SUCCESS)
#endif