Integrating imu with velodyne transform nodelet

asked 2017-11-09 14:12:58 -0500

i_robot_flight gravatar image

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:

  1. Should the transform nodelet be run with the velodyne 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?
  2. I noticed a couple of lines in transform.cc in the velodyne_pointcloud src that is commented out that seems to be an alternative to the pcl_ros::transformPointCloud(config_.frame_id, inPc_, tfPc_, listener_) line in the code by the use of ros::Time(0). Would using the alternative solve the extrapolation issue?
  3. Although the same node is publishing tf information using quaternion and displacement to the transform 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!

edit retag flag offensive close merge delete