有奖小调查

3 分钟回答 几 个小问题,让内容更符合你的 WebRTC 学习与开发期望。
每个月最后一天会随机抽出 5 名获奖者,并通过邮件联系送上奖品。
填写问卷

我们如何使用IoT和计算机视觉为远程工作人员构建替代机器人(三)

给机器人增加计算机视觉

我们想,如果机器人可以识别人体,并对人的手势和动作做出反应(这样机器人会更加人性化),那不是很棒吗?

一项最近发布的项目PoseNet引起我们的注意。此项目主推“机器学习模型,可用浏览器实时估算人体姿势”。因此我们对此项目进行了深入研究。

此项目神经网络的性能惊人,特别是当我们在浏览器中的TensorFlowJS上运行它时。与从RaspberryPi运行它相比,我们可以获得更高的准确性和FPS率,而与在第三台服务器上运行它相比,延迟也更短。

受hackathon所限,我们快速浏览了该项目的文档和演示网络app源代码。当找到所需的文件,我们便将其导入,并立即把这些功能应用到我们的Web app中。

我们编写了一个基本的detectBody函数来演算姿势估计关键点,该关键点使用以下参数来调用thenet.estimateMultiplePoses。

async function detectBody(canvas, net) {
    if (net){
        var ctx = canvas.getContext('2d');
        var imageElement = ctx.getImageData(0, 0, canvas.width, canvas.height);

        var imageScaleFactor = 0.3;
        var flipHorizontal = false;
        var outputStride = 16;
        var maxPoseDetections = 2;
        var poses = await net.estimateMultiplePoses(
            imageElement,
            imageScaleFactor,
            flipHorizontal,
            outputStride,
            maxPoseDetections
        )
        return poses;
    }

据称,detectBody以每秒3次的速率被调用来刷新姿态估计关键点。

然后,我们改编了一些util函数来定格检测到的人体关键点,然后将其形状绘制在视频上。从而得到如下演示:

视频中,Soledad和Lucas演示了姿态检测算法。

这个快速演示印证了上述概念,是一个很有趣的特点。并且它极大地扩展了我们机器人的潜在功能。

如果您想了解此模型的工作原理,请点击此处阅读更多内容。

成果

48小时内我们喝了无数杯咖啡,最终做出了一个mini机器人。该机器人能够在办公室中自如走动,使远程工作人员与其同事之间进行实时通信,甚至可以运送一张黑胶唱片!

视频中,由远程工作者控制的替代型机器人在办公室中行走。

视频中展示了(机器人传输回的画面)在浏览器中显示远程工作者如何控制机器人。

我们设法构建硬件、应用通信软件并用计算机视觉为附加功能构建PoC,从而促进人机互动。未来我们可能会改进的地方包括对象检测功能等,这些功能将使机器人无需人工帮助,使用工具(比如我们的开源计算机视觉工具包Luminoth即可识别对象并与之交互。

原文地址:https://tryolabs.com/blog/hackathon-robot-remote-work-iot-computer-vision/

文章作者:Lucas 

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营