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

How to relay user actions from the server to an external device

我有一个 Web 界面,允许用户向 1 或 2 个机器人发送远程命令。目前,任务保存在数据库中(也用于日志记录),并且机器人每 125 毫秒使用 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 更改和连接错误。我考虑过可能的替代方案,但不确定它们是否可行:

欢迎任何反馈

搜索 ROS mult machine 将有助于解决这个问题。

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

总之,你在本地设备中设置其他设备IP/etc/hosts 在这个文件中,可以互相分配正确的IP

为所有设备执行此操作。

然后在一台机器上运行roscore

在这个roscore中,你会有一个rosip看到从roscore出来的消息,通常你的核心IP地址+11311

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

那么两台机器就可以共享主题和服务了。

Ps。如果您在按照本教程尝试使用 ssh 时遇到端口 22 问题。重新安装 open-ssh-server 和 open-ssh-client