cartographer
cartographer copied to clipboard
Why add frozen nodes as optimization variables?
In optimization_problem_2d.cc, line 279~287 there is:
for (const auto& node_id_data : node_data_) {
const bool frozen =
frozen_trajectories.count(node_id_data.id.trajectory_id) != 0;
C_nodes.Insert(node_id_data.id, FromPose(node_id_data.data.global_pose_2d));
problem.AddParameterBlock(C_nodes.at(node_id_data.id).data(), 3);
if (frozen) {
problem.SetParameterBlockConstant(C_nodes.at(node_id_data.id).data());
}
}
The above code adds the node from 'node_data_' to the optimization problem, and sets it as constant if it is considered frozen (the node belongs to a frozen trajectory).
I understand that a 'frozen submaps' can be used to construct INTER_SUMAP constraints, but when will the 'frozen node' be used? It seems they are not used in any constraints?