rslidar_sdk v1.5.7 源代码解析

2022-10-20  本文已影响0人  RonZheng2010

rslidar_sdk 是RoboSense雷达适配ROS/ROS2的驱动程序。本文是rslidar_sdk的源代码解析文档,原文地址在:
https://github.com/RoboSense-LiDAR/rslidar_sdk/blob/v1.5.7/doc/src_intro/rslidar_sdk_intro_CN.md

1 简介

rslidar_sdk是基于ROS/ROS2的雷达驱动。rslidar_sdk依赖rs_driver接收和解析MSOP/DIFOP Packet。

rslidar_sdk的基本功能如下:

2 Source 与 Destination

如前面所说,rslidar_sdk从在线雷达、PCAP文件、ROS主题这三种源得到MSOP/DIFOP Packet,将Packet发布到ROS主题/rslidar_packets/rslidar_packets,将点云发布到目标 - ROS主题/rslidar_points

class_source_destination

2.1 DestinationPointCloud

DestinationPointCloud定义发送点云的接口。

2.2 DestinationPacket

DestinationPacket定义发送MSOP/DIFOP Packet的接口。

2.3 Source

Source是定义源的接口。

2.4 DestinationPointCloudRos

DestinationPointCloudRos在ROS主题/rslidar_points发布点云。

class_destination_pointcloud

2.4.1 DestinationPointCloudRos::init()

init()初始化DestinationPointCloudRos实例。

2.4.2 DestinationPointCloudRos::sendPointCloud()

sendPacket()在ROS主题/rslidar_points发布点云。

2.5 DestinationPacketRos

DestinationPacketRos在ROS主题/rslidar_packets发布MSOP/DIFOP Packet。

class_destination_packet

2.5.1 DestinationPacketRos::init()

init()初始化DestinationPacketRos实例。

2.5.2 DestinationPacketRos::sendPacket()

sendPacket()在ROS主题/rslidar_packets发布MOSP/DIFOP packet。

2.6 SourceDriver

SourceDriver从在线雷达或PCAP文件得到MSOP/DIFOP Packet,并解析得到点云。

class_source_driver

2.6.1 SourceDriver::init()

init()初始化SourceDriver实例。

2.6.2 SourceDriver::getPointCloud()

getPointCloud()给成员driver_ptr_提供空闲的点云。

2.6.3 SourceDriver::putPointCloud()

putPointCloud()给从成员driver_ptr_得到填充好的点云。

2.6.4 SourceDriver::processPointCloud()

processPointCloud()处理点云。在while循环中,

2.6.5 SourceDriver::regPacketCallback()

regPacketCallback()用来注册DestinationPacket。

2.6.6 SourceDriver::putPacket()

putPacket()调用sendPacket(),其中调用成员pkt_cb_vec_[]中的所有实例,发送MSOP/DIFOP Packet。

2.7 SourcePacketRos

SourcePacketRos在ROS主题/rslidar_packets得到MSOP/DIFOP Packet,解析后得到点云。

class_source_packet_ros

2.7.1 SourcePacketRos::init()

init()初始化SourcePacketRos实例。

2.7.2 SourcePacketRos::putPacket()

putPacket()接收Packet,送到driver_ptr_解析。

3 NodeManager

NodeManager管理Source实例,包括创建、初始化、启动、停止Source。它支持多个源,但是这些源的类型必须相同。

class_node_manager

3.1 NodeManager::init()

init()初始化NodeManger实例。

3.2 NodeManager::start()

start()启动成员sources_[]中的所有实例。

上一篇下一篇

猜你喜欢

热点阅读