如何将用户操作从服务器中继到外部设备
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 更改和连接错误。我考虑过可能的替代方案,但不确定它们是否可行:
- 要求机器人注册并保存他们的 IP (?) 并在注册后向机器人发送命令
- 将命令多播到整个Wi-Fi子网(?)让机器人读取
- 使用django channels或者一些类似的技术?我只找到了 [django 或 flask] + javascript 的例子。我不确定是否可以从 Django 到 Flask 或类似的东西。
欢迎任何反馈
搜索 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
我有一个 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 更改和连接错误。我考虑过可能的替代方案,但不确定它们是否可行:
- 要求机器人注册并保存他们的 IP (?) 并在注册后向机器人发送命令
- 将命令多播到整个Wi-Fi子网(?)让机器人读取
- 使用django channels或者一些类似的技术?我只找到了 [django 或 flask] + javascript 的例子。我不确定是否可以从 Django 到 Flask 或类似的东西。
欢迎任何反馈
搜索 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