上一节65https://blog.csdn.net/weixin _ 44684139/article/details/118279360 (介绍了系统各模块的初始化,加载了很多参数,公开了很多
激光数据订阅者可以访问src\blam_slam\src\BlamSlam.cc的
PCLD_sub_=nl.subscribe(pcld (,100,blam slam 3360: pointcloudcallback,this ); 回调函数为BlamSlam::PointCloudCallback
voidblamslam : pointcloudcallback (constpointcloud : constptrmsg (synchronizer _.addpclpointcloudmessage ) ) 首先澄清synchronizer_的含义。 一看名字就知道与时间同步有关。 其定义位于src\blam _ slam\include\blam _ slam\blam slam.h中,类型为MeasurementSynchronizer,关注其addpclpointclouddam
voidaddpclpointcloudmessage (const PCL 3360: pointcloudpcl 3360: point XYZ 3360: constptrmsg,constSTD3360:strining
voidmeasurementsynchronizer 33603360 addpclpointcloudmessage (const PCL : pointcloudpcl 33603360 point XYZ 360: cons cl : g (消息PCL 3360: pointcloudpcl 3360: point XYZ 3360: ptrp (新消息PCL 3360: point XYZ 3603360 poing pending _ PCL ) }创建一个指向message的指针,传递并初始化数据,然后将message推入定义如下的容器pending_pcl_pclds_中:
PCL _ pcld _ queue pending _ PCL _ PC LDS _; 类型是
typedef STD 3360: vectormessagepcl 3360: pointcloudpcl 3360: point XYZ 360: constptrpcl _ pcld _ queue; 激光回调到此为止。 那么,激光数据进入后就没有制作毛线,这可能不可思议吗? 如何进行下一个贫民窟? 哪些地方可以积极开启SLAM? 有。 还记得第一节提到“总回调注册”时介绍的计时器吗?
下一节,让我们从定时器入手。