@foxglove/velodyne-cloud (英语)
将 Velodyne LIDAR 数据包转换为指向云的文本库
导言
维洛德内 LIDAR硬件广播了代表激光扫描数据的平稳的UDP包流. 这些生包需要用每个硬件模型所特有的校正数据被转换为点云. 这个TypeScript库从分析包中提供对Velodyne硬件模型的最佳检测,并包含校正数据,以自动将原始数据转换为3D点云表示.
此库用于 狐格罗夫工作室 转换 velodyne msgs/Velodyne扫描器 ROS 消息给 传感器 msgs/ PointCloud2 留言.
使用量
import {
Calibration,
PointCloud,
PointFieldDataType,
RawPacket,
Transformer
} from "@foxglove/velodyne-cloud";
type VelodynePacket = {
stamp: { sec: number, nsec: number };
data: Uint8Array;
};
// NOTE: Use the packetRate() function to determine how many packets are needed
// to create a full 360 degree scan
function createPointCloud(packets: VelodynePacket[]) {
if (packets.length === 0) return undefined;
const firstPacket = new RawPacket(packets[0].data);
const model = firstPacket.inferModel();
if (model == undefined) return undefined;
const stamp = firstPacket.timestamp();
const maxPoints = RawPacket.MAX_POINTS_PER_PACKET * packets.length;
const cloud = new PointCloud({ stamp, maxPoints });
const transformer = new Transformer(new Calibration(model));
for (const packet of packets) {
transformer.unpack(new RawPacket(packet.data), stamp, undefined, cloud);
}
cloud.trim();
console.log(
`Created ${cloud.width}x${cloud.height} dense little endian point cloud data. ` +
`${cloud.data.byteLength} bytes total with ${cloud.point_step} byte point step, ` +
`${cloud.row_step} byte row step, and the following fields:`
);
for (const field of cloud.fields) {
console.log(
` [${field.name}] offset=${field.offset}, ` +
`datatype=${PointFieldDataType[field.datatype]}, ` +
`count=${field.count}`
);
}
}
许可证
@foxglove/velodyne-cloud 获得许可证 MIT 许可证。 。 。 .
释放
- 运行
yarn version --[major|minor|patch]切换到凸起版本 - 运行
git push && git push --tags以驱动新标签 - GitHub 动作会照顾剩下的
保持联系
加入我们 黑频道 问问题 分享反馈 随时了解我们团队的工作.