通过新的网络接口使ROS独立于WLAN连接

9jyewag0  于 2022-11-02  发布在  其他
关注(0)|答案(1)|浏览(139)

我在Raspberry PI上的Ubuntu 20上启动ROS,将ROS_HOSTNAME设置为$(hostname).local,ROS_MASTER_URI设置为http://$(hostname):11311。问题是,如果我连接到WiFi,然后连接失败(例如,如果WiFi超出范围),那么机器人将停止正常工作。
我在想,一个可能的解决方案是创建一个新的网络接口或VLAN,并在该网络上启动ROS,然后将该新网络桥接到wlan接口,这样可以使ROS连接的网络独立于wlan接口。但如果wlan在线,它仍然可以访问网络。我还想保留连接到机器人的可能性通过WLAN网络上的另一个设备发送ROS。
我在这里寻求帮助是因为我没有足够的网络知识来解决这个问题。所以任何指导都将是感激的。如果有其他更好的方法来解决这个问题,请让我知道。

7tofc5zh

7tofc5zh1#

我建议使用ros_bridge与机器人进行通信。如果您的机器人有一个Web界面,并且您需要在Web上可视化机器人后端的一些数据,或者甚至向机器人发送命令,则经常使用x1e0 f1 a。与此节点对应的是roslibjs库。您可以在here中找到
要了解更多信息,您可以查看Robot Web Tools,这是一个基于Web的机器人应用程序工具集合。
但是,也许你对web应用程序不感兴趣;你仍然可以将ros_bridgeroslibpy一起使用,roslibpy是rosbridge协议的python实现。它与roslibjs相同,但它使用python而不是javascript。
您可以轻松地创建一个python应用程序,它将使用roslibpy订阅或发布主题或调用服务。
这种方法更好,因为您将封装您的机器人后端,并且您可以使用ros_bridge节点的参数控制外部世界可以看到的内容。如果您的机器人失去wifi连接,您还可以更好地处理重新连接。
尽管如此,您仍然可以使用公开的ROS_MASTER_URI进行rviz和debug proposes,但我不会尝试使用它来控制机器人,因为如果您失去wifi连接,节点之间的连接将不会重新创建。
在我的工作中,我们在AMR产品中使用了一段时间的ros_bridge,我不得不说,它并不像我最初想象的那样健壮。例如,当机器人改变wifi接入点时,会出现问题,缓存消息的行为也不符合文档。对于网络,我们仍然使用它,但为了控制一群移动的机器人,我们不得不放弃它。并且我们开发了基于RabbitMQ的解决方案。
但我猜如果你使用的是Raspberry Pi,那么它就不是一个生产机器人,因此我认为你应该可以使用ros_bridge

相关问题