Commit Graph

1137 Commits (c84da8ec0f69a4dae2c9dddb2f01db0041431855)

Author SHA1 Message Date
Christoph Schütte 1de696d45f Introduce PoseGraphInterface::ToProto() (#813) 2018-01-12 13:55:14 +01:00
Christoph Schütte fee77c8a99 Add LocalSlamResultData retrieval and submap management (#810)
[RFC=0002](https://github.com/googlecartographer/rfcs/blob/master/text/0002-cloud-based-mapping-1.md)
2018-01-12 13:00:25 +01:00
gaschler 51ccee3e74 CollatorInterface (#808)
[RFC=0008](https://github.com/googlecartographer/rfcs/blob/master/text/0008-collator-interface.md)
2018-01-11 16:02:03 +01:00
Christoph Schütte 8fc64fdbb5 Wrap HybridGrid in unique_ptr to make Submap updatable (#809) 2018-01-11 14:34:56 +01:00
Christoph Schütte e1a182d1fa Implement LocalSlamResult data adding to PoseGraph. (#804) 2018-01-11 10:19:37 +01:00
Christoph Schütte d313af8674
Add InsertionResult to LocalSlamResult. (#801) 2018-01-10 17:26:04 +01:00
Susanne Pielawa c7a8c5fda9 Keep fixed frame across optimizations. (#807)
PAIR=wohe
2018-01-10 16:01:27 +01:00
Susanne Pielawa 286d16238e In optimization_problem, use a map instead of vector for trajectory data. (#805)
PAIR=wohe
2018-01-10 14:30:51 +01:00
Susanne Pielawa 67d26747cc Implement assignment operator for common::optional. (#800)
Implement assignment operator for common::optional.
2018-01-09 17:54:53 +01:00
Christoph Schütte 8c7c4e3d2a Make LocalTrajectoryBuilder optional. (#799)
This is to prepare for the cloud-based mapping case where the robot is running cartographer in pure-localization mode and the cloud instance only solves the global problem. In that case a `LocalTrajectoryBuilder` need to be instantiated in for the cloud instance.
2018-01-09 16:54:30 +01:00
Christoph Schütte 8165da873f Add GetConstraints() to gRPC service. (#798) 2018-01-09 14:25:28 +01:00
Christoph Schütte bd2fbbf1a1 Implement GetLocalToGlobalTransform() in gRPC service (#797) 2018-01-08 16:28:41 +01:00
Christoph Schütte d240261701 Add GetAllSubmapPoses to gRPC interface. (#791) 2018-01-08 15:34:00 +01:00
Christoph Schütte 78d05bf745 Add GetTrajectoryNodePoses() to gRPC service (#796) 2018-01-08 14:19:39 +01:00
Christoph Schütte d57c2441b8 Implement gRPC submap query. (#794) 2018-01-08 13:52:14 +01:00
gaschler 920a34a938 Fix RpcEvent lifetime (#793)
Fixes #788.

Uses two different types of events whether the event goes through the CompletionQueue or not.
CompletionQueueRpcEvent is again a member of Rpc.
2018-01-08 12:42:19 +01:00
Susanne Pielawa 91034eaf58 Making pose in FixedFramePoseData optional. (#792)
This is for the case that the GPS signal is not available.
2018-01-08 11:37:07 +01:00
Christoph Schütte 196b4b891c Add PoseGraphInterface::GetTrajectoryNodePoses() (#795) 2018-01-08 09:13:51 +01:00
Christoph Schütte 1a837ef3ab Introduce PoseGraphInterface::GetAllSubmapPoses() (#790) 2018-01-05 14:19:08 +01:00
Susanne Pielawa 63a80c9340 Adding a minimal implementation of std::optional. (#783)
We're using C++11, which doesn't have std::optional. We need a few
features of std::optional for improved GPS support. These are
implemented here.
2018-01-05 11:27:21 +01:00
Juraj Oršulić 58d94aaa68 Refactor calling optimization into DispatchOptimization. (#729)
I noticed that @jihoonl opened the PR #726 which performs a similar thing. As discussed in googlecartographer/cartographer_ros#613 (@cschuet  has already taken a look), I pulled this out of #481 (a really old PR whose merging has been postponed), which is an example where re-running optimization is triggered from elsewhere as well (besides from `ComputeConstraintsForNode`). This refactoring makes libcartographer friendlier for use cases such as that one.

An important detail is that I have changed the condition in `WaitForAllComputations` to also check if the work queue is empty. If there are other things on the worker queue besides `ComputeConstraintsForNode`, currently we will wrongfully conclude that all computations are done. (This detail was merged in #754, so it's no longer in the diff of this PR).

Also missing is the same thing for 3D. I can add that when we settle on this.

Also, I suggest that `run_loop_closure` gets renamed to `run_optimization`.
2018-01-05 10:43:56 +01:00
gaschler 923d643b86 Fix obvious asan warnings. (#787)
Adds a few missing overrides and removes a std::move that
prevented copy elision.
2018-01-05 10:18:08 +01:00
gaschler 6125766c81 Define default num_event_threads config. (#785)
(This was not covered by tests because they manually set it to 1.)
2018-01-04 13:51:30 +01:00
Jihoon Lee 2ad83662f2 Migrate SubmapTexture and SubmapSlice logics from cartographer_ros (#782)
Towards [RFC06](https://github.com/googlecartographer/rfcs/blob/master/text/0006-serve-ros-map-from-pbstream.md).

Migrates
* `FillSubmapSlice` from `pbstream_to_rosmap_main.cc` 
* `SubmapTexture` logics from cartographer_ros
2018-01-04 10:52:05 +01:00
Juraj Oršulić 9ee65293d2 Pose graph: do not mark all submaps finished when finalizing a trajectory. (#784)
I think this was a mistake in #563 (@jihoonl). Not all submaps should be marked as finished, only those pertaining to the trajectory being finalized.
2018-01-04 10:11:28 +01:00
gaschler dbb3f7cde4 Test TrajectoryBuilderStub (#780) 2018-01-03 14:56:56 +01:00
gaschler 269bf5b05a Log output for failed tests (#781) 2017-12-20 16:08:27 +01:00
Christoph Schütte 18cb9c324f Make CMakeLists.txt install gRPC service headers. (#779) 2017-12-20 14:40:33 +01:00
gaschler c881fe90cf Stub receives LocalSlamResults. (#778)
[RFC=0002](https://github.com/googlecartographer/rfcs/blob/master/text/0002-cloud-based-mapping-1.md)
PAIR=cschuet
2017-12-20 12:42:27 +01:00
gaschler f5e99089a9 Notify LocalSlamResults subscription ends. (#777)
[RFC=0002](https://github.com/googlecartographer/rfcs/blob/master/text/0002-cloud-based-mapping-1.md)
PAIR=cschuet
2017-12-20 11:42:01 +01:00
Christoph Schütte 5b5b290e9f Implement BlockingQueue::WaitUntilEmpty(). (#775)
PAIR=gaschler
2017-12-20 10:22:53 +01:00
Christoph Schütte e0faf7094e Change MapBuilderServer::LocalSlamSubscriptionCallback (#776)
PAIR=gaschler
2017-12-20 09:46:54 +01:00
gaschler 383b988548 TrajectoryBuilderStub sends WritesDone (#774)
This is required to close the connection, otherwise the server
cannot shutdown.
2017-12-19 15:49:56 +01:00
Christoph Schütte 02734c296d Implement ReceiveLocalSlamResultsHandler. (#772) 2017-12-19 15:11:29 +01:00
gaschler 5fbc4ca568 Test gRPC client/server (#773)
Adds an integration test and a test with a mock MapBuilderInterface to cover client/server communication.
2017-12-19 14:36:25 +01:00
Christoph Schütte dea6c3d7ce Implement server-streaming RPCs and add unittest (#768)
[RFC=0002](https://github.com/googlecartographer/rfcs/blob/master/text/0002-cloud-based-mapping-1.md)
2017-12-19 10:27:30 +01:00
Christoph Schütte c79425cbb0 Implement RpcHandler::GetWriter and add unittest (#767) 2017-12-18 21:27:03 +01:00
gaschler def442b9db Make MapBuilderServer testable (#771)
Pass MapBuilder to the constructor so the MapBuilder can be mocked.
2017-12-18 20:47:00 +01:00
gaschler 5bb81a9b4a correct MapBuilderStub (#770)
Context: The `::grpc::ClientContext` represents a single RPC on the client side. Therefore it is illegal to share the same context between two different RPC invocations.
2017-12-18 17:12:29 +01:00
Christoph Schütte 03751b3c9f Implement local SLAM subscriptions in MapBuilderServer (#766) 2017-12-18 16:32:34 +01:00
gaschler db0d5bc746 correct PoseGraphStub (#769) 2017-12-18 15:57:49 +01:00
Christoph Schütte ba7d375a25 Refactor Write()/Finish() and make thread-safe. (#760)
[RFC=0002](https://github.com/googlecartographer/rfcs/blob/master/text/0002-cloud-based-mapping-1.md)
2017-12-18 13:36:44 +01:00
gaschler c6decd5b7b Test MapBuilderServer (#762)
Test to start and stop the MapBuilderServer.
Moves test helper functions in common with MapBuilderTest
to internal/mapping.
2017-12-18 11:52:17 +01:00
gaschler 89b49dfefb TrajectoryBuilderStub implementation (#764) 2017-12-18 11:24:16 +01:00
gaschler 3fbc642a89 PopWithTimeout for sensor data queue (#763)
PopWithTimeout is necessary to ensure the SLAM thread
in the MapBuilderServer finishes when the server is
shut down.
2017-12-18 10:02:57 +01:00
gaschler d49706944f FixedFramePoseData in gRPC server (#761)
Defines the FixedFramePoseData RPC and implements
the handler for the gRPC server.
2017-12-15 15:26:58 +01:00
gaschler 6817d22788 Test global 2D SLAM. (#751) 2017-12-15 14:45:56 +01:00
Christoph Schütte 69f74a11ba Implement EventQueues. (#759) 2017-12-15 12:21:44 +01:00
Christoph Schütte e023ec5ecc In RpcEvent use std::weak_ptr<Rpc> rather than Rpc* (#757)
[RFC=0002](https://github.com/googlecartographer/rfcs/blob/master/text/0002-cloud-based-mapping-1.md)
2017-12-14 16:30:01 +01:00
Juraj Oršulić 29e4395a5a Make WaitForAllComputation wait for work queue in 3D as well (#758)
Repeat the change in #754 by @gaschler for 3D as well.
2017-12-14 10:02:54 +01:00