一、工业相机编程模型和流程
不同的工业相机提供不同的编程接口(SDK),尽管不同接口不同相机间编程接口各不相同,他们实际的API结构和编程模型很相似,了解了这些再对工业相机编程就很简单了。
DMA技术:
DMA是一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为"DMA控制器"的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。
对于工业相机来说,当CMOS或CCD芯片曝光然后将数据转到相机缓存后,这时候DMA会负责将缓存中数据保存到硬盘上指定位置,正好满足相机高速大数据的传输。一般都会使用DMA来完成实时的数据采集和保存。
多数时候,DMA控制器存在各种接口的图像采集卡中,包括1394/GigE/USB/Camera Link等,这些采集卡有自己的时间控制单元完成和相机曝光的同步,并控制DMA的存取行为。
智能相机并不是一台简单的相机,而是一种高度集成化的微小型机器视觉系统。它将图像的采集、处理与通信功能集成于单一相机内,从而提供了具有多功能、模块化、高可靠性、易于实现的机器视觉解决方案。同时,由于应用了的DSP、FPGA及大容量存储技术,其智能化程度不断提高,可满足多种机器视觉的应用需求。
3.中断响应操作
当相机一帧采集完成后,自动跳转进入中断回调函数,这里分了两种中断回调函数。
种为简单的取Buffer->处理->放回。
第二种结合Windows的消息队列,在此处再给一个“处理队列”,给处理一个缓冲时间。
这里的处理包括常见的图像处理、计算和显示及RawData拼装为图像等用到Buffer的地方。
前面也说过,常用的是中断响应处理,除此之外,自己去查询Buffer填充状态并作相关同步操作在某些场合也会用到,这个请查询不同相机SDK给出的同步方案。
差不多所有的工业相机SDK都是这样的编程模型和流程,AVT 1394相机和Basler Camera Link相机和AVT GigE相机相关代码在笔者网站可下载,还有之前讲的Basler Pylon SDK相机编程,他们基本流程都是一样,恕不详述!
2、疫情之下,医疗机器人临危受命
COVID-19的爆发进一步了“医疗服务机器人”的需求,然而市场上现有大部分服务机器人智能化程度并不高。埃尔森的3D视觉定位系统,赋予机器人“眼睛”和AI的“大脑”,让机器人具有立体的视觉感知能力。
该系统使用Basler工业相机,搭载Sony Pregius IMX174芯片拥有极高的信噪比,实现了机器人对患者特定部位的精准定位,配合AGV和机械手,可穿梭在无人化病房区域内,替代医护人员完成测温、生命体征监护、给药治疗等更多工作,可大幅减轻医护人员工作量,减少医护人员感染风险。
面对未来,Basler China和ALSONTECH(埃尔森智能科技)将继续携手研发更加多样的智能产品,为医疗、物流、汽车、3C、生产制造等行业提供成熟、的机器人3D视觉方案,以的视觉技术理念、行业的产品性能,携手将未来“智能生活”、“智能生产”变成触手可及的现实。