@@ -160,8 +160,8 @@ void AddLandmarkCostFunctions(
160
160
*prev_node_pose, *next_node_pose);
161
161
C_landmarks->emplace (
162
162
landmark_id,
163
- CeresPose (starting_point, nullptr /* translation_parametrization */ ,
164
- absl::make_unique<ceres::QuaternionParameterization >(),
163
+ CeresPose (starting_point, nullptr /* translation_manifold */ ,
164
+ absl::make_unique<ceres::QuaternionManifold >(),
165
165
problem));
166
166
// Set landmark constant if it is frozen.
167
167
if (landmark_node.second .frozen ) {
@@ -274,12 +274,11 @@ void OptimizationProblem3D::Solve(
274
274
ceres::Problem::Options problem_options;
275
275
ceres::Problem problem (problem_options);
276
276
277
- const auto translation_parameterization =
278
- [this ]() -> std::unique_ptr<ceres::LocalParameterization> {
279
- return options_.fix_z_in_3d ()
280
- ? absl::make_unique<ceres::SubsetParameterization>(
281
- 3 , std::vector<int >{2 })
282
- : nullptr ;
277
+ const auto translation_manifold =
278
+ [this ]() -> std::unique_ptr<ceres::Manifold> {
279
+ return options_.fix_z_in_3d () ? absl::make_unique<ceres::SubsetManifold>(
280
+ 3 , std::vector<int >{2 })
281
+ : nullptr ;
283
282
};
284
283
285
284
// Set the starting point.
@@ -298,18 +297,17 @@ void OptimizationProblem3D::Solve(
298
297
C_submaps.Insert (
299
298
submap_id_data.id ,
300
299
CeresPose (submap_id_data.data .global_pose ,
301
- translation_parameterization (),
302
- absl::make_unique<ceres::AutoDiffLocalParameterization<
303
- ConstantYawQuaternionPlus, 4 , 2 >>(),
300
+ translation_manifold (),
301
+ absl::make_unique<ConstantYawQuaternionManifold>(),
304
302
&problem));
305
303
problem.SetParameterBlockConstant (
306
304
C_submaps.at (submap_id_data.id ).translation ());
307
305
} else {
308
306
C_submaps.Insert (
309
307
submap_id_data.id ,
310
308
CeresPose (submap_id_data.data .global_pose ,
311
- translation_parameterization (),
312
- absl::make_unique<ceres::QuaternionParameterization >(),
309
+ translation_manifold (),
310
+ absl::make_unique<ceres::QuaternionManifold >(),
313
311
&problem));
314
312
}
315
313
if (frozen) {
@@ -324,8 +322,8 @@ void OptimizationProblem3D::Solve(
324
322
frozen_trajectories.count (node_id_data.id .trajectory_id ) != 0 ;
325
323
C_nodes.Insert (
326
324
node_id_data.id ,
327
- CeresPose (node_id_data.data .global_pose , translation_parameterization (),
328
- absl::make_unique<ceres::QuaternionParameterization >(),
325
+ CeresPose (node_id_data.data .global_pose , translation_manifold (),
326
+ absl::make_unique<ceres::QuaternionManifold >(),
329
327
&problem));
330
328
if (frozen) {
331
329
problem.SetParameterBlockConstant (C_nodes.at (node_id_data.id ).rotation ());
@@ -544,9 +542,7 @@ void OptimizationProblem3D::Solve(
544
542
Eigen::AngleAxisd (
545
543
transform::GetYaw (fixed_frame_pose_in_map.rotation ()),
546
544
Eigen::Vector3d::UnitZ ())),
547
- nullptr ,
548
- absl::make_unique<ceres::AutoDiffLocalParameterization<
549
- YawOnlyQuaternionPlus, 4 , 1 >>(),
545
+ nullptr , absl::make_unique<YawOnlyQuaternionManifold>(),
550
546
&problem));
551
547
fixed_frame_pose_initialized = true ;
552
548
}
0 commit comments