如何将用户操作从服务器中继到外部设备



我有一个web界面,允许用户发送远程命令到1或2个机器人。目前,任务被保存在数据库中(也用于日志记录),机器人每隔125ms就会使用GET请求来轮询django后端,这样可以提供可接受的响应时间,而不会给后端带来过大的压力。简而言之:

Action(User) -> [Remote Control UI] -> Django -> DB (based on user input)

为了获取动作,机器人会向Django发出get请求,如下所示:
while(ros::ok())
{
response = requests.get(task_url, timeout=5)
// input task(s) to state machine
// execute task if possible
rate.sleep();
} 


我的问题是:有没有更好的方法?当机器人离开Wi-Fi时,遥控器有时会被禁用,因此该解决方案需要一定程度的灵活性来重新连接,IP更改和连接错误。我考虑了可能的替代方案,但不确定它们是否可行。

  • 要求机器人注册并保存他们的IP(?),如果注册,则将命令发送给机器人
  • 将命令多播到整个Wi-Fi子网(?)并让机器人读取它
  • 使用django的通道或者其他类似的技术?我只找到了[django或flask] + javascript的例子。我不确定是否可以从Django到Flask或类似的东西。

欢迎反馈

搜索ROS多机将有助于解决这个问题。

http://wiki.ros.org/ROS/Tutorials/MultipleMachines

简而言之,在本地设备/etc/hosts中设置其他设备的IP在此文件中,您可以为彼此分配正确的IP

对所有设备执行此操作。

然后在一台机器上运行roscore

在这个roscore中,您将看到从roscore中发出的消息,通常是您的核心IP地址+ 11311

然后在第二台机器上,将ROS_MASTER_URI设置为您找到的ros IP +端口。

然后两台机器可以共享主题和服务。

p。如果您在遵循本教程尝试SSH时遇到端口22问题。重新安装open-ssh-server和open-ssh-client

相关内容

  • 没有找到相关文章

最新更新