Add fixed frame pose weight into optimization problem options. (#477)

master
jie 2017-08-24 15:40:48 +02:00 committed by Wolfgang Hess
parent 14977f73f1
commit 2fd2e86351
6 changed files with 28 additions and 4 deletions

View File

@ -36,6 +36,10 @@ proto::OptimizationProblemOptions CreateOptimizationProblemOptions(
options.set_consecutive_scan_rotation_penalty_factor( options.set_consecutive_scan_rotation_penalty_factor(
parameter_dictionary->GetDouble( parameter_dictionary->GetDouble(
"consecutive_scan_rotation_penalty_factor")); "consecutive_scan_rotation_penalty_factor"));
options.set_fixed_frame_pose_translation_weight(
parameter_dictionary->GetDouble("fixed_frame_pose_translation_weight"));
options.set_fixed_frame_pose_rotation_weight(
parameter_dictionary->GetDouble("fixed_frame_pose_rotation_weight"));
options.set_log_solver_summary( options.set_log_solver_summary(
parameter_dictionary->GetBool("log_solver_summary")); parameter_dictionary->GetBool("log_solver_summary"));
*options.mutable_ceres_solver_options() = *options.mutable_ceres_solver_options() =

View File

@ -18,7 +18,7 @@ package cartographer.mapping.sparse_pose_graph.proto;
import "cartographer/common/proto/ceres_solver_options.proto"; import "cartographer/common/proto/ceres_solver_options.proto";
// NEXT ID: 11 // NEXT ID: 13
message OptimizationProblemOptions { message OptimizationProblemOptions {
// Scaling parameter for Huber loss function. // Scaling parameter for Huber loss function.
optional double huber_scale = 1; optional double huber_scale = 1;
@ -29,10 +29,18 @@ message OptimizationProblemOptions {
// Scaling parameter for the IMU rotation term. // Scaling parameter for the IMU rotation term.
optional double rotation_weight = 9; optional double rotation_weight = 9;
// Penalty factors for changes to the relative pose between consecutive scans. // Penalty factors for translation changes to the relative pose between consecutive scans.
optional double consecutive_scan_translation_penalty_factor = 2; optional double consecutive_scan_translation_penalty_factor = 2;
// Penalty factors for rotation changes to the relative pose between consecutive scans.
optional double consecutive_scan_rotation_penalty_factor = 3; optional double consecutive_scan_rotation_penalty_factor = 3;
// Scaling parameter for the FixedFramePose translation.
optional double fixed_frame_pose_translation_weight = 11;
// Scaling parameter for the FixedFramePose rotation.
optional double fixed_frame_pose_rotation_weight = 12;
// If true, the Ceres solver summary will be logged for every optimization. // If true, the Ceres solver summary will be logged for every optimization.
optional bool log_solver_summary = 5; optional bool log_solver_summary = 5;

View File

@ -134,6 +134,8 @@ class SparsePoseGraphTest : public ::testing::Test {
huber_scale = 1., huber_scale = 1.,
consecutive_scan_translation_penalty_factor = 0., consecutive_scan_translation_penalty_factor = 0.,
consecutive_scan_rotation_penalty_factor = 0., consecutive_scan_rotation_penalty_factor = 0.,
fixed_frame_pose_translation_weight = 1e1,
fixed_frame_pose_rotation_weight = 1e2,
log_solver_summary = true, log_solver_summary = true,
ceres_solver_options = { ceres_solver_options = {
use_nonmonotonic_steps = false, use_nonmonotonic_steps = false,

View File

@ -46,6 +46,8 @@ class OptimizationProblemTest : public ::testing::Test {
huber_scale = 1., huber_scale = 1.,
consecutive_scan_translation_penalty_factor = 1e-2, consecutive_scan_translation_penalty_factor = 1e-2,
consecutive_scan_rotation_penalty_factor = 1e-2, consecutive_scan_rotation_penalty_factor = 1e-2,
fixed_frame_pose_translation_weight = 1e1,
fixed_frame_pose_rotation_weight = 1e2,
log_solver_summary = true, log_solver_summary = true,
ceres_solver_options = { ceres_solver_options = {
use_nonmonotonic_steps = false, use_nonmonotonic_steps = false,

View File

@ -83,6 +83,8 @@ SPARSE_POSE_GRAPH = {
rotation_weight = 3e5, rotation_weight = 3e5,
consecutive_scan_translation_penalty_factor = 1e5, consecutive_scan_translation_penalty_factor = 1e5,
consecutive_scan_rotation_penalty_factor = 1e5, consecutive_scan_rotation_penalty_factor = 1e5,
fixed_frame_pose_translation_weight = 1e1,
fixed_frame_pose_rotation_weight = 1e2,
log_solver_summary = false, log_solver_summary = false,
ceres_solver_options = { ceres_solver_options = {
use_nonmonotonic_steps = false, use_nonmonotonic_steps = false,

View File

@ -156,10 +156,16 @@ double rotation_weight
Scaling parameter for the IMU rotation term. Scaling parameter for the IMU rotation term.
double consecutive_scan_translation_penalty_factor double consecutive_scan_translation_penalty_factor
Penalty factors for changes to the relative pose between consecutive scans. Penalty factors for translation changes to the relative pose between consecutive scans.
double consecutive_scan_rotation_penalty_factor double consecutive_scan_rotation_penalty_factor
Not yet documented. Penalty factors for rotation changes to the relative pose between consecutive scans.
double fixed_frame_pose_translation_weight
Scaling parameter for the FixedFramePose translation.
double fixed_frame_pose_rotation_weight
Scaling parameter for the FixedFramePose rotation.
bool log_solver_summary bool log_solver_summary
If true, the Ceres solver summary will be logged for every optimization. If true, the Ceres solver summary will be logged for every optimization.