CN115706849B - 相机软件架构、平台和终端设备 - Google Patents
相机软件架构、平台和终端设备 Download PDFInfo
- Publication number
- CN115706849B CN115706849B CN202110897452.4A CN202110897452A CN115706849B CN 115706849 B CN115706849 B CN 115706849B CN 202110897452 A CN202110897452 A CN 202110897452A CN 115706849 B CN115706849 B CN 115706849B
- Authority
- CN
- China
- Prior art keywords
- camera
- ros2
- layer
- software architecture
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004891 communication Methods 0.000 claims abstract description 46
- 230000007246 mechanism Effects 0.000 claims abstract description 42
- 238000004806 packaging method and process Methods 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 claims description 53
- 230000006870 function Effects 0.000 abstract description 18
- 238000005538 encapsulation Methods 0.000 abstract description 14
- 230000003993 interaction Effects 0.000 abstract description 12
- 238000013473 artificial intelligence Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 206010047571 Visual impairment Diseases 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 210000003813 thumb Anatomy 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 241000220317 Rosa Species 0.000 description 1
- LPQOADBMXVRBNX-UHFFFAOYSA-N ac1ldcw0 Chemical compound Cl.C1CN(C)CCN1C1=C(F)C=C2C(=O)C(C(O)=O)=CN3CCSC1=C32 LPQOADBMXVRBNX-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 201000006747 infectious mononucleosis Diseases 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 235000013923 monosodium glutamate Nutrition 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Landscapes
- Telephone Function (AREA)
- Studio Devices (AREA)
Abstract
本公开关于一种相机软件架构、平台和终端设备,其中,相机软件架构包括:相机驱动层、相机底层核心库、libargus相机软件框架层、相机应用层、以及ROS2系统封装层;其中,libargus相机软件框架层设置有多个API接口,用于根据相机应用层的API接口调用请求调用相机底层核心库中的服务;相机底层核心库,用于根据所调用的服务,调用相机驱动层中的相应驱动程序,以驱动摄像头工作并获取摄像头拍摄得到的图像,将图像通过libargus相机软件框架层返回给相机应用层;ROS2系统封装层,用于对相机应用层的图像进行封装,得到ROS2系统格式的图像数据,通过ROS2通信机制发送ROS2系统格式的图像数据。相机软件架构能够灵活支持多种高级拍摄功能,且实现与其它模块之间的灵活、高效的交互。
Description
技术领域
本公开涉及相机技术领域,尤其涉及一种相机软件架构、平台和终端设备。
背景技术
目前的Jetson边缘智能计算平台的相机,通常使用USB(Universal Serial Bus,通用串行总线)接口的摄像头,并通过GStreamer多媒体框架来读取数据帧,其中,GStreamer是用于构建流媒体应用的开源多媒体框架,而由于GStreamer多媒体框架提供的API(Application Programming Interface,应用程序接口)数量少,因此无法灵活实现相机的高级的拍照功能和录像功能,比如HDR(High Dynamic Range Imaging,高动态范围成像)拍照等,且这种架构的相机无法与其它模块实现高效交互。
发明内容
本公开旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本公开提出了如下技术方案:
本公开第一方面实施例提出了一种相机软件架构,包括:相机驱动层、相机底层核心库、libargus相机软件框架层、相机应用层、以及第2版机器人操作系统ROS2系统封装层;其中,所述libargus相机软件框架层设置有多个API接口,用于根据所述相机应用层的API接口调用请求调用所述相机底层核心库中的服务;所述相机底层核心库,用于根据所调用的服务,调用所述相机驱动层中的相应驱动程序,以驱动摄像头工作并获取摄像头拍摄得到的图像,将所述图像通过所述libargus相机软件框架层返回给所述相机应用层;所述ROS2系统封装层,用于对所述相机应用层的图像进行封装,得到ROS2系统格式的图像数据,通过ROS2通信机制发送ROS2系统格式的所述图像数据。
在本公开的一个实施例中,所述相机驱动层,用于驱动移动行业处理器接口MIPI摄像头。
在本公开的一个实施例中,所述相机软件架构,通过ROS2通信机制与图像处理模块连接,向所述图像处理模块提供ROS2系统格式的所述图像数据。
在本公开的一个实施例中,所述图像处理模块包括以下模块中的至少一个:人脸识别模块、人体识别模块和手势识别模块。
在本公开的一个实施例中,所述相机驱动层中包括:所述相机底层核心库中各个服务对应的驱动程序。
本公开提供的相机软件架构,由于其中的libargus相机软件框架层提供了许多API接口,相机应用层可以根据需要调用的不同服务,通过不同的API接口来灵活调用相机底层核心库中的相应服务,以灵活调用相机驱动层中相应的驱动程序,从而驱动摄像头工作来实现相应的服务,因此本申请提供的相机软件架构能够灵活支持多种高级拍摄功能,比如HDR拍照等,并且,由于ROS2通信机制可以实现数据的灵活、高效的分发,从而通过利用ROS2系统封装层将相机应用层的图像封装成ROS2系统格式的图像数据后,基于ROS2通信机制发送ROS2系统格式的图像数据,可以实现将ROS2系统格式的图像数据灵活、高效的发送至其它应用或模块,从而实现相机软件框架与其它应用或模块之间的灵活、高效的交互。
本公开第二方面实施例提出了一种平台,所述平台上部署有第一方面实施例所述的相机软件架构。
本公开提供的平台上部署的相机软件架构,由于其中的libargus相机软件框架层提供了许多API接口,相机应用层可以根据需要调用的不同服务,通过不同的API接口来灵活调用相机底层核心库中的相应服务,以灵活调用相机驱动层中相应的驱动程序,从而驱动摄像头工作来实现相应的服务,因此本申请提供的平台上部署的相机软件架构能够灵活支持多种高级拍摄功能,比如HDR拍照等,并且,由于ROS2通信机制可以实现数据的灵活、高效的分发,从而通过利用ROS2系统封装层将相机应用层的图像封装成ROS2系统格式的图像数据后,基于ROS2通信机制发送ROS2系统格式的图像数据,可以实现将ROS2系统格式的图像数据灵活、高效的发送至其它应用或模块,从而实现平台上部署的相机软件框架与其它应用或模块之间的灵活、高效的交互。
本公开第三方面实施例提出了一种终端设备,所述终端设备上设置有平台,所述平台上部署有第一方面实施例所述的相机软件架构。
在本公开的一个实施例中,所述终端设备为足式机器人。
在本公开的一个实施例中,所述终端设备上还设置有MIPI摄像头;所述MIPI摄像头与所述相机软件架构连接,用于向所述相机软件架构提供拍摄得到的图像。
在本公开的一个实施例中,所述终端设备上还设置有图像处理模块;所述图像处理模块与所述相机软件架构连接,用于对所述相机软件架构提供的ROS2格式的图像数据进行图像处理。
在本公开的一个实施例中,所述图像处理模块包括以下模块中的至少一个:人脸识别模块、人体识别模块和手势识别模块;所述人脸识别模块和所述人体识别模块,用于对所述MIPI摄像头的拍摄对象进行识别,以结合识别结果对所述拍摄对象进行跟随;所述手势识别模块,用于识别所述拍摄对象的指令,以执行所述指令。
本公开提供的终端设备的平台上部署的相机软件架构,由于其中的libargus相机软件框架层提供了许多API接口,相机应用层可以根据需要调用的不同服务,通过不同的API接口来灵活调用相机底层核心库中的相应服务,以灵活调用相机驱动层中相应的驱动程序,从而驱动摄像头工作来实现相应的服务,因此本申请提供的终端设备的平台上部署的相机软件架构能够灵活支持多种高级拍摄功能,比如HDR拍照等,并且,由于ROS2通信机制可以实现数据的灵活、高效的分发,从而通过利用ROS2系统封装层将相机应用层的图像封装成ROS2系统格式的图像数据后,基于ROS2通信机制发送ROS2系统格式的图像数据,可以实现将ROS2系统格式的图像数据灵活、高效的发送至其它应用或模块,从而实现终端设备的平台上部署的相机软件框架与其它应用或模块之间的灵活、高效的交互。
本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开一实施例的相机软件架构的架构图;
图2是根据本公开另一实施例的相机软件架构的架构图;
图3是根据本公开一实施例的平台的结构示意图;
图4是根据本公开一实施例的终端设备的结构示意图;
图5是根据本公开另一实施例的终端设备的结构示意图;
图6是根据本公开一实施例的各ROS2节点的交互示意图。
具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
相关技术中,Jetson边缘智能计算平台的相机,通常使用USB接口的摄像头,并通过GStreamer多媒体框架来读取数据帧,其中,GStreamer是用于构建流媒体应用的开源多媒体框架,而由于GStreamer多媒体框架提供的API(Application ProgrammingInterface,应用程序接口)数量少,因此无法灵活实现相机的高级的拍照功能和录像功能,比如HDR(High Dynamic Range Imaging,高动态范围成像)拍照等,且这种架构的相机无法与其它模块实现高效交互。
本申请为解决上述技术问题,提出一种相机软件架构、平台和终端设备。其中相机软件架构包括相机驱动层、相机底层核心库、libargus相机软件框架层、相机应用层、以及第2版机器人操作系统ROS2系统封装层。其中,libargus相机软件框架层设置有多个API接口,用于根据相机应用层的API接口调用请求调用相机底层核心库中的服务,相机底层核心库,用于根据所调用的服务,调用相机驱动层中的相应驱动程序,以驱动摄像头工作并获取摄像头拍摄得到的图像,将图像通过libargus相机软件框架层返回给相机应用层,ROS2系统封装层,用于对相机应用层的图像进行封装,得到ROS2系统格式的图像数据,通过ROS2通信机制发送ROS2系统格式的图像数据。本申请提供的相机软件架构,能够灵活支持多种高级拍摄功能,并且,可以实现与其它模块之间的灵活、高效的交互。
下面参考附图描述本公开实施例的相机软件架构、平台和终端设备。
图1是根据本公开实施例的相机软件架构的架构图。
如图1所示,该相机软件架构包括:相机驱动层11、相机底层核心库12、libargus相机软件框架层13、相机应用层14、以及ROS2系统封装层15。
其中,libargus相机软件框架层13设置有多个API接口,用于根据相机应用层14的API接口调用请求调用相机底层核心库12中的服务;
相机底层核心库12,用于根据所调用的服务,调用相机驱动层11中的相应驱动程序,以驱动摄像头工作并获取摄像头拍摄得到的图像,将图像通过libargus相机软件框架层13返回给相机应用层14;
ROS2系统封装层15,用于对相机应用层14的图像进行封装,得到ROS2系统格式的图像数据,通过ROS2通信机制发送ROS2系统格式的图像数据。
可以理解的是,libargus相机软件框架层13中设置有多个API接口,相机底层核心库12提供了多种服务,比如打开相机、拍照、对焦等服务,而相机驱动层11中包括相机底层核心库12中各个服务对应的驱动程序。相机应用层14可以根据需要调用的不同服务,通过libargus相机软件框架层13中相应的API接口调用相机底层核心库12中的相应的服务,以调用相机驱动层11中相应的驱动程序,从而驱动摄像头工作来实现相应的服务。
具体的,相机应用层14在需要调用相机底层核心库12中的某种服务时,可以向libargus相机软件框架层13中相应的API接口发送调用请求,libargus相机软件框架层13中相应的API接口接收到API接口调用请求后,可以根据API接口调用请求,调用相机底层核心库12中的服务。进一步的,相机底层核心库12可以根据所调用的服务,调用相机驱动层11中相应的驱动程序,以驱动摄像头工作,在摄像头拍摄得到图像后,相机底层核心库12可以获取摄像头拍摄得到的图像,并将图像通过libargus相机软件框架层13返回给相机应用层14。
举例来说,假设用户需要拍摄HDR图像,即相机应用层14需要调用相机底层核心库12中的打开相机、拍照、对焦等服务,此时,相机应用层14可以向libargus相机软件框架层13中与上述服务对应的API接口发送调用请求,libargus相机软件框架层13中与上述服务对应的API接口接收到API接口调用请求后,可以根据API接口调用请求,调用相机底层核心库12中的打开相机、拍照、对焦等服务。进一步的,相机底层核心库12可以根据所调用的服务,调用相机驱动层11中打开相机、拍照、对焦等服务对应的驱动程序,以驱动摄像头工作。在摄像头拍摄得到HDR图像后,相机底层核心库12可以获取摄像头拍摄得到的HDR图像,并将HDR图像通过libargus相机软件框架层13返回给相机应用层14。类似的,在相机应用层14需要调用相机底层核心库12中的其它服务时,可以通过类似方式,通过libargus相机软件框架层13提供的其它API接口,实现相应服务。
由此,基于libargus相机软件框架层提供的多个API接口,相机应用层14可以根据需要调用的不同服务,通过相应的API接口来灵活调用相机底层核心库12中的相应服务,以灵活调用相机驱动层11中相应的驱动程序,从而驱动摄像头工作来实现相应的服务,因此本申请提供的相机软件架构能够灵活支持多种高级拍摄功能,比如HDR拍照等。
另外,ROS2,即Robot Operating System 2(第2版机器人操作系统),是用于机器人开发的一个灵活的开源软件框架,是机器人相关中间件、程序库、工具和常用算法的集合,旨在简化跨各种机器人平台创建复杂、健壮机器人这一艰巨任务,为各行各业的开发人员顺利实施完从产品研究和原型设计再到部署和生产的全过程。
其中,ROS2底层基于DDS(Data Distribution Service,数据分发服务)通信机制,该通信机制采用发布/订阅体系架构,强调以数据为中心,提供丰富的Qos(Quality ofService,服务质量)策略,以保障数据进行实时、高效、灵活的分发,可满足各种分布式实时通信应用需求,通过该通信机制,可以实现以零拷贝的方式传递消息,节省CPU(CentralProcessing Unit,中央处理器)和内存资源,且使得ROS2支持实时通信,比如在对机器人进行控制时,可以提高对机器人控制的时效性和整体机器人的性能。
基于ROS2通信机制可以实现数据的灵活、高效的分发的特点,本申请中可以在相机软件架构中设置基于ROS2通信机制的ROS2系统封装层15,以利用ROS2通信机制,实现相机软件架构10与其它应用或模块之间的灵活、高效的交互。
具体的,ROS2系统封装层15具有数据封装功能,并且可以通过ROS2通信机制,与其它应用或模块之间进行交互。在相机底层核心库12将摄像头拍摄得到的图像通过libargus相机软件框架层13返回给相机应用层14后,ROS2系统封装层15可以对相机应用层14的图像进行封装,得到ROS2系统格式的图像数据,并通过ROS2通信机制向其它应用或模块发送ROS2系统格式的图像数据。
由于ROS2通信机制可以实现数据的灵活、高效的分发,从而通过利用ROS2系统封装层15将相机应用层14的图像封装成ROS2系统格式的图像数据后,基于ROS2通信机制发送ROS2系统格式的图像数据,可以实现将ROS2系统格式的图像数据灵活、高效的发送至其它应用或模块,从而实现相机软件框架10与其它应用或模块之间的灵活、高效的交互。
在示例性实施例中,与相机软件框架10交互的模块可以为图像处理模块。具体的,参考图2,相机软件架构10可以通过ROS2通信机制与图像处理模块20连接,从而相机软件架构10中的系统封装层15在将相机应用层14的图像封装为ROS2系统格式的图像数据后,可以通过ROS2通信机制向图像处理模块20提供ROS2系统格式的图像数据。
在示例性实施例中,图像处理模块20例如可以包括以下模块中的至少一个:人脸识别模块、人体识别模块和手势识别模块。
以图像处理模块20包括人脸识别模块为例,相机软件架构10中的相机底层核心库12可以调用相机驱动层11中的驱动程序,驱动摄像头拍摄得到当前拍摄对象的人脸图像,并将拍摄得到的人脸图像通过libargus相机软件框架层13返回给相机应用层14,ROS2系统封装层15可以对相机应用层14的人脸图像进行封装,得到ROS2系统格式的图像数据,并通过ROS2通信机制将ROS2系统格式的图像数据发送至人脸识别模块,从而人脸识别模块可以对ROS2格式的图像数据进行图像处理,以对摄像头拍摄得到的人脸图像进行人脸识别,以确定当前拍摄对象是否为合法用户。
以图像处理模块20包括人脸识别模块和人体识别模块为例,相机软件架构10中的相机底层核心库12可以调用相机驱动层11中的驱动程序,驱动摄像头拍摄得到当前拍摄对象的人脸图像以及人体图像,并将拍摄得到的人脸图像以及人体图像通过libargus相机软件框架层13返回给相机应用层14,ROS2系统封装层15可以对相机应用层14的人脸图像以及人体图像进行封装,得到ROS2系统格式的图像数据,并通过ROS2通信机制将ROS2系统格式的图像数据发送至人脸识别模块以及人体识别模块,从而人脸识别模块可以对ROS2格式的图像数据进行图像处理,以对摄像头拍摄得到的人脸图像进行人脸识别,人体识别模块可以对摄像头拍摄得到的人体图像进行人体识别,进而可以根据人脸识别结果以及人体识别结果,确定当前拍摄对象是否为跟随对象并确定拍摄对象的行进方向等,以对拍摄对象进行跟随。
以图像处理模块20包括手势识别模块为例,相机软件架构10中的相机底层核心库12可以调用相机驱动层11中的驱动程序,驱动摄像头拍摄得到当前拍摄对象的手势图像,并将拍摄得到的手势图像通过libargus相机软件框架层13返回给相机应用层14,ROS2系统封装层15可以对相机应用层14的图像进行封装,得到ROS2系统格式的图像数据,并通过ROS2通信机制将ROS2系统格式的图像数据发送至手势识别模块,从而手势识别模块可以对摄像头拍摄得到的手势图像进行手势识别,以确定当前拍摄对象的手势信息,比如拍摄对象是握拳还是竖起拇指等,进而可以根据手势信息识别拍摄对象的指令,以执行手势信息对应的指令。
需要说明的是,本申请实施例以图像处理模块20人脸识别模块,或者图像处理模块20包括人脸识别模块和人体识别模块,或者图像处理模块20包括手势识别模块为例进行说明,在实际应用中,图像处理模块20可以包括人脸识别模块、人体识别模块和手势识别模块中的至少一个,且可以根据实际需要设置这些模块的功能,本申请对此不作限制。
在示例性实施例中,相机驱动层11驱动的摄像头可以是MIPI(Mobile IndustryProcessor Interface,移动行业处理器接口)摄像头,也可以是其它类型的摄像头,本申请对此不作限制。
由于MIPI摄像头为高分辨率摄像头,能够拍摄高分辨率的图像,从而通过相机底层核心库12调用相机驱动层11中的驱动程序,可以驱动MIPI摄像头拍摄得到高分辨率的图像,进而将MIPI摄像头拍摄得到的高分辨率的图像通过libargus相机软件框架层13,使得相机应用层14能够获得高分辨率的图像。
在示例性实施例中,可以根据需要将相机软件架构10部署在终端设备设置的平台上。其中,终端设备例如可以为机器人、机器狗等足式机器人,终端设备上设置的平台,可以为jetson边缘智能计算平台,也可以为其它类型的平台,即相机软件架构10可以部署在jetson边缘智能计算平台上,也可以部署在其它类型的平台上,本申请对此不作限制。其中,相机软件架构10部署在终端设备设置的jetson边缘智能计算平台上时,相应的,与相机软件架构10连接的图像处理模块20可以为jetson边缘智能计算平台所在的终端设备上的图像处理模块。
以终端设备为设置有jetson边缘智能计算平台的足式机器人为例,相机软件架构10可以部署在jetson边缘智能计算平台上,且在足式机器人中可以设置与相机软件架构10通过ROS2通信机制连接的图像处理模块20以及与相机软件架构10连接的摄像头。例如在需要对足式机器人进行手势控制时,相机软件架构10中的相机应用层14需要调用相机底层核心库12中的打开相机、拍照、对焦等服务,并向libargus相机软件框架层13中相应的API接口发送调用请求,libargus相机软件框架层13中相应的API接口接收到API接口调用请求后,可以根据API接口调用请求,调用相机底层核心库12中的打开相机、拍照、对焦等服务。进一步的,相机底层核心库12可以根据所调用的服务,调用相机驱动层11中相应的驱动程序,以驱动与相机软件架构10连接的摄像头工作,在摄像头拍摄得到拍摄对象的手势图像后,相机底层核心库12可以获取摄像头拍摄得到的手势图像,并将手势图像通过libargus相机软件框架层13返回给相机应用层14。进一步的,ROS2系统封装层15可以对相机应用层14的手势图像进行封装,得到ROS2系统格式的图像数据,并通过ROS2通信机制将ROS2系统格式的图像数据发送至与相机软件架构10连接的图像处理模块20。进而图像处理模块20可以对摄像头拍摄得到的手势图像进行手势识别,以确定当前拍摄对象的手势信息,比如拍摄对象是握拳还是竖起拇指等,进而可以根据手势信息识别拍摄对象的指令,以执行手势信息对应的指令。
综上,本公开实施例的相机软件架构10,由于其中的libargus相机软件框架层13提供了许多API接口,相机应用层14可以根据需要调用的不同服务,通过不同的API接口来灵活调用相机底层核心库12中的相应服务,以灵活调用相机驱动层11中相应的驱动程序,从而驱动摄像头工作来实现相应的服务,因此本申请提供的相机软件架构能够灵活支持多种高级拍摄功能,比如HDR拍照等,并且,由于ROS2通信机制可以实现数据的灵活、高效的分发,从而通过利用ROS2系统封装层15将相机应用层14的图像封装成ROS2系统格式的图像数据后,基于ROS2通信机制发送ROS2系统格式的图像数据,可以实现将ROS2系统格式的图像数据灵活、高效的发送至其它应用或模块,从而实现相机软件框架10与其它应用或模块之间的灵活、高效的交互。
基于上述实施例,本公开实施例还提出了一种平台。
图3是根据本公开一实施例的平台的结构示意图。
如图3所示,该平台30上部署有如上述实施例所述的相机软件架构10。
其中,平台30,为任意可以部署相机软件架构10的平台,例如平台30可以为jetson边缘智能计算平台,本申请对此不作限制。
其中,需要说明的是,前述对相机软件架构实施例的解释说明也适用于本实施例的平台上部署的相机软件架构,此处不再赘述。
本公开实施例的平台上部署的相机软件架构,由于其中的libargus相机软件框架层提供了许多API接口,相机应用层可以根据需要调用的不同服务,通过不同的API接口来灵活调用相机底层核心库中的相应服务,以灵活调用相机驱动层中相应的驱动程序,从而驱动摄像头工作来实现相应的服务,因此本申请提供的平台上部署的相机软件架构能够灵活支持多种高级拍摄功能,比如HDR拍照等,并且,由于ROS2通信机制可以实现数据的灵活、高效的分发,从而通过利用ROS2系统封装层将相机应用层的图像封装成ROS2系统格式的图像数据后,基于ROS2通信机制发送ROS2系统格式的图像数据,可以实现将ROS2系统格式的图像数据灵活、高效的发送至其它应用或模块,从而实现平台上部署的相机软件框架与其它应用或模块之间的灵活、高效的交互。
基于上述实施例,本公开实施例还提出了一种终端设备。
图4是根据本公开一实施例的终端设备的结构示意图。
如图4所示,终端设备40上设置有平台30,平台30上部署有如上述实施例所述的相机软件架构10。
在示例性实施例中,终端设备40例如可以为机器人、机器狗等任意能够设置平台的设备,比如足式机器人,本申请对此不作限制。
其中,需要说明的是,前述对相机软件架构实施例的解释说明也适用于本实施例的终端设备的平台上部署的相机软件架构,此处不再赘述。
在示例性实施例中,参考图5,终端设备40上还可以设置有MIPI摄像头50,MIPI摄像头50与相机软件架构10连接,用于向相机软件架构10提供拍摄得到的图像。
具体的,MIPI摄像头50向相机软件架构10提供拍摄得到的图像的过程可以为:相机软件架构10中的相机应用层14在需要调用相机底层核心库12中的某种服务时,向libargus相机软件框架层13中相应的API接口发送调用请求,libargus相机软件框架层13中相应的API接口接收到API接口调用请求后,根据API接口调用请求,调用相机底层核心库12中的服务,进而相机底层核心库12根据所调用的服务,调用相机驱动层11中相应的驱动程序,以驱动与软件架构10连接的MIPI摄像头50工作,在MIPI摄像头50拍摄得到图像后,相机底层核心库12即可获取MIPI摄像头50拍摄得到的图像,并将图像通过libargus相机软件框架层13返回给相机应用层14。
在示例性实施例中,参考图5,终端设备40上还可以设置有图像处理模块20。其中,图像处理模块20与相机软件架构10连接,从而在相机软件架构10中的系统封装层15将相机应用层14的图像封装为ROS2系统格式的图像数据,并通过ROS2通信机制向图像处理模块20提供ROS2系统格式的图像数据后,图像处理模块20可以对相机软件架构10提供的ROS2格式的图像数据进行图像处理。
在示例性实施例中,图像处理模块20可以包括以下模块中的至少一个:人脸识别模块、人体识别模块和手势识别模块。其中,人脸识别模块和人体识别模块,用于对MIPI摄像头50的拍摄对象进行识别,以结合识别结果对拍摄对象进行跟随;手势识别模块,用于识别拍摄对象的指令,以执行指令。
具体的,以终端设备40为设置有jetson边缘智能计算平台的足式机器人,图像处理模块20包括人脸识别模块和人体识别模块为例,相机软件架构10可以部署在jetson边缘智能计算平台上,且在足式机器人中可以设置与相机软件架构10通过ROS2通信机制连接的图像处理模块20以及与相机软件架构10连接的MIPI摄像头50。
例如在需要足式机器人跟随人体行进时,相机软件架构10中的相机应用层14需要调用相机底层核心库12中的打开相机、拍照、对焦等服务,并向libargus相机软件框架层13中相应的API接口发送调用请求,libargus相机软件框架层13中相应的API接口接收到API接口调用请求后,可以根据API接口调用请求,调用相机底层核心库12中的打开相机、拍照、对焦等服务。进一步的,相机软件架构10中的相机底层核心库12可以根据所调用的服务,调用相机驱动层11中相应的驱动程序,驱动与相机软件架构10连接的MIPI摄像头50拍摄得到当前拍摄对象的人脸图像以及人体图像,并将拍摄得到的人脸图像以及人体图像通过libargus相机软件框架层13返回给相机应用层14。进一步的,ROS2系统封装层15可以对相机应用层14的人脸图像以及人体图像进行封装,得到ROS2系统格式的图像数据,并通过ROS2通信机制将ROS2系统格式的图像数据发送至人脸识别模块以及人体识别模块。进而人脸识别模块可以对ROS2格式的图像数据进行图像处理,以对MIPI摄像头50拍摄得到的人脸图像进行人脸识别,人体识别模块可以对MIPI摄像头50拍摄得到的人体图像进行人体识别,进而根据人脸识别结果以及人体识别结果,确定当前拍摄对象是否为跟随对象并确定拍摄对象的行进方向等,以对拍摄对象进行跟随。
以终端设备40为设置有jetson边缘智能计算平台的足式机器人,图像处理模块20包括手势识别模块为例,相机软件架构10可以部署在jetson边缘智能计算平台上,且在足式机器人中可以设置与相机软件架构10通过ROS2通信机制连接的图像处理模块20以及与相机软件架构10连接的MIPI摄像头。
例如在需要对足式机器人进行手势控制时,相机软件架构10中的相机应用层14需要调用相机底层核心库12中的打开相机、拍照、对焦等服务,并向libargus相机软件框架层13中相应的API接口发送调用请求,libargus相机软件框架层13中相应的API接口接收到API接口调用请求后,可以根据API接口调用请求,调用相机底层核心库12中的打开相机、拍照、对焦等服务。进一步的,相机软件架构10中的相机底层核心库12可以根据所调用的服务,调用相机驱动层11中的驱动程序,驱动与相机软件架构10连接的MIPI摄像头50拍摄得到当前拍摄对象的手势图像,并将拍摄得到的手势图像通过libargus相机软件框架层13返回给相机应用层14。ROS2系统封装层15可以对相机应用层14的手势图像进行封装,得到ROS2系统格式的图像数据,并通过ROS2通信机制将ROS2系统格式的图像数据发送至手势识别模块,从而手势识别模块可以对MIPI摄像头50拍摄得到的手势图像进行手势识别,以确定当前拍摄对象的手势信息,比如拍摄对象是握拳还是竖起拇指等,进而可以根据手势信息识别拍摄对象的指令,以执行手势信息对应的指令。
需要说明的是,本申请实施例以图像处理模块20人脸识别模块,或者图像处理模块20包括人脸识别模块和人体识别模块,或者图像处理模块20包括手势识别模块为例进行说明,在实际应用中,图像处理模块20可以包括人脸识别模块、人体识别模块和手势识别模块中的至少一个,且可以根据实际需要设置这些模块的功能,本申请对此不作限制。
本公开实施例的终端设备的平台上部署的相机软件架构,由于其中的libargus相机软件框架层提供了许多API接口,相机应用层可以根据需要调用的不同服务,通过不同的API接口来灵活调用相机底层核心库中的相应服务,以灵活调用相机驱动层中相应的驱动程序,从而驱动摄像头工作来实现相应的服务,因此本申请提供的终端设备的平台上部署的相机软件架构能够灵活支持多种高级拍摄功能,比如HDR拍照等,并且,由于ROS2通信机制可以实现数据的灵活、高效的分发,从而通过利用ROS2系统封装层将相机应用层的图像封装成ROS2系统格式的图像数据后,基于ROS2通信机制发送ROS2系统格式的图像数据,可以实现将ROS2系统格式的图像数据灵活、高效的发送至其它应用或模块,从而实现终端设备的平台上部署的相机软件框架与其它应用或模块之间的灵活、高效的交互。
可以理解的是,本公开实施例中的相机软件架构10基于libargus库和ROS2框架开发,可以支持高分辨率自定义的MIPI摄像头,且灵活支持降噪、视频防抖、各种AI(Artificial Intelligence,人工智能)算法等高级功能。
在示例性实施例中,相机软件架构10可以作为ROS2通信系统中的一个ROS2 Node(NOS2节点),与MIPI摄像头连接,在获取MIPI摄像头拍摄得到的图像后,可以将图像封装为ROS2系统格式的图像数据,通过ROS2通信机制向其它ROS2节点发送ROS2系统格式的图像数据。其中,上述实施例中的图像处理模块20即可以理解为ROS2通信系统中的一个ROS2节点。另外,在实际应用中,相机软件架构10还可以向其它类型的ROS2节点发送ROS2系统格式的图像数据。
下面结合图6,对相机软件架构10作为ROS2节点与其它ROS2节点的交互进行说明。其中,图6中椭圆形框表示ROS2节点,长方框表示ROS2 MSG(ROS2消息)。需要说明的是,图6中未示出相机软件架构10所在节点与主摄像头节点51、双目摄像头节点52以及其它节点的连接关系。
参考图6,相机软件架构10作为一个ROS2节点(图6中未示出),可以与主摄像头节点51连接,其中,主摄像头节点51可以理解为上述实施例中的相机驱动层11驱动的MIPI摄像头。主摄像头节点51负责主摄像头的数据采集和ISP(Image Signal Processor,图像信号处理器)流水线处理,输出经过视频防抖和视频编码处理后的RTSP(Real TimeStreaming Protocol,实时流传输协议)图像消息,以及经过降噪处理的RGB图像消息。
类似的,相机软件架构10作为一个ROS2节点(图6中未示出),可以与双目摄像头节点52连接,其中,双目摄像头节点52可以理解为上述实施例中的相机驱动层11驱动的MIPI摄像头。其中,双目摄像头节点52可以由两颗支持MONO和RAW格式的摄像头组成,主要负责双目摄像头的数据采集、ISP图像处理或深度计算等后处理,输出左摄图像消息、右摄图像消息或深度图像消息。
图像处理模块20中包括的人脸识别模块、人体识别模块和手势识别模块,可以分别作为一个ROS2节点,即图6中的AI人脸识别节点21、AI身体识别节点22和AI手势识别节点23。
其中,AI人脸识别节点21,可以订阅及接收主摄像头节点51输出的RGB图像消息,通过TRT(TensorRT,一个C++推理框架)加速的人脸识别神经网络算法,识别人脸信息,并输出识别到的人脸信息。
AI身体识别节点22,可以订阅及接收主摄像头节点51输出的RGB图像消息,通过TRT加速的身体识别神经网络算法,识别身体信息,并输出识别到的身体信息。
AI手势识别节点23,可以订阅及接收主摄像头节点51输出的RGB图像消息,通过TRT加速的手势识别神经网络算法,识别手势信息,并输出识别到的手势信息。
主显示节点70,可以订阅及接收主摄像头节点51输出的RGB图像消息、AI人脸识别节点21输出的人脸信息、AI身体识别节点22输出的身体信息以及AI手势识别节点23输出的手势信息,在显示器上同时显示主摄像头的画面、人脸信息、身体信息以及手势信息等信息。该主显示节点70通常主要用于调试阶段。
另外,相机软件架构10可以与遥控器端的APP(Application,应用程序)显示节点,简称遥控器显示节点60交互,遥控器显示节点60,可以订阅及接收主摄像头节点141输出的RTSP图像消息,在遥控器的显示器上显示主摄像头的画面。
相机软件架构10还可以与SLAM(Simultaneous Localization and Mapping,定位和建图)节点80交互,SLAM节点80可以订阅及接收双目摄像头节点142输出的左图像消息、右图像消息及深度图像消息,通过SLAM算法框架,进行定位和建图等处理。
上述各ROS2节点间通过订阅和发送ROS2消息,来进行通信,各个ROS2节点相互解耦,从而方便了软件的灵活性和健壮性。且在对某个功能进行修改时,只需要在相应的节点修改即可,不必对其它节点的功能进行修改,从而方便进行系统的功能修改。另外,某个节点的错误不影响其它节点的正常工作,从而提高了系统的鲁棒性。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (11)
1.一种相机软件架构系统,其特征在于,包括:
相机驱动层、相机底层核心库、libargus相机软件框架层、相机应用层、以及第2版机器人操作系统ROS2系统封装层;
其中,所述libargus相机软件框架层设置有多个API接口,用于根据所述相机应用层的API接口调用请求调用所述相机底层核心库中的服务;
所述相机底层核心库,用于根据所调用的服务,调用所述相机驱动层中的相应驱动程序,以驱动摄像头工作并获取摄像头拍摄得到的图像,将所述图像通过所述libargus相机软件框架层返回给所述相机应用层;
所述ROS2系统封装层,用于对所述相机应用层的图像进行封装,得到ROS2系统格式的图像数据,通过ROS2通信机制发送ROS2系统格式的所述图像数据。
2.根据权利要求1所述的相机软件架构系统,其特征在于,所述相机驱动层,用于驱动移动行业处理器接口MIPI摄像头。
3.根据权利要求1所述的相机软件架构系统,其特征在于,所述相机软件架构系统,通过ROS2通信机制与图像处理模块连接,向所述图像处理模块提供ROS2系统格式的所述图像数据。
4.根据权利要求3所述的相机软件架构系统,其特征在于,所述图像处理模块包括以下模块中的至少一个:人脸识别模块、人体识别模块和手势识别模块。
5.根据权利要求1所述的相机软件架构系统,其特征在于,所述相机驱动层中包括:所述相机底层核心库中各个服务对应的驱动程序。
6.一种平台,其特征在于,所述平台上部署有如权利要求1-5任一项所述的相机软件架构系统。
7.一种终端设备,其特征在于,所述终端设备上设置有平台,所述平台上部署有如权利要求1-5任一项所述的相机软件架构系统。
8.根据权利要求7所述的终端设备,其特征在于,所述终端设备为足式机器人。
9.根据权利要求7或8所述的终端设备,其特征在于,所述终端设备上还设置有MIPI摄像头;
所述MIPI摄像头与所述相机软件架构系统连接,用于向所述相机软件架构系统提供拍摄得到的图像。
10.根据权利要求9所述的终端设备,其特征在于,所述终端设备上还设置有图像处理模块;
所述图像处理模块与所述相机软件架构系统连接,用于对所述相机软件架构系统提供的ROS2格式的图像数据进行图像处理。
11.根据权利要求10所述的终端设备,其特征在于,所述图像处理模块包括以下模块中的至少一个:人脸识别模块、人体识别模块和手势识别模块;
所述人脸识别模块和所述人体识别模块,用于对所述MIPI摄像
头的拍摄对象进行识别,以结合识别结果对所述拍摄对象进行跟随;
所述手势识别模块,用于识别所述拍摄对象的指令,以执行所述指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110897452.4A CN115706849B (zh) | 2021-08-05 | 2021-08-05 | 相机软件架构、平台和终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110897452.4A CN115706849B (zh) | 2021-08-05 | 2021-08-05 | 相机软件架构、平台和终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115706849A CN115706849A (zh) | 2023-02-17 |
CN115706849B true CN115706849B (zh) | 2024-01-30 |
Family
ID=85178832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110897452.4A Active CN115706849B (zh) | 2021-08-05 | 2021-08-05 | 相机软件架构、平台和终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115706849B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018129757A1 (zh) * | 2017-01-13 | 2018-07-19 | 邦彦技术股份有限公司 | 一种基于龙芯平台的通信控制框架 |
WO2019056242A1 (zh) * | 2017-09-21 | 2019-03-28 | 深圳传音通讯有限公司 | 一种智能终端的相机拍摄参数设置方法、设置装置及智能终端 |
CN109672884A (zh) * | 2017-10-13 | 2019-04-23 | 阿里巴巴集团控股有限公司 | 图像硬件编码处理方法和装置 |
CN110958390A (zh) * | 2019-12-09 | 2020-04-03 | Oppo广东移动通信有限公司 | 图像处理方法及相关装置 |
CN112164155A (zh) * | 2020-09-29 | 2021-01-01 | 广州小鹏自动驾驶科技有限公司 | 一种车辆数据的采集方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11475671B2 (en) * | 2017-05-26 | 2022-10-18 | Turing Video | Multiple robots assisted surveillance system |
-
2021
- 2021-08-05 CN CN202110897452.4A patent/CN115706849B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018129757A1 (zh) * | 2017-01-13 | 2018-07-19 | 邦彦技术股份有限公司 | 一种基于龙芯平台的通信控制框架 |
WO2019056242A1 (zh) * | 2017-09-21 | 2019-03-28 | 深圳传音通讯有限公司 | 一种智能终端的相机拍摄参数设置方法、设置装置及智能终端 |
CN109672884A (zh) * | 2017-10-13 | 2019-04-23 | 阿里巴巴集团控股有限公司 | 图像硬件编码处理方法和装置 |
CN110958390A (zh) * | 2019-12-09 | 2020-04-03 | Oppo广东移动通信有限公司 | 图像处理方法及相关装置 |
CN112164155A (zh) * | 2020-09-29 | 2021-01-01 | 广州小鹏自动驾驶科技有限公司 | 一种车辆数据的采集方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115706849A (zh) | 2023-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10547779B2 (en) | Smart image sensor having integrated memory and processor | |
US10846551B2 (en) | Video data processing | |
CN109068059B (zh) | 一种调用相机的方法、移动终端及存储介质 | |
CN112612536A (zh) | 基于Linux系统中Android应用程序控制摄像的方法及装置 | |
US11055144B2 (en) | Method, apparatus, and system for multi-module scheduling | |
CN107958224B (zh) | Adas上基于isp的图像预处理系统及方法 | |
CN115706849B (zh) | 相机软件架构、平台和终端设备 | |
CN115412714A (zh) | 数据处理方法、控制终端、ar终端、ar系统及存储介质 | |
WO2024001579A9 (zh) | 曝光控制方法、装置和终端设备 | |
JP6821398B2 (ja) | 画像処理装置、画像処理方法及びプログラム | |
KR102505909B1 (ko) | 멀티채널 비디오 스트림의 실시간 객체 인식 장치 | |
CN109377460A (zh) | 一种图像处理方法、图像处理装置及终端设备 | |
CN114283496A (zh) | 一种智能防人脸过曝摄像机模组 | |
Afrah et al. | Hive: A distributed system for vision processing | |
US20220027623A1 (en) | Object Location Determination in Frames of a Video Stream | |
CN112887653A (zh) | 一种信息处理方法和信息处理装置 | |
CN117857923A (zh) | 图像拍摄方法、图像采集系统及存储介质 | |
CN117793215A (zh) | 多摄像头协议统一转换方法 | |
CN113038004B (zh) | 一种多窗口预览图像方法、装置、计算机设备和存储介质 | |
CN108683866B (zh) | 图像处理及传输方法、图像处理器及相关存储介质和系统 | |
CN115396522B (zh) | 一种环视摄像头数据的处理方法、装置、设备及介质 | |
WO2023020503A1 (zh) | 图像处理芯片、方法、应用处理芯片及电子设备 | |
US10671883B1 (en) | Approximate cross-check for real-time feature matching | |
Campeanu et al. | Scavenging Run-time Resources to Boost Utilization in Component-based Embedded Systems with GPUs | |
CN116723264A (zh) | 确定目标位置信息的方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |