• 资讯
  • News
  • 行业资讯
  • IndustryNews
  • 英特尔Movidius神经元计算棒(NCS)基于ROS的实现与封装

    技术背景

    如今人工智能的热潮正在席卷各行各业,而计算力和数据、算法一同支撑着人工智能的蓬勃发展。作为人工智能的一个重要分支, 深度学习以其良好的表现,越来越受到业界的广泛关注。深度学习模型包含海量的参数,需要强大的计算力进行大规模的神经网络矩阵运算;而终端和物联网设备往往更多考虑小体积和功耗的要求,以至于很难兼顾满足高性能神经网络计算力和低功耗的要求。英特尔在去年发布的针对神经网络矩阵运算优化的Movidius神经元计算棒 (NCS) 就很好的适应了这一应用领域的需求。本文将向您介绍基于 Movidius NCS ROS开发包的功能及其使用方法,您可以轻松地将深度学习技术引入项目,和其他ROS节点无缝连接,为您的机器人装上人工智能的利器。

    Movidius神经元计算棒一同发布的还有NCSDKNCAppZoo,为用户在Movidius 神经元计算棒之上开发各自的应用提供了良好的软件支持

    NCSDK目前提供了CPython两种语言的编程的接口,通常应用开发者通过调用这些接口就能操作NCS做深度学习方面的图像预测工作然而,在机器人研究领域,人们广泛采用ROS框架,这一框架下的各个应用通常采用消息(message)和话题(topic)的方式进行通信。在这种特殊情况下,机器人应用开发者不得不对NCSDK做进一步的封装才能使其无缝工作在ROS系统中。针对NCSDKROS系统的衔接问题,我们提出并实现了一种基于ROS系统的对NCSDK的封装。该项目目前已经在github上面开源(github 地址)

     

    项目介绍

    1. 软件架构设计

     

    本项目主体由一个ROS发布节点和一个ROS服务节点组成以适应不同的应用场景ROS发布节点用于处理来自相机的视频流数据预测结果以(message)的形式发布到相应的话题(topic)中,供上层应用调用。ROS服务节点用于处理单张图片数据,预测结果直接返回给上层消费服务的节点做进一步处理。为了更好的演示这两个节点的使用方法,我们还开发了多个客户端节点,最终处理结果会以图像的形式展现出来。

    目前项目可以支持物体分类和物体识别两种应用。物体分类可以采用不同的CNN模型,例如,GoogleNet, AlexNetSqueezeNet物体识别可以支持TinyYolo, mobilenet-SSD等。

     

    Figure 1. ROS NCS structure

     

    2. 运行条件

    · 运行Ubuntu16.04x86_64计算机

    · ROS Kinetic

    · Movidius神经元计算棒(NCS)

    · NCSDKNCAppZoo

    · RGB相机

    具体环境配置可以参考这里

     

    3. 编译与安装

    下载源码到本地ROS工作区,切换到最新发布,编译、安装。

    复制CNN标签文件到指定目录

     

     

    4. 运行演示程序

    目前本项目可以支持一般的USB cameraIntel RealSense camera也允许用户根据需要配置不同的相机以下以一般USB CameraRealSense D400系列为例进行说明其他使用方式请参考文档

    · 物体分类

    视频流处理

    在一个终端启动视频流处理节点:

     

                   在另一个终端启动demo节点显示分类结果:

     

     

                 静态图像处理

               在一个终端启动图像处理节点

     

               在另一个终端启动demo节点显示分类结果,例如:

     

    ROS客户端软件的输出效果如下图所示.

     

    · 物体识别 (不仅给出物品分类,还给出物体所在图像中的二维坐标)

    视频流处理

    在一个终端启动视频流处理节点

     

    在另一个终端启动demo节点显示物体识别结果

     

     

    静态图像处理

    在一个终端启动图像处理节点

     

    在另一个终端启动demo节点显示物体识别结果,例如:

     

     

     

    ROS客户端软件的输出效果如下图所示.

     

     

    应用领域

    本项目提供的物体分类和物体检测的能力可以运用于多种机器人使用场景,例如:

    1. 3D物体识别与追踪

    基于已经识别出的2D物体信息,结合深度传感器采集到的深度信息,可以定位到物体在三维空间当中的位置,从而对物体进行3D识别与跟踪。

    2. 机器人智能避障

    传统的机器人避障对于障碍物不加以区分采取相同的策略。而基于物体识别的避障,能够根据识别出的物体信息通过指定不同的策略来应对不断变化的场景使机器人避障更加智能

    3. 基于语义的同步定位与建图(SLAM)

    通过将识别出的物体标注在SLAM得到的地图上可以极好地提高地图的可读性

     

    展望

    本项目目前开发到v0.5.0版本,基于Movidius NCSDK 的不断演进,本产品在不断迭代开发当中。一方面,由于ROS2相对ROS具有更好的安全性和实时性,我们计划移植项目到ROS2中。另一方面,深度学习正经历着快速发展,所以我们希望能支持更多的CNN模型以适应不同的机器人使用场景的需要。

     

    只要你关注机器人,你就无法错过睿慕课
    声明:凡资讯来源注明为其他媒体来源的信息,均为转载自其他媒体,并不代表本网站赞同其观点,也不代表本网站对其真实性负责。您若对该文章内容有任何疑问或质疑,请立即与中国机器人网(www.robot-china.com)联系,本网站将迅速给您回应并做处理。
    电话:021-39553798-8007
    [打印文本] [ ]
    
    全部评论(0
    TOP Bookmark