本文主要是介绍用实际激光器发布数据的一些理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Author:SuperDeveloper
Date:2018.01.02
关于如何发布虚拟激光器的部分就不细说了,主要是虚拟出距离和强度数据,然后填充到消息结构体中就可以了。
使用实际激光器的时候跟发布虚拟数据差不多,步骤大概如下:
1).从激光器驱动程序中获取数据
2).整理激光器数据
3).发布激光器数据
关于整理激光器数据这部分,我们需要将激光器的数据合成一次扫描数据,大多数情况下从驱动中获取的数据是一周的完整数据,但是自己写驱动的时候获取的是数据包,对于广角激光器来说一个数据包不能完整描述一周的扫描数据。
举个例子:
假设有一个360°的激光扫描器,每周被拆分成14个数据包,每个数据包内有起始角度和终止角度(一般是绝对角)以及224个扫描点,那么就需要将扫描所得数据累计直到完全接收到14个数据包,然后将所有数据包内的扫描点填充到激光器数据结构体里面发布一次激光数据。则激光数据结构体里面的起始角度就是-M_PI到+M_PI.
这样的话,如果一个大型的移动平台有多个激光器的情况就需要处理器将各个激光器的有效部分整合起来,合成一个360度的数据包,然后发布到ROS系统。
这篇关于用实际激光器发布数据的一些理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!