【开发背景】
研究机器人目标检测算法的时候,常常需要把推理图像实时展示出来,以供观摩。而ROS1提供的跨机通信方法,要么是配置单Master,要么是配置多Master;一方面配置麻烦,另一方面传输效率低下,特别是在无线网络环境下,那叫一个鸡肋,仿佛我只需要喝一杯水,他却把整个太平洋给我搬来了一样。忍无可忍之下,萌生了自己动手开发一个图像消息传输中间件的冲动!于是乎,“ image_zmqpp ” —— 应运而生了!
【软件支持】
Ubuntu14.04 + ROS Indigo
Ubuntu16.04 + ROS Kinetic
Ubuntu18.04 + ROS Melodic
Ubuntu20.04 + ROS Noetic
【硬件支持】
X86架构
ARM架构
【依赖安装】
如果你的平台能够联网,那么只需要运行一句话即可:
sudo apt-get install libzmq3-dev
如果你的平台和我一样,处于不那么方便联网的情况 ,那也不用担心,只需要照着下面做即可:
1、把我提供的功能包下载下来,解压到任意一个ROS工作空间
2、找到 zmq_sup/third_party 路径下的 libzmq.tar.gz 压缩包,并解压
3、在该目录下打开一个终端,运行下面指令
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
sudo make install
4、然后便可以回到工作空间下进行 catkin_make 啦
【使用方法】
比如,你有三个机器人A、B、C,以及一台上位机,
- 上位机这边需要运行
roslaunch image_zmqpp image_zmq_sub.launch
其中 launch 文件中的机器人个数以及IP地址等参数需要你根据实际情况做出修改
<?xml version="1.0"?>
<launch>
<node pkg="image_zmqpp" type="image_zmqpp_sub" respawn="false" name="zmq_sub" output="screen">
<param name="ip_num" value="3"/>
<param name="ip_addr_1" value="tcp://192.168.30.26:5555"/>
<param name="ip_addr_2" value="tcp://192.168.1.54:5555"/>
<param name="ip_addr_3" value="tcp://192.168.1.55:5555"/>
<param name="image_topic" value="img_zmq"/>
</node>
</launch>
- 机器人A、B、C上分别运行
roslaunch image_zmqpp image_zmq_pub.launch
这个launch文件中的IP地址也是要根据实际情况修改的
比如机器人A
<?xml version="1.0"?>
<launch>
<node pkg="image_zmqpp" type="image_zmqpp_pub" respawn="false" name="zmq_pub" output="screen">
<param name="ip_addr" value="tcp://192.168.30.26:5555"/>
<param name="image_topic" value="img_zmq"/>
</node>
</launch>
机器人B
<?xml version="1.0"?>
<launch>
<node pkg="image_zmqpp" type="image_zmqpp_pub" respawn="false" name="zmq_pub" output="screen">
<param name="ip_addr" value="tcp://192.168.1.54:5555"/>
<param name="image_topic" value="img_zmq"/>
</node>
</launch>
这样,你只需要把图像话题改成需要传输的话题,即可非常简单完成跨机WIFI图传!
【效果一展】
文章来源:https://www.toymoban.com/news/detail-497773.html
【福利来了】
私信我,拿源码!!文章来源地址https://www.toymoban.com/news/detail-497773.html
到了这里,关于【ROS】基于WIFI网络实现图像消息跨机实时传输的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!