Clock of the message in the msg variable is one second later than the
message in delayed_message. It should be more correct to publish the
clock of the message which really has been processed in SLAM and which
affects the position and the map, rather than the one that has only
been pushed into the delayed_msgs queue.
Also change the status message printing not to include the one second
buffer into the amount of bag processed seconds. Spinning the ROS
event queue has also been moved into the inner loop.
Generates colors for different trajectories using a scheme which
ensures even hue distribution, uniform look and high contrast
between consecutive trajectories.
Change googlecartographer/cartographer#248 introduced a separation
between MapBuilder and TrajectoryOptions. The ROS repositiories require
changes to track this modification.
- Add a variable list object to the submaps plugin, containing visibility
checkboxes for individual submaps. Each DrawableSubmap creates and
manages its visibility property checkbox object. Submaps are hidden by
detaching the Ogre manual object from the Ogre scene node.
- Fetch if the submap version number is different, possibly lower
(meaning Cartographer was restarted)
- Among the lines added in #150, the one that fixes building with Qt5 is
the following line:
include_directories(${Qt5Widgets_INCLUDE_DIRS})
The rest is redundant and actually doesn't do anything. A CMake
variable named QtX_INCLUDE_DIRS is not defined when find_package()-ing
Qt. Also, there is no need to find_package() Qt5 Widgets twice.
- In documentation, add sudo to rosdep init invocation, following
http://wiki.ros.org/rosdep. Add a comment about the error which will
be printed if the user has already run sudo rosdep init since
installing ROS.
* Change mutex locker scope in SubmapsDisplay::update()
This avoids the potential unsafe situation where someone (for example,
SubmapsDisplay::Reset()) clears the trajectories vector, but update()
uses it after the mutex has been released, since the scope of the lock
was only in the try block.
Also resolve a miscellaneous signed-unsigned warning.
* Make DrawableSubmap destructor safer
Make the DrawableSubmap destructor wait for the asynchronous fetch
thread to finish - otherwise, it's possible to crash rviz by rapidly
pressing the enable checkbox of the submaps plugin. Eventually the race
condition will be triggered, and the fetch thread will write into a
deleted DrawableSubmap object, which causes a crash.
This was missed in #262. The "build_doc" target has also been renamed to
"build_doc_ros" in order to avoid conflict with the "build_doc" target
in libcartographer, in case both are being built in the same CMake
project.
* Unify signatures of ReadTransformsFromBag and ReadStaticTransformsFromUrdf. Both functions append data into the buffer, so they can be combined.
* Modifies offline_node and assets_writer to optionally use both the .urdf file and bag transform data, if available (use case: fixed joint descriptions of the robot are in the .urdf, while the odometry-base link transforms are read from the bag); the static transforms are added to the buffer after it has been filled with transforms from the bag (if any).
* offline_node optionally publishes all transforms from the bag (checking if any are in conflict with Cartographer is still TODO; however, this should be the responsibility of the bag provider, just like when using the online node, so it should be OK to leave this unimplemented) and all static transforms from the URDF.