( 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
Extracted class Assets_Writer from RunAssetsWriterPipeline.
The idea is to increase the re-usability and flexibility of the assets_writer: In next PR, the assets_writer will allow registering external points_processers to the points processing pipeline. This requires having a class instead of a static method to allow for different states.
The assets writing method was split into several calls to sub-routines.
RunAssetsWriterPipeline now calls sub-routines creating objects from files and then runs the pipeline using the created objects. This should increase readability of the method.
Until now, the error response of an /finish_trajectory request for a
frozen trajectory was 'Trajectory ... is not created yet.'.
This is a lie. The new response is more accurate because the trajectory
__is__ created, but it just can't be finished because it's frozen.
A simple solution for a slightly more complex scenario:
- a pure localization trajectory `X` gets finished & trimmed in the main node
- at the same time, the occupancy_grid_node handles an outdated SubmapList
message in which a submap ID `id` of trajectory `X` is still present
- the call to FetchSubmapTextures(`id`, ...) leads to a crash
With this fix, the trimmed submap IDs are just ignored until the next
iteration (in which the occupancy grid node removes the trimmed IDs).
Moved the run method of the assets_writer_main to the separate assets_writer files.
Will extract asset_writer class in the future to keep the main file small and allow re-usability and more flexibility of the asset_writer.
Adds a tool to measure the difference between a trajectory from a pbstream and one given by tf messages in a bag file, and a script to evaluate real-time pure localization poses compared to a globally optimized mapping poses.
If the new `publish_frame_projected_to_2d` option is set to true,
the published pose will be restricted to a pure 2D pose
(no roll, pitch, or z-offset).
This prevents potentially unwanted out-of-plane poses in 2D mode
that can occur due to the pose extrapolation step (e.g. if the pose
shall be published as a 'base-footprint'-like frame).