激光雷达帧头协议说明---以Velodyne64为例

首先说明几个协议头:

(1)14字节的EthernetHeader

typedef struct  _EthernetHeader {
        u_char DestMAC[ETHER_ADDR_LEN];       //目的MAC地址 6字节   
        u_char SourMAC[ETHER_ADDR_LEN];       //源MAC地址 6字节
        u_short EthType;                      //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp协议  2字节
    }  EthernetHeader

(2)20字节IPv4的协议头

typedef struct _IpHeader{
    u_char  VerIhl;           // 版本4 + 首部长度4Version (4 bits) + Internet header length (4 bits)
    u_char  Tos;              // 服务类型Type of service
    u_short Tlen;             // 总长度Total length,包括IP20字节的头
    u_short Identification;   // 标识Identification
    u_short FlagsFo;          // 标志(4 bits)+片偏移(12 bits)Flags (3 bits) + Fragment offset (13 bits)
    u_char  Ttl;              // 生存时间Time to live
    u_char  Proto;            // 协议类型:TCP(6)、UDP(17)、ICMP(1)
    u_short Crc;              // 首部校验和Header checksum
    u_char SourceIpAdd[4];    // 源地址Source address
    u_char DestIpAdd[4];      // 目标地址Destination address
}IPHeader;

(3)8字节UDP header

typedef struct _UDPHeader{
    u_short SrcPort;         // Source port
    u_short DestPort;        // Destination port
    u_short Len;             // Datagram length
    u_short Crc;             // Checksum
}UDPHeader;

velodyne64的一个帧头的原始数据如下:
在这里插入图片描述

解析如下:
HDL 42字节帧头(14+20+8,按照前面的三个协议帧头排列,也可以参看HDL的参考手册)

255 255 255 255 255 255
//FF FF FF FF FF FF
96 118 136 64 18 69
// 60 76 88 40 12 45 源MAC地址 6字节,见器件标签
08 00
//0x0800代表上一层是IP协议

===========================
69
00
04 210
00 01
00 00
128
17

// UDP
177 138
192 168 1 64

//源地址
192 168 1 255
//目标地址
//以上为IPv4的协议头

==========================
1 187
9 64
4 190
0 0

//以上为UDP的协议头

激光雷达帧头的一个主要作用是进行获取帧的过滤,特别是在多个激光雷达的应用场景中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值