feat(device_writer): always save params with latest version format

This commit is contained in:
John Zhao
2019-01-06 09:03:52 +08:00
parent a67bd6a04e
commit 656c101e80
7 changed files with 87 additions and 39 deletions

View File

@@ -68,9 +68,11 @@ std::size_t from_data(IntrinsicsPinhole *in, const std::uint8_t *data,
// cy, 8
in->cy = _from_data<double>(data + i);
i += 8;
// model, 1
in->model = data[i];
i += 1;
if (get_size) {
// model, 1
in->model = data[i];
i += 1;
}
// coeffs, 40
for (std::size_t j = 0; j < 5; j++) {
in->coeffs[j] = _from_data<double>(data + i + j * 8);
@@ -199,9 +201,11 @@ std::size_t to_data(const IntrinsicsPinhole *in, std::uint8_t *data,
// cy, 8
_to_data(in->cy, data + i);
i += 8;
// model, 1
data[i] = in->model;
i += 1;
if (set_size) {
// model, 1
data[i] = in->model;
i += 1;
}
// coeffs, 40
for (std::size_t j = 0; j < 5; j++) {
_to_data(in->coeffs[j], data + i + j * 8);

View File

@@ -297,7 +297,8 @@ std::size_t ImgParamsParser::GetFromData_new(
if (version == Version(1, 2)) { // v1.2
for (; i < data_size;) {
// calib_model, 1
auto calib_model = static_cast<CalibrationModel>(data[i]);
auto model = data[i];
auto calib_model = static_cast<CalibrationModel>(model);
i += 1;
// width, 2
auto width = bytes::_from_data<std::uint16_t>(data + i);
@@ -309,14 +310,18 @@ std::size_t ImgParamsParser::GetFromData_new(
std::shared_ptr<IntrinsicsBase> in_left, in_right;
Extrinsics ex_right_to_left;
switch (calib_model) {
case CalibrationModel::PINHOLE:
in_left = std::make_shared<IntrinsicsPinhole>();
in_right = std::make_shared<IntrinsicsPinhole>();
break;
case CalibrationModel::KANNALA_BRANDT:
case CalibrationModel::PINHOLE: {
auto in_left_p = std::make_shared<IntrinsicsPinhole>();
in_left_p->model = model;
in_left = in_left_p;
auto in_right_p = std::make_shared<IntrinsicsPinhole>();
in_right_p->model = model;
in_right = in_right_p;
} break;
case CalibrationModel::KANNALA_BRANDT: {
in_left = std::make_shared<IntrinsicsEquidistant>();
in_right = std::make_shared<IntrinsicsEquidistant>();
break;
} break;
default:
LOG(FATAL) << "Could not get img params as unknown calib model"
", please use latest SDK.";
@@ -421,6 +426,7 @@ std::size_t ImuParamsParser::GetFromData_old(
i += bytes::from_data(&imu_params->in_accel, data + i);
i += bytes::from_data(&imu_params->in_gyro, data + i);
i += bytes::from_data(&imu_params->ex_left_to_imu, data + i);
imu_params->version = spec_version_.to_string();
MYNTEYE_UNUSED(data_size)
return i;
}

View File

@@ -626,6 +626,7 @@ void Device::ReadAllInfos() {
VLOG(2) << "Motion extrinsics left to imu: {"
<< GetMotionExtrinsics(Stream::LEFT) << "}";
} else {
imu_params_.ok = false;
VLOG(2) << "Motion intrinsics & extrinsics not exist";
}
}