项目任务:Zeromq-ros的安装调试

完成情况:完成了对zmq-ros的基本了解,确定了无人机zmq的模式为发布订阅模式,进行了同一电脑下不同进程的信息发布订阅的测试。

zeromq-ROS是一个中间传输层,它允许以一个协调模块来控制多个ros终端。它对socket进行了封装,他和socket的区别是,socket是端到端的,也就是一对一的,zmq是多对多的,它是一个消息队列库,它没有消息队列的服务器而像是一个网络通信库。

zeromq四种模型:一对一结对模型,请求回应模型,发布订阅模型,推拉模型。

一对一结对模型

主要用于进程内部线程间通信使用,数据可以双向流动,但不推荐使用。

请求回应模型

routeros v7负载均衡配置 ros负载均衡分流_一对一

由请求端发起请求,然后等待回应端应答,一个请求必须对应一个应答,从请求端的角度来看是发-收配对,从回应端的角度是收-发对。跟一对一结对模型的区别在于请求端可以是1~N个。请求端和回应端都可以是1:N的模型。通常把1认为是server,N认为是Client。通常把该模型主要用于远程调用及任务分配等。

发布订阅模型

发布端单向分发数据,且不关心是否把全部信息发送给订阅端。如果发布端开始发布信息时,订阅端尚未连接上来,则这些信息会被直接丢弃。订阅端未连接导致信息丢失的问题,可以通过与请求回应模型组合来解决。订阅端只负责接收,而不能反馈,且在订阅端消费速度慢于发布端的情况下,会在订阅端堆积数据。该模型主要用于数据分发。

routeros v7负载均衡配置 ros负载均衡分流_ros 不同宽带速率负载均衡_02

推拉模型

Server端作为Push端,而Client端作为Pull端,如果有多个Client端同时连接到Server端,则Server端会在内部做一个负载均衡,采用平均分配的算法,将所有消息均衡发布到Client端上。与发布订阅模型相比,推拉模型在没有消费者的情况下,发布的消息不会被消耗掉;在消费者能力不够的情况下,能够提供多消费者并行消费解决方案。该模型主要用于多任务并行。

发布订阅和请求回应组合模型

routeros v7负载均衡配置 ros负载均衡分流_一对一_03

具体步骤:

1. git clone https://github.com/ravijo/ros_zeromq_tutorial.git

2. catkin_make

3. sudo apt-get install libzmq3-dev

4.rosrun talker和listener

实现了一个终端发布,另一个终端接收话题。

routeros v7负载均衡配置 ros负载均衡分流_一对一_04