给机器人增加计算机视觉
我们想,如果机器人可以识别人体,并对人的手势和动作做出反应(这样机器人会更加人性化),那不是很棒吗?
一项最近发布的项目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