注释:这篇文章是写给自己的,由于cartographer的grpc服务器需要客户端上传激光数据给服务器,所以作者实例化了MapBuilderStub并传递给map_builder_server。对于我来说只有一台设备,就不想搞这么麻烦,就把MapBuilder实例化并传给map_builder_server,这样就不需要激光数据打包再拆包的过程了,cpu明显降低。这里和本话题有点关系,但是并不大。
grpc的好处是可以高效的上传图像数据,我们就可以在任何地方绘图显示,但是cartographer的前端又做了很多预处理工作,所以二者耦合度很大,想直接移除ros并不容易,这里给出一个rpc与ros交互的简单解决办法,就是在pose_graph中开放2个接口,表明调用rpc和调用ros的过程状态,那样之后就可以把所有工作安排给ros,rpc收到消息后与ros交互使用。
注意:还需要写一个传递执行参数的接口。rpc接口需要自己写超时机制。
画个图显示:

talk is cheap
在node写个定时器,实时监测rpc的通知
本文探讨如何在cartographer中结合ROS和grpc进行交互,通过实例化MapBuilder并直接传递给map_builder_server避免激光数据的额外处理,从而降低CPU负载。虽然涉及到的耦合度较高,但提出了在pose_graph中开放接口来协调rpc和ros操作的解决方案,并强调需要自定义超时机制以及传递执行参数的接口。
订阅专栏 解锁全文
418

被折叠的 条评论
为什么被折叠?



