python - 如何将用户操作从服务器中继到外部设备
问题描述
我有一个网络界面,允许用户向 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 频道或一些类似的技术?我只找到了 [django or flask] + javascript 的例子。我不确定它是否可以从例如 Django 到 Flask 或类似的东西。
任何反馈表示赞赏
解决方案
搜索 ROS 多机将有助于解决这种情况。
http://wiki.ros.org/ROS/Tutorials/MultipleMachines
总之,你在本地设备/etc/hosts这个文件中设置其他设备的IP,就可以互相分配正确的IP了
对所有设备执行此操作。
然后在一台机器上运行 roscore
在这个 roscore 中,您将有一个 rosip 看到从 roscore 发出的消息,通常是您的核心 IP 地址 + 11311
然后在第二台机器上,将 ROS_MASTER_URI 设置为您找到的 ros IP + 端口。
然后两台机器可以共享主题和服务。
附言。如果您在按照本教程尝试 ssh 时遇到端口 22 问题。重新安装 open-ssh-server 和 open-ssh-client
推荐阅读
- r - Logistic回归分析中信息值计算错误
- rest - POST 期间请求正文中的变量替换为 {}
- class - kotlin,如何从函数返回类类型
- java - sp_who2 'active' 使用 Java 自动化
- python - 如何获得熊猫数据框中一行的百分位数?
- machine-learning - 掩码 RCNN,如何在 2 个类的气球示例中修改 load_mask 代码
- getstream-io - 搜索 getstream.io 以过滤结果
- python - Python 中 Heroku 上的烧瓶
- javascript - 将此 jquery 转换为 Pure JS 的最有效的跨浏览器方式
- mysql - 具有大量帖子的 Mysql 用户提要