ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

OP's Analysis

In our system, the PCD files names are all about 0.1s apart. Given a published packet rate of 1808 packets/s for our Velodyne device (32E), this means that each PCD file should span roughly 180 packets. The temporal error that we're interested in is the per-point error within a given PCD file, e[i, j] = T-t[i, j], where T is the time stamp reported in the PCD file name and t[i, j] is the actual time that point i, j was recorded by the device. Here, i means packet i out of 180 and j means point j out of 384 in the packet. (384 points = 12 firings * each of 32 lasers.)

If my understanding of the tool chain is right, e[i, j] is a function of primarily of (1) the construction of each packet in the Velodyne device, (2) transmission latency, (3) buffering in the kernel and ROS code, (4) and re-stamping of the VelodyneScan object with the received time of the last packet in its buffer. It seems to me that max(e[i, j]) is basically the interval between between one PCD time stamp and the next, plus transmission and buffering latency.

In my case, then, max(e[i, j]) is at least 0.1s.

OP's Analysis

In our system, the PCD files names are all about 0.1s apart. Given a published packet rate of 1808 packets/s for our Velodyne device (32E), this means that each PCD file should span roughly 180 packets. The temporal error that we're interested in is the per-point error within a given PCD file, e[i, j] = T-t[i, j], where T is the time stamp reported in the PCD file name and t[i, j] is the actual time that point i, j was recorded by the device. Here, i means packet i out of 180 and j means point j out of 384 in the packet. (384 points = 12 firings * each of 32 lasers.)

If my understanding of the tool chain is right, e[i, j] is a function of primarily of (1) the construction of each packet in the Velodyne device, (2) transmission latency, (3) buffering in the kernel and ROS code, (4) and re-stamping of the VelodyneScan object with the received time of the last packet in its buffer. It seems to me that max(e[i, j]) is basically the interval between between one PCD time stamp and the next, plus transmission and buffering latency.

We can't model network latency and buffering too well, but so I'll give a lower bound: In my case, then, max(e[i, j]) is at least 0.1s.

OP's Analysis

In our system, the PCD files file names are all about 0.1s apart. Given a published packet rate of 1808 packets/s for our Velodyne device (32E), this means that each PCD file should span roughly 180 packets. The temporal error that we're interested in is the per-point error within a given PCD file, e[i, j] = T-t[i, j], where T is the time stamp reported in the PCD file name and t[i, j] is the actual time that point i, j was recorded by the device. Here, i means packet i out of 180 and j means point j out of 384 in the packet. (384 points = 12 firings * each of 32 lasers.)

If my understanding of the tool chain is right, e[i, j] is a function of primarily of (1) the construction of each packet in the Velodyne device, (2) transmission latency, (3) buffering in the kernel and ROS code, (4) and re-stamping of the VelodyneScan object with the received time of the last packet in its buffer. It seems to me that max(e[i, j]) is basically the interval between between one PCD time stamp and the next, plus transmission and buffering latency.

We can't model network latency and buffering too well, but so I'll give a lower bound: In my case, max(e[i, j]) is at least 0.1s.

OP's Analysis

In our system, the PCD file names are all about 0.1s apart. Given a published packet rate of 1808 packets/s for our Velodyne device (32E), this means that each PCD file should span roughly 180 packets. The temporal error that we're interested in is the per-point error within a given PCD file, e[i, j] = T-t[i, j], where T is the time stamp reported in the PCD file name and t[i, j] is the actual time that point i, j was recorded by the device. Here, i means packet i out of 180 and j means point j out of 384 in the packet. (384 points = 12 firings * each of 32 lasers.)

If my understanding of the tool chain is right, e[i, j] is a function of primarily of (1) the construction of each packet in the Velodyne device, (2) transmission latency, (3) buffering in the kernel and ROS code, (4) and re-stamping of the VelodyneScan object with the received time of the last packet in its buffer. It seems to me that max(e[i, j]) is basically the interval between between one PCD time stamp and the next, plus transmission and buffering latency.

We can't model network latency and buffering too well, but so I'll give a lower bound: In my case, max(e[i, j]) is at least 0.1s.