Add gRPC version of RunFinalOptimization(). (#852)
							parent
							
								
									edb18231b6
								
							
						
					
					
						commit
						1d2613c8e2
					
				|  | @ -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
 | ||||
|  | @ -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)); | ||||
|  |  | |||
|  | @ -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, | ||||
|  |  | |||
|  | @ -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); | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue