AppVeyor: updated realsense2 sdk to 2.40. CameraRealSense2: When GlobalTimeSync option is off, don't wait 35 ms for imu (and fails), just take the latest one directly (https://github.com/introlab/rtabmap/issues/614#issuecomment-732244439).

This commit is contained in:
matlabbe
2020-11-23 11:36:27 -05:00
parent 80199f23b5
commit 7859313beb
2 changed files with 21 additions and 15 deletions

View File

@@ -299,15 +299,18 @@ void CameraRealSense2::getPoseAndIMU(
cv::Vec3d acc;
{
imuMutex_.lock();
int waitTry = 0;
while(maxWaitTimeMs > 0 && accBuffer_.rbegin()->first < stamp && waitTry < maxWaitTimeMs)
if(globalTimeSync_)
{
imuMutex_.unlock();
++waitTry;
uSleep(1);
imuMutex_.lock();
int waitTry = 0;
while(maxWaitTimeMs > 0 && accBuffer_.rbegin()->first < stamp && waitTry < maxWaitTimeMs)
{
imuMutex_.unlock();
++waitTry;
uSleep(1);
imuMutex_.lock();
}
}
if(accBuffer_.rbegin()->first < stamp)
if(globalTimeSync_ && accBuffer_.rbegin()->first < stamp)
{
if(maxWaitTimeMs>0)
{
@@ -380,15 +383,18 @@ void CameraRealSense2::getPoseAndIMU(
cv::Vec3d gyro;
{
imuMutex_.lock();
int waitTry = 0;
while(maxWaitTimeMs>0 && gyroBuffer_.rbegin()->first < stamp && waitTry < maxWaitTimeMs)
if(globalTimeSync_)
{
imuMutex_.unlock();
++waitTry;
uSleep(1);
imuMutex_.lock();
int waitTry = 0;
while(maxWaitTimeMs>0 && gyroBuffer_.rbegin()->first < stamp && waitTry < maxWaitTimeMs)
{
imuMutex_.unlock();
++waitTry;
uSleep(1);
imuMutex_.lock();
}
}
if(gyroBuffer_.rbegin()->first < stamp)
if(globalTimeSync_ && gyroBuffer_.rbegin()->first < stamp)
{
if(maxWaitTimeMs>0)
{