Allow continuing after running a "final" optimization. (#109)
And a tiny cleanup of the submap visualization query.master
parent
a33bddd4cd
commit
a5b81ff159
|
@ -34,15 +34,12 @@ message SubmapList {
|
|||
message SubmapQuery {
|
||||
message Request {
|
||||
// Index into 'SubmapList.trajectory(trajectory_id).submap'.
|
||||
optional int32 submap_id = 1;
|
||||
optional int32 submap_index = 1;
|
||||
// Index into 'TrajectoryList.trajectory'.
|
||||
optional int32 trajectory_id = 2;
|
||||
}
|
||||
|
||||
message Response {
|
||||
// ID of the Submap.
|
||||
optional int32 submap_id = 1;
|
||||
|
||||
// Version of the given submap, higher means newer.
|
||||
optional int32 submap_version = 2;
|
||||
|
||||
|
|
|
@ -310,6 +310,10 @@ void SparsePoseGraph::RunFinalOptimization() {
|
|||
optimization_problem_.SetMaxNumIterations(
|
||||
options_.max_num_final_iterations());
|
||||
RunOptimization();
|
||||
optimization_problem_.SetMaxNumIterations(
|
||||
options_.optimization_problem_options()
|
||||
.ceres_solver_options()
|
||||
.max_num_iterations());
|
||||
}
|
||||
|
||||
void SparsePoseGraph::RunOptimization() {
|
||||
|
|
|
@ -311,6 +311,10 @@ void SparsePoseGraph::RunFinalOptimization() {
|
|||
optimization_problem_.SetMaxNumIterations(
|
||||
options_.max_num_final_iterations());
|
||||
RunOptimization();
|
||||
optimization_problem_.SetMaxNumIterations(
|
||||
options_.optimization_problem_options()
|
||||
.ceres_solver_options()
|
||||
.max_num_iterations());
|
||||
}
|
||||
|
||||
void SparsePoseGraph::RunOptimization() {
|
||||
|
|
|
@ -75,9 +75,7 @@ class Collator {
|
|||
|
||||
// Dispatches all queued sensor packets. May only be called once.
|
||||
// AddSensorData may not be called after Flush.
|
||||
void Flush() {
|
||||
queue_.Flush();
|
||||
}
|
||||
void Flush() { queue_.Flush(); }
|
||||
|
||||
private:
|
||||
// Queue keys are a pair of trajectory ID and sensor identifier.
|
||||
|
|
|
@ -50,8 +50,10 @@ inline std::ostream& operator<<(std::ostream& out, const QueueKey& key) {
|
|||
}
|
||||
|
||||
// Maintains multiple queues of sorted sensor data and dispatches it in merge
|
||||
// sorted order. It will wait to see at least one value for each unfinished queue before
|
||||
// dispatching the next time ordered value across all queues. This class is thread-compatible.
|
||||
// sorted order. It will wait to see at least one value for each unfinished
|
||||
// queue before dispatching the next time ordered value across all queues.
|
||||
//
|
||||
// This class is thread-compatible.
|
||||
class OrderedMultiQueue {
|
||||
public:
|
||||
using Callback = std::function<void(std::unique_ptr<Data>)>;
|
||||
|
|
|
@ -79,5 +79,5 @@ SPARSE_POSE_GRAPH = {
|
|||
},
|
||||
},
|
||||
max_num_final_iterations = 200,
|
||||
global_sampling_ratio = 0.01,
|
||||
global_sampling_ratio = 0.003,
|
||||
}
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""A dumb CMakeLists.txt generator that relies on source name conventions."""
|
||||
|
||||
from os import path
|
||||
|
|
Loading…
Reference in New Issue