注释:这篇文章是写给自己的,由于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的通知