Integrating imu with velodyne transform nodelet
Hello,
I am using the velodyne VLP16 with gps/imu and I am using my own node to publish the tf information to the velodyne transform nodelet
. It uses gps information (as utm points) to initially set an origin and then convert gps (x, y, z) plus imu data (quaternion - orientation) to broadcast a tf
transform for the velodyne transform nodelet
listener. The tf
tree looks like this: odom ->robot ->velodyne
. I get the following error:
[ERROR] [time.stamp1] : Lookup would require extrapolation into the past. Requested time time.stamp2 but the earliest data is at time time.stamp3, when looking up transform from frame [velodyne] to frame [odom].
I had a couple of questions:
- Should the
transform nodelet
be run with thevelodyne driver
with input frame_id as "odom" in both the launch files instead of frame_id "velodyne" for the driver and "odom" for the transform nodelet? - I noticed a couple of lines in
transform.cc
in thevelodyne_pointcloud
src that is commented out that seems to be an alternative to thepcl_ros::transformPointCloud(config_.frame_id, inPc_, tfPc_, listener_)
line in the code by the use ofros::Time(0)
. Would using the alternative solve the extrapolation issue? - Although the same node is publishing
tf
information using quaternion and displacement to thetransform nodelet
, I do not see the imu quaternion information used in the odom frame and the pointcloud is not getting aligned only for the rotations. Can someone help guide me on this?
Any help is appreciated, thank you very much!