我正在开发一个基于网络的机器人控制面板,其所需的功能之一是能够从机载摄像头传输视频数据。我发现的问题是,我从相机的 rosbridge 节点接收到的数据是通过 websocket 的字符串形式的 JPEG,并且我很难找到将此数据转换为视频的好方法。
我测试过的当前解决方案是为了确保相机正在使用字符串更新
<img />
标签的 src 属性。
我试图实现的一个例子是 foxglove studio 图像面板,但是我找不到它的任何开源代码。
您将需要使用 webrtc。我们写了一篇很长的博客文章解释为什么这是机器人技术的正确选择。关键是它为您提供了 UDP(因此当网络不好时,旧帧可以被丢弃)、h264 压缩、拥塞控制(当网络不好时降低图像质量)、数据包丢失缓解,它避免了对 VPN 的需要,当然最重要的是:低延迟(~200ms)。在机器人上,您很可能希望使用硬件加速,假设您的计算机或 SoC 支持(更好)。