Add gRPC version of RunFinalOptimization(). (#852)

master
Alexander Belyaev 2018-01-25 17:31:03 +01:00 committed by Wally B. Feed
parent edb18231b6
commit 1d2613c8e2
4 changed files with 60 additions and 1 deletions

View File

@ -0,0 +1,46 @@
/*
* Copyright 2018 The Cartographer Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* 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.
*/
#ifndef CARTOGRAPHER_GRPC_HANDLERS_RUN_FINAL_OPTIMIZATION_H
#define CARTOGRAPHER_GRPC_HANDLERS_RUN_FINAL_OPTIMIZATION_H
#include "cartographer/common/make_unique.h"
#include "cartographer/mapping/pose_graph.h"
#include "cartographer_grpc/framework/rpc_handler.h"
#include "cartographer_grpc/map_builder_server.h"
#include "cartographer_grpc/proto/map_builder_service.pb.h"
#include "google/protobuf/empty.pb.h"
namespace cartographer_grpc {
namespace handlers {
class RunFinalOptimizationHandler
: public framework::RpcHandler<google::protobuf::Empty,
google::protobuf::Empty> {
public:
void OnRequest(const google::protobuf::Empty& request) override {
GetContext<MapBuilderServer::MapBuilderContext>()
->map_builder()
.pose_graph()
->RunFinalOptimization();
Send(cartographer::common::make_unique<google::protobuf::Empty>());
}
};
} // namespace handlers
} // namespace cartographer_grpc
#endif // CARTOGRAPHER_GRPC_HANDLERS_RUN_FINAL_OPTIMIZATION_H

View File

@ -31,6 +31,7 @@
#include "cartographer_grpc/handlers/get_trajectory_node_poses_handler.h"
#include "cartographer_grpc/handlers/load_map_handler.h"
#include "cartographer_grpc/handlers/receive_local_slam_results_handler.h"
#include "cartographer_grpc/handlers/run_final_optimization.h"
#include "cartographer_grpc/proto/map_builder_service.grpc.pb.h"
#include "glog/logging.h"
@ -253,6 +254,9 @@ MapBuilderServer::MapBuilderServer(
server_builder
.RegisterHandler<handlers::LoadMapHandler, proto::MapBuilderService>(
"LoadMap");
server_builder.RegisterHandler<handlers::RunFinalOptimizationHandler,
proto::MapBuilderService>(
"RunFinalOptimization");
grpc_server_ = server_builder.Build();
grpc_server_->SetExecutionContext(
cartographer::common::make_unique<MapBuilderContext>(this));

View File

@ -26,7 +26,12 @@ PoseGraphStub::PoseGraphStub(std::shared_ptr<grpc::Channel> client_channel,
proto::MapBuilderService::Stub* stub)
: client_channel_(client_channel), stub_(stub) {}
void PoseGraphStub::RunFinalOptimization() { LOG(FATAL) << "Not implemented"; }
void PoseGraphStub::RunFinalOptimization() {
grpc::ClientContext client_context;
google::protobuf::Empty request;
google::protobuf::Empty response;
CHECK(stub_->RunFinalOptimization(&client_context, request, &response).ok());
}
cartographer::mapping::MapById<
cartographer::mapping::SubmapId,

View File

@ -192,6 +192,10 @@ service MapBuilderService {
// Returns the list of constraints in the current optimization problem.
rpc GetConstraints(google.protobuf.Empty) returns (GetConstraintsResponse);
// Requests a PoseGraph to call RunFinalOptimization.
rpc RunFinalOptimization(google.protobuf.Empty)
returns (google.protobuf.Empty);
// Adds map data in the order defined by ProtoStreamReader.
rpc LoadMap(stream LoadMapRequest) returns (google.protobuf.Empty);
}