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

2023-10-09 13:10

本文主要是介绍基于VeloView测试自己的激光雷达样机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述


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


文章目录

  • 基于VeloView测试自己的激光雷达样机
    • 前言
    • 样例产品
    • 数据格式
    • FPGA代码
    • ARM代码
    • 测试

基于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实时采集的测试数据,显示了矩形像素图像随着初始方位角度的变化不断变化的过程。

这篇关于基于VeloView测试自己的激光雷达样机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/173067

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前后端吗? 有必要。本文从三个方面论述。分别是可测试,可维护,可移植。 可测试 软件黑盒测试更普遍,但很难覆盖所有应用场景。于是有了接口测试、模块化测试以及单元测试。都是通过降低测试对象

day45-测试平台搭建之前端vue学习-基础4

目录 一、生命周期         1.1.概念         1.2.常用的生命周期钩子         1.3.关于销毁Vue实例         1.4.原理​编辑         1.5.代码 二、非单文件组件         2.1.组件         2.2.使用组件的三大步骤         2.3.注意点         2.4.关于VueComponen

如何成为一个优秀的测试工程师

链接地址:http://blog.csdn.net/KerryZhu/article/details/5250504 我一直在想,如何将自己的测试团队打造成世界一流的团队?流程、测试自动化、创新、扁平式管理、国际标准制定、测试社区贡献、…… 但首先一点是明确的,就是要将每一个测试工程师打造成优秀的测试工程师,优秀的团队必须由优秀的成员构成。所以,先讨论“如何成为一个优秀的测试工程师”,