mavros udp url

fcu_url:飞控的地址,有的飞控有网口连接。

gcs_url:一个额外的mavlink流转发模块,把从fcu_url收到的每条消息都转发到这个地址,并把从这个地址收到的消息全部转发给飞控。主要用于转发给地面站QGC。

注意fcu_url和gcs_url是mavros里两个独立的模块,fcu_url的remote应当是飞控,而gcs_url的远端是想转发到的对象(一般是QGC所在电脑)

fcu_url和gcs_url里udp url格式

bash 复制代码
udp://bind_ip:bind_port@remote_ip:remote_port

这是mavros自己定义的格式,靠@和:来区分字符串。

其中都可以空着不写,但是@符号必须有,默认值分别为:

bind_ip: 0.0.0.0 (本机所有网卡IP)

bind_port: 14555

remote_ip: "" (默认是空,此时不发送mavlink流到remote)

remote_port: 14550 (QGC默认监听这个端口)

注意:remote_ip:remote_port只是建议值,mavros会通过bind_ip:bind_port收到的消息来源重新设置remote_ip:remote_port,这就是为什么remote_ip可以空着的原因。

各项作用

bind_ip:bind_port的作用:mavros监听这个端口,一旦收到消息,会把收到的消息来源重新设置remote_ip:remote_port (这个行为有点像一个服务器)

remote_ip:remote_port的作用:mavros向这个远端IP端口发送mavlink消息(remote_ip不为空的时候)

特殊情况

udp-b://@ 等效于

udp-b://0.0.0.0:14555@255.255.255.255:14550

一般用于gcs_url在不知道QGC ip的时候连接第一个打开的QGC,注意这里remote_ip不管你写什么都会被改为255.255.255.255(也就是向子网内所有设备的14550端口广播发送mavlink消息),直到0.0.0.0:14555端口收到消息(QGC回应),然后和上面一样,remote_ip:remote_port会被置为当前QGC的实际IP:14550,从而从广播转为了单播。后续再有别的QGC打开也不会连上了,因为已经转成了单播。

不建议用udp-b://@,因为没有QGC打开时,此时的广播行为会很占据带宽,所有子网内设备即使没有监听14550端口,也会收到发来的udp包(不过被丢弃了)。

更推荐用 udp://0.0.0.0:bind_port@ ,此时mavros像一个udp服务器,等待QGC来主动连接它的IP:bind_port,然后mavros的remote_ip和remote_port会自动获取QGC的IP和端口。就是需要QGC手动设置去连接udp server稍微麻烦点。

udp-pb://@基本和udp-b://@一样,唯一不同是固定永远为广播,即使有QGC连上也不会转为单播,这样可以同时连多个QGC(但是仍然不建议,广播大量mavlink流是非常占带宽和路由器CPU的!)

相关推荐
X.Ming 同学2 小时前
深度解析 Qt 自定义图表视图:频谱图 的设计与高级功能拓展
服务器·网络·数据库
航Hang*2 小时前
第六章:网络系统建设与运维(中级)——链路聚合
运维·服务器·网络·笔记·华为·ensp
IT运维爱好者2 小时前
【Linux】网络诊断工具traceroute命令详解
linux·网络·traceroute
oMcLin2 小时前
如何通过 TCP BBR 与 FQ_codel 优化 Linux 网络带宽:提升跨境电商与视频流业务的响应速度
linux·网络·tcp/ip
2501_927773072 小时前
Linux系统编程——TCP并发模型
linux·网络·tcp/ip
chian-ocean2 小时前
网络世界的“搬运工”:深入理解数据链路层
开发语言·网络·php
qq_254674412 小时前
人脑的工作原理——神经网络
网络
啊吧怪不啊吧2 小时前
从单主机到多主机——分布式系统的不断推进
网络·数据库·redis·分布式·架构
一颗青果8 小时前
HTTP协议详解
linux·网络·网络协议·http