ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
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.
2 | No.2 Revision |
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.
3 | No.3 Revision |
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.
4 | No.4 Revision |
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.