基于VeloView测试自己的激光雷达样机

在这里插入图片描述


作者:ShownSun
公众号:时沿科技


基于VeloView测试自己的激光雷达样机

前言

  VeloView软件是Velodyne激光雷达厂商与Paraview合作设计的用于Velodyne产品的开源产品,该软件可以通过github或者Paraview官方网站下载获取。目前Velodyne的产品包括Alpha Prime、Ultra Puck、Puck、Puck LITE、Puck Hi-Res、HDL-32E等系列产品,这些产品应用于不同的应用场景,包括无人机、无人机汽车、农业机械和地面无人系统等。

样例产品

  Velodyne不同的产品都是用相同的VeloView软件显示3D场景信息,对于用户来说唯一不同的就是xml文件的不同,只要设计好对应的xml文件即可使用。
  如果想要为自己的激光雷达产品应用VeloView来进行一些前期的开发工作,比如测试相关产品的性能、稳定性、成像质量等,那么成熟的VeloView开源软件是一个不错的选择。
  例如:有一款雷达使用一个激光发射机、一个激光接收机,扫描方式为矩形扫描64(像素点)x 180(像素点),先俯仰向扫描60个像素点,在方位向往上移动1个像素点,那么可以选择Velodyne的64线激光雷达产品协议进行数据传输。如果自己的雷达俯仰上不是64个像素点,那么只需要将对应像素点距离、强度数据置零即可。

数据格式

  关于Velodynw 64线激光雷达数据传输协议之前介绍过,不了解的可翻阅查看。这里只针对上一段的一个激光发射机、一个激光接收机,扫描方式为矩形扫描64(像素点)x 180(像素点),先俯仰向扫描60个像素点,在方位向往上移动1个像素点的雷达进行数据格式的转换,使其适用于Velodynw 64线激光雷达数据传输协议。如果自己的雷达俯仰上不是64个像素点,那么只需要将对应像素点距离、强度数据置零即可。
  首先正如之前文章介绍过的,只需要修改xml文件。而且这种一发一收的更加简单,只需要更改每个像素点的俯仰角度即可。如果俯仰角度范围为20°,且都在雷达水平视线之上,那么从下往上角度依次为-10°、-9.69°、-9.37°…共计64个角度。

  然后就是传输的数据格式,因为像素矩阵为64(像素点)x 180(像素点),所以upper与lower数据段都设计为32个像素点(关于upper和lower见上一篇文章的Velodyne 64线激光雷达协议)。如果自己的雷达俯仰上不是64个像素点,那么只需要将对应像素点距离、强度数据置零即可。Upper对应上面32个激光器,用0xEEFF表示,lower对应下面32个激光器,用0xDDFF表示。此外,方位角的设置同upper、lower一样在包头中设置。一个UDP数据包传输12个upper和lower像素点数据,详细的数据包字节见下图。

FPGA代码

  这里只是使用ZYNQ的ARM端仿真数据进行UDP数据的传输测试,所以并没有将FPGA端处理后的雷达距离、强度数据与ARM端进行通信。需要的话,只要使用AXI4进行连接即可。下图为ZYNQ的信号处理IP核,里面配置了DDR与网口串口等模块。

ARM代码

  在ARM端按照数据传输协议设计仿真数据。

static u16 packet_cnt	= 0;
static u16 azimuth_cnt	= 0;
static u16 azimuth_val	= 0;
static u8  distance_cnt	= 0;
void packet_data_update(void)
{
	u32_t i;

	for (i = 0; i < UDP_SEND_BUFSIZE; i++)
		send_buf[i] = distance_cnt;

	for (i = 0; i < UDP_SEND_BUFSIZE; i=i+100)
	{
			send_buf[i] 	= 0xff;
			send_buf[i+1] 	= 0xee;
	}

	for (i = 600; i < UDP_SEND_BUFSIZE; i=i+100)
	{
			send_buf[i] 	= 0xff;
			send_buf[i+1] 	= 0xdd;
	}

	azimuth_val = packet_cnt + azimuth_cnt * 0x07ff;
	for (i = 2; i < UDP_SEND_BUFSIZE; i=i+100)
	{
			send_buf[i] 	= 0x22;
			send_buf[i+1] 	= 0x22;
	}

	send_buf[UDP_SEND_BUFSIZE - 6] = 0x00;
	send_buf[UDP_SEND_BUFSIZE - 5] = 0x00;
	send_buf[UDP_SEND_BUFSIZE - 4] = 0x00;
	send_buf[UDP_SEND_BUFSIZE - 3] = 0x00;
	send_buf[UDP_SEND_BUFSIZE - 2] = 0x37;
	send_buf[UDP_SEND_BUFSIZE - 1] = 0xa0;

	packet_cnt = packet_cnt + 0x000f;
	 if(packet_cnt >= 0x2327)
	 {
		 packet_cnt = 0;
		 distance_cnt++;
		 if(distance_cnt >= 255)
		 {
			 distance_cnt = 0;
			 azimuth_cnt++;
			 if(azimuth_cnt >= 255)
				 azimuth_cnt = 0;
		 }
	 }
}	

测试

  关于数据的正确性验证可以通过wireshark软件抓取数据包分析即可。网上关于wireshark使用的文章很多,不做赘述。

  下面是VeloView实时采集的测试数据,显示了矩形像素图像随着初始方位角度的变化不断变化的过程。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShownSun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值