【发布时间】:2020-03-24 10:18:27
【问题描述】:
我想做什么:
我已经构建了一个基于 Raspberry Pi 的机器人,我正在为机器人比赛而构建。
可以通过 Raspberry Pi 内部托管的 http 网页来控制机器人。它使用 websocket 并从连接在 Raspberry Pi 本身上的 raspicam 流式传输实时馈送。客户端是当前locak网络上任何客户端上的任何Web浏览器。
由于当前的人类恶意软件情况,我想添加从互联网远程驾驶机器人的选项,而不是通过 Wi-Fi 在本地驾驶。为此,我购买了华威 E3372h LTE 加密狗。加密狗已配置并允许 Raspberry 访问互联网。
问题:
虽然我可以从机器人访问互联网,但我不知道如何从互联网访问托管在 Raspberry Pi 中的网络服务器。
我想通过这样的网络浏览器访问机器人内部托管的网页: http://{机器人公网IP地址}:8080
我想这样做,在客户端中不使用任何软件,只使用普通的网络浏览器。
查看其他答案,我理解这是一个 NAT 问题,但我不明白如何解决它。我看到有人建议设置 VPN,这需要中间人服务器或客户端内部的软件,我想避免这种情况。另一个建议是联系运营商以在他们这边配置 NAT。
规格:
我测量了带宽:
- 机器人 -> 客户端带宽:2.4Mb/s
- 客户端 -> 机器人带宽:49.6 Kb/s
- 数据使用量:0.87h/GB
- 目标延迟:100ms 到 150ms
问题:
是否有其他简单的解决方案可以让 8080 端口上的 http 流量在互联网上可见,或者其他值得考虑的解决方案?
更新:
我仍在研究该主题,简单的解决方案不是问题。正在考虑的技术:
- IoT SIM:静态 IP,但成本较高。大约 50 欧元/月/GB。
- openVPN:看起来很有希望,需要一个静态服务器进行协商,我不清楚如何仅在浏览器中运行一个 javascript 来实现它的客户端。此外,延迟和性能未知,它可能无法处理遥控器。
- TCP 打孔:此技术应允许在 NAT 后面通过使用固定点进行直接 TCP 通道进行协商。它用于点对点网络。
【问题讨论】:
标签: raspberry-pi webserver remote-access lte