机器人

机器人 > 学习园地 > 学习园地 > 如何借助全可编程SoC打造视觉导向的机器人和无人机

如何借助全可编程SoC打造视觉导向的机器人和无人机

来源:机器人网 | 发表日期:2017-12-29
简介:嵌入式视觉可划分为两个高级类别;感知环境和采取行动。视觉导向的机器人和无人机属于后面的采取行动类。

在民用领域,目前无人机是商业、医疗、农业、广播和执法应用中最热门的话题之一。对许多这样的应用,无人机可提供显著的优势。在广播和执法领域,无人机能够以低得多的成本提供之前需要直升机才能提供的能力。无人机还能执行预订服务,例如,即将推出的AmazonPrime(亚马逊贵宾会员)交货服务,或者如乌干达偏远地区的医疗产品交货服务。在农业应用中,无人机能使用高光谱成像来判断作物的健康状况。而这些应用,只不过是目前已经在使用或正在考虑使用无人机技术的广泛应用的冰山一角。

如何借助全可编程SoC打造视觉导向的机器人和无人机

嵌入式视觉应用趋势

这些应用,综合起来体现着我们在嵌入式视觉总体环境中观察到的嵌入式视觉当前四大普遍趋势中的三大趋势:

1.边缘(edge)端通过机器学习获得的智能化–智能化嵌入在无人机本身内部,需要从它的摄像头提取信息并根据该信息采取行动,达成自己的目标。

2.开放式高级语言和框架–在无人机中实现智能化需要高级框架和语言。这些中最常用的是开源多平台框架,比如嵌入式环境里的OpenCV、OpenVX,以及在机器学习环境里的TensorFlow和Caffe。

3.多层次的安全性–用于确保无人机不仅能够运行,且不能影响安全性和信息获取。这种方法要求在器件、系统和网络层面实现多层次的安全性。

第四个趋势是嵌入式视觉的普及化。虽然视觉导向的机器人和无人机还不像我们的手机一样普及——我们常在旅行中用手机来翻译标牌等用途,随着新用例被发掘出来,使用视觉导向的机器人和无人机的应用正处于快速发展中。

在架构层面无人机拥有一些关键的子系统,包括实时精准的马达控制系统、提供与无人机双向通信的软件无线电和精确的嵌入式视觉系统。视觉导向的机器人和无人机主要针对大部分电池供电的应用,因此设计高能效解决方案的能力极为重要。

全可编程SoC满足高精度嵌入式视觉系统需求

高精度嵌入式视觉系统提供高帧率,其处理图像和根据图像采取行动的能力要远超过人眼。对许多应用来说,需要使用多个摄像头来形成立体多视觉,以完整掌握无人机周边环境。这也称为传感器融合。虽然许多应用使用多摄像头方法来观察环境,部分应用还会把设计用于观测电磁场频谱不同组成部分的摄像头结合起来使用,例如在超光谱或红外应用中的情况。在使用多个相同类型传感器的时候这一般称为同构,在使用不同传感器技术的时候称为异构。

在算法层面,这种高精度嵌入式视觉系统运行的算法有同步定位与地图构建(SLAM)和稠密光流(DenseOpticalFlow),可以为平台提供增强型感知和避障系统。这些算法同时还与更传统的模式和对象识别算法互相结合。

视觉导向的机器人和无人机因此不仅需要强大的处理能力,还需要有能力进行功耗优化,提供面向未来且具有可扩展性的解决方案。

AllProgrammable(全可编程)Zynq?SoC可针对您面临的问题提供独特的解决方案。Zynq提供的高性能逻辑与双核ARM?A9处理器集成可打造出紧密集成的异构处理单元。该异构处理单元能够在处理器内或可编程逻辑内实现高效率的功能细分。

使用基于ARM的处理系统,可以在边缘开展极为复杂的实时视觉分析。在与可编程逻辑架构结合后,它提供实时检测对象然后使用处理器系统分类对象的能力。分类完成后,视觉导向机器人系统或无人机就能针对检测出的对象类采取适当的行动。

为在边缘实现实时视觉分析,我们运用了机器学习提供的智能化技术。要执行这些算法,我们首先需要模型并提供大型培训数据集,使模型能够进行分析。在极高性能工作站上进行培训,得到的分类器被用于实现方案中。开展这类机器学习有多种不同的方法可供选择,例如,卷积神经网络、深度神经网络或递归神经网络。

当我们在边缘实现这些模型时,我们不需要与培训相同水平的性能。可以使用整数或浮点数学,两者都能方便地实现在AllProgrammableSoC中。

全可编程SoC面向嵌入式视觉的独特优势

SoC内的可编程逻辑架构本身具有可重编程性,这意味着该器件能支持任意连接。同时处理系统内的多路复用IO(MIO)提供通过多种常用协议(从SPI、I2C和串行到千兆以太网、CAN和USB)连接的能力,拥有极为灵活的从该设备输入/输出数据的方式。

对使用的图像传感器来说,可编程逻辑架构还能够支持最适合于目前应用的特定传感器。与限制传感器接口和图像处理流水线的一些标准解决方案不同,这种高度的灵活性能够打造出面向未来的设计方案。目前它可以先实例化一个接口,然后随着新标准的出现,重新编程已经部署的系统以支持新标准。可编程逻辑的灵活性还体现在能从一个标准转换到另一个标准。

在同构和异构传感器融合方面,这个最大的SoC产品系列提供充足的可编程逻辑架构,能实现20个以上的视觉通道并让每一个通道并行运行。因为这些通道实现在可编程逻辑架构内,设计工程人员不受定义的图像处理路径制约,相反他们有能力为目前的应用实现所需的特定图像处理流水线。

就生成图像处理流水线而言,和普通的想法不同的是我们不必使用HDL重新生成一切。在标准Vivado?IP库内提供了一些图像处理内核,使用AXIStreaming接口就能够连接。使用AXIStreaming接口便于把灵活、可扩展的图像处理流水线创建成标准接口,用在所有的IP模块上。这种标准化能缩短初始开发时间,便于随着产品规划图的延伸更容易地升级和复用。

当然许多图像处理算法相当复杂,需要先在OpenCV或MATLAB等应用中建模。OpenCV能与Vivado?高层次综合视频库结合,即OpenCV库的可综合版本,极为简便地为我们的流水线实现图像处理算法。随后这些算法能拉回到Vivado内的图像处理流水线中,缩短开发和验证时间。

另外,还可以实现基于MathWorksMATLAB流程的模型设计流程。它能够先在模型层面定义整个图像处理流水线,然后在定义底层的代码。不过大多数现代应用都必须考虑安全性,以防范对系统、系统数据的无授权改动或访问,或是防范恶意黑客攻击。开发安全设计必须从系统层面自上而下考虑。不过使用AllProgrammableSoC能提供一系列器件级和系统级安全功能,让实现工作变得简便易行。ZynqSoC能够对导向与配置流程进行加密和认证。也可使用TrustZone技术创建正交环境,限制软件借助管理程序访问底层硬件。同时,内置的XADC能用于监测器件电压和温度以及外部参数,提供防篡改方法。还有一些功能能实现在设计中,进一步增强安全性。

全可编程SoC能实现多个并行图像处理流水线以及同构/异构传感器融合,然后实时执行视觉分析和决策,而且提供对电池供电系统非常关键的极高效的单位功耗性能。借助内在的灵活性,AllProgrammableSoC能提供真正的差异化因素,值得在设计中考虑使用,尤其是在需要考虑单位功耗像素数量的时候。

单芯片全可编程SoC实现的智能系统

随着视觉导向机器人和无人机应用的快速发展,视觉导向的机器人和无人机本身也正在飞速发展。要开发出拥有理想单位功耗性能的高精度视觉系统,最好是使用全可编程SoC。全可编程SoC能实现大量并行处理链,在边缘完成传感器融合和实时分析,同时提供高能效、高灵活度和高安全性的系统。赛灵思全可编程SoC可以在单个器件中实现处理系统与可编程逻辑的强大组合,支持硬件加速计算。

在这些应用中通常实现的算法有多种,最常见的三种是:

●环视系统–这些系统用于生成车辆周边环境的三维可视化,实现对环境的进一步了解。典型的环视系统使用球面摄像头。环视往往用于需要同步定位与地图构建(SLAM)和光流的应用中。

●全景摄像头–这些摄像头为周边环境提供360度视野,用于监控应用和车辆可视化。

●异构传感器融合–融合来自电磁频谱不同组成部分的图像,例如红外成像,以增强低光/夜视性能。

实现这些算法会带来几个必须解决的共同挑战,例如:透镜校正、消除透镜失真、视角转换、使用并行表面进行视频纹理填充。

另一个是如何呈现最终图像。这就带来了多通道处理和多通道同步的难题,但这是保证所有摄像头都显示相同帧所需要的。当然多通道处理和同步问题并不只局限于视觉导向的的机器人和无人机应用,这是许多嵌入式视觉应用的通病。视觉导向的机器人和无人机也是检测和分类对象,实现自动和半自动操作所需要的。

全可编程SoC提供的IP

在工程项目中实现这些复杂的图像处理算法堪称一项壮举。它需要具有专家级技能水平的工程师正确地在SoC内实现算法。这些工程师能够针对目标架构开发和优化特定问题。取得这样的技能需要企业聘用一个长期工程师或分包工程师。除了需要取得专家级技能,由于需要全新开发这些功能,还会延长产品上市时间。

使用专业提供商开发的IP,无需寻找专家级工程师,同时还能够缩短开发时间,从而加速产品上市进程。它还能够让开发企业集中精力实现产品增值,确保嵌入式视觉产品在市场上占据有力地位。

使用现有的、基于成熟技术的IP模块还降低了项目的总体风险。在项目上使用商用IP核,还能与辅助合同一起提供,让内核能无缝集成到您的应用中。有数个IP模块作为VivadoDesignSuite标配提供,其它用于嵌入式解决方案的高级商用IP由多家第三方供应商提供。

其中一个这样的图像处理库组合就是Xylon在他们的LogicBRICKSIP库中提供的。该库专门为在VivadoDesignSuite中使用进行了优化。一旦这些IP模块运用到Vivado设计中,它们就能够根据应用的要求加以定制。在logicBRICKSIP库内有数个对开发视觉导向的的机器人和无人机应用有重要意义的IP模块。

在嵌入式视觉应用中往往使用基于梯度方向直方图(HOG)分类器来检测和跟踪对象。HOG分类器使用属于机器学习一部分的支持向量机(SVM)。在logicBRICK库内有一个以LogiHOG形式提供的HOG分类器,能够检测多达四个不同的SVM分类器,从而并行检测多个对象。这些SVM经训练和更新后能适应天气和灯光等多种不同条件。

LogicBRICKS库中有多种其他常用的IP核,可用于简化开发工作。另外还有几种图像信号处理流水线可供设计人员实现在自己的设计中。这些图像处理内核提供完整解决方案,支持创建高达4K2KP60的流水线。这些流水线在SoC内与摄像头界面接口,因此能够支持多种不同的摄像头技术。

开发流程遵循传统SoC开发,根据运行要求配置SoC。LogicBRICKS库中的IP核随后插入到可编程逻辑架构中,以构成具备所需功能的图像处理流水线。然后用运行在ARM?A9内核上的应用软件提供的API调用按要求实时地精调算法。

许多应用使用的是高动态范围摄像头。动态范围代表的是传感器捕获拥有宽范照度强度的图像的能力,一般使用dB或比率来表达。这意味着同一幅图像中可以同时有高照度区域和黑暗区域。通过增强图像的照度和图像局部区域的亮度,logiHDR内核提供与这些摄像头接口并从图像中提取最大细节的能力。

借助SDSoC开发工具推动加速系统设计

在使用免费或商用IP实现大部分图像处理流水线后,要让应用功能完整,还有需要实现的其余功能。使用SoC就能在处理器中或是在可编程逻辑中完成这一步。使用SDSoC?开发工具,我们能无缝地在这两者间移植功能,加快首先用高级语言开发的应用的设计速度。

要发挥SDSoC的功能,我们可以使用IP核定义一个包含底层图像处理流水线的新平台。SDSoC随后就能够使用可用的逻辑和互联资源加速设计。在SDSoC内有多个库可供设计人员开发能在可编程逻辑内加速的应用。具体到图像处理,主要有两个支持HLS的库:

●HLS_video–该库提供嵌入式视觉功能和数据结构。这些元素可综合在一起。

●HLS_OpenCV–该库提供预先编译的OpenCV功能,以及与IP模块接口所需的专门支持功能。该库目的是供测试台使用,因此不可综合。

许多算法将使用OpenCV等开源图像处理框架开发。因此,在使用SDSoC开发以加速为目的的系统时,设计人员希望使用熟悉的框架。这就是HLS_OpenCV库配合SDSoC开发工具发挥作用的地方。它提供与加速功能接口所需的功能。

OpenCV组元中最基本的是cv::mat类,用于定义以X轴和Y轴表示的图像大小以及像素信息。例如每个像素内的位数、有符号还是无符号、多少个通道构成一个像素。这个类是我们使用OpenCV时如何存储和操作图像的基础。

在HLS库中有一个类似的结构,即hls::mat。鉴于HLS流是创建图像处理流水线的标准接口,该库还提供一些让我们能把hls::mat类转化为HLS流或把HLS流转化为hls::mat类的功能。cv::mat类和hls::mat类之间的主要区别在于hls::mat类被定义为适用可编程逻辑架构的像素流,这与属于内存映射的cv::mat类不同。流实现和内存映射实现之间的这种差别意味着我们使用hls::mat类时不必随即访问像素。

这样就能够使用处理器内的双ARMA9内核完成应用的初步开发,确保算法的功能。在需要该功能时,可编程逻辑中的算法就能被加速。设计人员可使用追踪和AXI性能监测等SDSoC功能优化加速性能。

视觉导向的的机器人和无人机技术在开发嵌入式视觉算法的过程中面临一系列的难题,但这些算法可帮助视觉导向的的机器人和无人机了解所处环境并根据得到的信息做出决策。为协助这些图像处理系统的开发工作,设计人员可使用IP核提供的功能,并运用SDSoC等系统级开发工具,生成所需的最终硬件加速功能。

相关新闻阅读:

Robugtix T8X 仿生蜘蛛机器人