Commit Graph

593 Commits (c138034db0c47fe0ea5a2abe516acae02190dbf5)

Author SHA1 Message Date
gaschler 2df3b83c80 Add option to disable PoseExtrapolator (#946)
This is useful for tuning/debugging to rule out (simulated) time issues
(because published pose will then only depend on header times).
Another use case is when Cartographer runs on a separate machine
that has a different system clock than the sensors.
2018-07-19 18:36:13 +02:00
Wolfgang Hess b9af6366db Get rid of std::bind. (#939)
`std::bind` is bug prone and should be avoided.
Lambdas are a more general and safer replacement.
Similar to googlecartographer/cartographer#1261.
2018-07-14 11:57:36 +02:00
Kevin Daun a90e9952d8 Move conversion table to LoadOccupancyGridMap. (#941) 2018-07-14 10:20:22 +02:00
Wolfgang Hess 0572ebb592 Add .clang-format file. (#938)
This adds a .clang-format file, so that git clang-format uses
Google style without the need to remember the commandline flag.
Similar to googlecartographer/cartographer#1249.
2018-07-13 11:29:46 +02:00
Kevin Daun 683129243e Introduce value converter tables. (#937) 2018-07-13 00:52:49 +02:00
gaschler 54e8aa4f6d Warn for possible topic mismatch (#935)
FIXES=#929
2018-07-12 12:18:00 +02:00
Michael Grupp fb5b16d6d3 Simplify gauge and histogram implementation. (#922)
Use mutex locker instead of atomic operations in Gauge.
Remove unnecessary constructor overload from Histogram.
2018-07-12 09:52:18 +02:00
gaschler c157164390 remove unused declaration (#934) 2018-07-11 14:52:01 +02:00
Christoph Schütte e07c2261b6 Follow googlecartographer/cartographer#1241 (#923) 2018-07-10 22:05:44 +02:00
Michael Grupp 168f4cc53f List files explicitly in cartographer_ros_msgs/CMakeLists.txt (#927)
`DIRECTORY` by itself doesn't work as reliable as expected.
2018-07-10 20:04:00 +02:00
gaschler 427fbe6d2e Allow zero pose_publish_period (#933)
To compare different SLAM software online, it is necessary to
disable tf broadcast.
Because we already have a parameter "pose_publish_period_sec",
we use a zero value here to turn off tf broadcast.
2018-07-10 17:52:18 +02:00
Alexander Belyaev 944b22575f
Use 'landmarks' instead of 'landmark'. (#931) 2018-07-09 13:23:52 +02:00
Sebastian Klose 0aa6ecc40f Fix bug in FinishTrajectory logic (#926)
This PR adds additional bookkeeping for trajectories that we scheduled for
finishing.

In Node::RunFinalOptimization(...), we were calling FinishTrajectory for
every active trajectory (state == ACTIVE). Since the state only gets updated
once the corresponding worker for the FinishTrajectory task is
scheduled, we were potentially calling FinishTrajectory twice for a
single trajectory id.

Reproducible on master e.g. with 
```
roslaunch cartographer_ros offline_backpack_2d.launch bag_filenames:=b2-2016-02-02-14-01-56.bag no_rviz:=true
```
2018-07-06 15:47:54 +02:00
Juraj Oršulić bfe0d01b71 Update msg_conversion.cc (#925) 2018-07-06 13:18:29 +02:00
Dave Coleman 0beb972763 Minor grammar fix. (#900) 2018-07-05 10:57:20 +02:00
Michael Grupp be7ecf2e0d Register internal metrics and provide a public interface. (#917)
[RFC 24](https://github.com/googlecartographer/rfcs/blob/master/text/0024-monitoring-ros.md)

Public API:
  - adds `cartographer_ros::metrics::FamilyFactory`
  - compatible with `::cartographer::metrics::RegisterAllMetrics`

Public RPC interface:
  - adds the ROS service `/read_metrics`
  - response contains the latest values of all available metric families
2018-07-04 17:38:17 +02:00
Alexander Belyaev bb4aec395f
Use new pure localization trimmer options. (#918) 2018-07-03 13:56:03 +02:00
Michael Grupp 237dd83b60 Add internal metric families. (#914)
- minimal counter, gauge and histogram implementations
- metric family interfaces as defined in libcartographer
- serializable to ROS messages

RFC: https://github.com/googlecartographer/rfcs/pull/26
2018-07-02 10:26:58 +02:00
Michael Grupp f5b583fde8 Allow to ignore (un-)frozen submaps in the occupancy grid node. (#899) 2018-06-29 13:28:40 +02:00
Michael Grupp 0e65aa55b9 Discard proto data in pbstream_map_publisher via RAII. (#912)
We don't need it after the occupancy grid is drawn.
Reduces the memory consumption especially for large maps.
2018-06-29 12:29:32 +02:00
Michael Grupp 8bbec6bff7 Use PoseGraphInterface::TrajectoryState from libcartographer (#910)
https://github.com/googlecartographer/rfcs/pull/35

- makes use of the trajectory state in `map_builder` and `node`
- adds a service to query the trajectory states
- follow-up to https://github.com/googlecartographer/cartographer/pull/1214
  that takes the deleted state into account in the `/finish_trajectory` service
  (could crash otherwise)
2018-06-29 11:14:56 +02:00
Michael Grupp c560d05d99 Improve internal naming of local SLAM data. (#908)
Prevents confusion with TrajectoryState and GetTrajectoryStates()
of the pose graph interface. The affected data is only local.
2018-06-25 16:07:32 +02:00
Juraj Oršulić 424e702289 Revert timers other than PublishTrajectoryStates back to being WallTimers. (#898) 2018-06-14 12:43:10 +02:00
Sebastian Klose 4f32f88717 Ensure we validate what we CHECK(...) (#897)
In cartographer we check for strict ordering, i.e. do not allow
subsequent timestamps to be exactly equal. This fixes the rosbag validation tool
to do the same.
2018-06-13 12:47:00 +02:00
Juraj Oršulić 82b5eb9688 Use timing channel from PointCloud2, if available. (#896) 2018-06-12 15:33:34 +02:00
Michael Grupp 5d5ce68a11 Fix memory leak in simulations by removing wall timers. (#891)
Fixes the problem of ever-growing memory after `rosbag play --clock` finishes,
as discussed in https://github.com/googlecartographer/cartographer/issues/1182

The wall timers caused the timer callback that publishes TF data to be called
even if no simulated `/clock` was published anymore.
As the TF buffer cache time of the TF listener seems to be based on
the ROS time instead of wall clock, it could grow out of bounds.

Now, `ros::Timer` plays nicely with both normal (wall) and simulated time and
no callbacks are executed if `/clock` stops in simulation.
2018-06-11 13:43:58 +02:00
Mikael Arguedas 6b473e3339 set required version of dependencies (#892) 2018-06-08 09:32:45 +02:00
Mikael Arguedas 4fd904d833 remove architecture specific definitions exported by PCL (#893)
* remove architecture specific definitions exported by PCL

This is an issue on PCL 1.8.X causing SIGILL, Illegal instruction crashes: https://github.com/ros-gbp/cartographer_ros-release/issues/10
Should be fixed in future PCL version with https://github.com/PointCloudLibrary/pcl/pull/2100
2018-06-07 22:00:15 +02:00
Alexander Belyaev 42b2763830 Release 1.0. (#889) 2018-06-04 11:54:51 +02:00
Mikael Arguedas c4ac76a579 Add maintainers and authors to package.xml (#886) 2018-05-30 19:17:13 +02:00
Sebastian Klose b28be6fb58 Follow googlecartographer/cartographer#1174 (#883)
Update all users to the new serialization format [RFC 0021](https://github.com/googlecartographer/rfcs/blob/master/text/0021-serialization-format.md)

See also corresponding change in cartographer: googlecartographer/cartographer#1174
2018-05-30 15:29:48 +02:00
Mikael Arguedas 46cfb7dfad [cartographer_ros_msgs] Message dependency fixup (#882)
* add missing std_msgs dependency
* use full message identifier to match be consistent with the other messages from this package
2018-05-30 09:59:16 +02:00
Christoph Schütte 00b0144736
Follow googlecartographer/cartographer#1172 (#881) 2018-05-30 08:36:35 +02:00
Michael Grupp d53d339562 Sanitize node memory consumption with a smaller TF buffer size. (#879)
Fixes an (almost) unbounded growth of the TF buffer.

See the heap profile logs in the PR for more information.
2018-05-29 11:04:29 +02:00
Christoph Schütte 4ecf04b49f Follow googlecartographer/cartographer#1164 (#877) 2018-05-25 14:53:39 +02:00
Mikael Arguedas 37b2d40bb7 add ROS melodic to CI (#870)
ROS melodic [will be released soon](https://discourse.ros.org/t/ros-melodic-morenia-beta-has-begun/4743), cartographer_ros 0.3.0 is already [released in melodic](https://github.com/ros/rosdistro/pull/17719). Testing master on CI would be valuable for users building from source as well as for reducing the testing when the time comes to release a new version in ROS.
2018-05-25 04:11:47 +02:00
Alexander Reimann 037ea79e9b [docs] Add warning on pure_localization submap resolutions (#858)
Closes #847
2018-05-25 03:20:54 +02:00
Roel cf8c05b623 Assets writer (ROS map) urdf typo fix (#875)
The ROS map assets writer launch file can now find the default urdf file when no argument is provided.
2018-05-25 02:58:00 +02:00
Alexander Belyaev 49ca306ec5 Fix the 'load_frozen_state' flag in visualize_pbstream.launch. (#863) 2018-05-25 01:29:47 +02:00
Christoph Schütte e4bfd55797
Follow googlecartographer/cartographer#1143 (#859) 2018-05-10 12:37:20 +02:00
Sebastian Klose be71e346a5 Adapt to new mapping proto location of cartographer (#860) 2018-05-09 13:58:17 +02:00
Michael Grupp 4b60d9cdfe Use immediately invoked lambda for tracking_to_local. (#848)
Restores const-correctness that we dropped when introducing the 
`publish_frame_projected_to_2d` param without using a ternary operator.
2018-05-03 21:37:44 +02:00
gaschler d18365500d Add cartographer_dev_rosbag_publisher (#854)
This adds a tool to publish a bag file without publishing a simulated clock, modifying header timestamps.
2018-05-03 11:47:16 +02:00
Kevin Daun 449a291411 Follow up on https://github.com/googlecartographer/cartographer/pull/1108 (#838) 2018-04-26 10:20:38 +02:00
Michael Grupp bd428df38f Fix Clang thread safety guards in drawable_submap.h (#839)
Fixes a Clang compiler error.
2018-04-25 11:29:18 +02:00
Michael Grupp 30694dee26 Remove unused variable from submaps_display.cc (#840) 2018-04-24 20:03:26 +02:00
Guilherme Lawless 0a917893c5 Add a launch and configuration file for writing a ROS map (#577) (#721)
( Trying again, accidentally deleted source branch for previous PR )

Related issue: #577

The min/max range default to the same as the backback_2d examples; same thing for the URDF file.

However, the name of both the config file and the launch file are kept generic.
2018-04-20 01:32:19 +02:00
jie 5ce6e68dd3 Internal cleanup. (#821)
Fix lint error.
2018-04-20 00:10:23 +02:00
Martin Schwörer 1dd49247a4 Registration of external points processors in AssetsWriter (#830)
Added RegisterPointsProcessor method to AssetsWriter class. This allows to register new points processors to the pipeline builder.

As the new points processors may write files to the disk, the CreateFileWriterFactory method is exposed.
2018-04-19 18:42:42 +02:00
Mikael Arguedas 2ed4eb4f66 [cartographer_ros_msgs] add run dependency on message_runtime (#800)
As per ROS [tutorials](http://wiki.ros.org/ROS/Tutorials/DefiningCustomMessages#Dependencies)

Edit: For future readers, the linked tutorial was referring to `run_depend` from package format 1 as pointed out by @ojura, it has now been updated to refer to `exec_depend` from format 2
2018-04-18 10:49:17 +02:00