This moves adding IMU data to the extrapolator to
Node::HandleImuMessage() so that in the offline node extrapolation
for tf publishing can benefit from IMU data.
Fixes crash in offline node by setting the trajectories as active
as they are added.
The checks in ValidateTrajectoryOptions() are both obsolete. Instead
we now just check that the correct trajectory builder options exist
at all.
Also checks options in Node::StartTrajectoryWithDefaultTopics() now.
This adds trajectories at the Node object. It makes sure all
necessary extrapolators exist. Before the offline node would crash
when extrapolating.
Also deduplicates the logic to compute the topics for a trajectory.
Adds a 'map_node_' which gets updated with the transform to RViz's
fixed frame. Before, submaps rendered incorrectly if a fixed frame
different from the map frame was chosen.
Removes the map frame property since this data is published on the
submap list topic.
Renames node names to reflect the frames they represent.
It can happen that ros::Time::now() is slightly behind the latest pose
timestamp if sensor data had newer timestamps. We would crash before.
Instead, we now publish the latest pose which is even newer that what
we tried to publish before.
The 'slice_pose' must be updated together with the texture. Right
now it is updated before the texture so the submap will be shown
in the wrong pose for a short time.
The fix is to move the handling of poses over to Ogre:
The 'scene_node_' now transforms both the shown submap and the axes
into the submap frame. The 'submap_node_' applies the 'slice_pose'
so that the textured rectangle is shown in the correct pose in
the submap frame.
This will allow us to keep way less information in memory for SLAMing and fixes crashes related to multi trajectory (e.g. this fixes#413).
It also means that to get to an X-Ray or a map, users need to run the asset writer now after SLAMing, which is inconvenient.
Remove dependency on YAML and delete more dead code.
In the (non-offline) node, subscribing to the IMU topic was
controlled by the 2D options even for 3D SLAM. It now correctly
subscribes always similar to the offline node.
This adds an option to subdivide sensor_msgs/LaserScan and
sensor_msgs/MultiEchoLaserScan messages into multiple point
clouds. For slow spinning laser scanners this allows unwarping
using googlecartographer/cartographer#408.
* support map loading in offline node
* support map loading in offline node
* offline_node_main.cc
add todo to replace loadmap later
* rename map_filename to pbstream filename
This was implicitly set on <= Ubuntu 16.04 when find_package()-ing
GMock in google_enable_testing(). On 17.04, this doesn't happen, and
Catkin builds a shared library by default. cartographer_ros currently
can't be built as a shared library due to a linking problem (which is
a separate issue - #392). This makes building on 17.04 consistent with
older versions of Ubuntu.
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.