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.
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.
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.
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
```
[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
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.
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.
( 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.
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.
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