本公开涉及通信技术领域,尤其涉及一种通信方法及装置、电子设备和存储介质。
背景技术:
在通信技术领域中,上位机和下位机通信具有重要的作用,特别在嵌入式设备中。通常,上位机可以向下位机发送控制指令,下位机根据接收的控制指令控制设备工作。通常,上位机和下位机的通信可以使用不同的通信协议,完备的通信协议可以保证信息可靠高效地传输。
上位机和下位机具有多种连接方式,无法设定统一的通信标准。在众多现有的上位机与下位机的通信方式中,没有比较完备的上下位机的通信方案。
技术实现要素:
本公开提出了一种信息通信技术方案。
根据本公开的一方面,提供了一种通信方法,包括:
获取对图像帧进行目标检测得到的检测结果;
基于所述检测结果以及当前的工作模式,生成预设协议格式的第一数据包;
向下位机发送所述第一数据包,以使所述下位机根据所述第一数据包对当前场景进行图像采集。
在一种可能的实现方式中,所述获取对图像帧进行目标检测得到的检测结果,包括:
在共享内存中获取对图像帧进行目标检测得到的检测结果。这样,上位机可以在共享内存中直接对检测结果进行复制,提高检测结果获取的效率。
在一种可能的实现方式中,所述基于所述检测结果以及当前的工作模式,生成预设协议格式的第一数据包,包括:
根据所述检测结果生成检测信息;
根据所述当前的工作模式生成控制信息;
将所述检测信息添加在检测结果字段中,将所述控制信息添加在控制字段中,生成预设协议格式的所述第一数据包。
这样,检测信息和控制信息可以携带在第一数据包的检测结果字段和控制字段中,实现与下位机的信息通信
在一种可能的实现方式中,所述根据所述检测结果生成检测信息,包括:
在所述检测结果的头部和尾部添加第一校验信息,生成所述检测信息。这样,可以保证检测结果传输的可靠性。
在一种可能的实现方式中,所述第一数据包包括校验字段;所述方法还包括:
生成第二校验信息;
将所述第二校验信息添加在所述第一数据包的校验字段中,其中,所述第二校验信息用于所述下位机对所述第一数据包的准确性进行验证。
通过在校验字段中携带第二校验信息,可以保证检测结果或者控制信息的准确行,避免被篡改的可能性
在一种可能的实现方式中,所述生成第二校验信息,包括:
获取预设的生成多项式;
基于所述生成多项式,生成二进制序列;
基于所述检测结果以及所述二进制序列,生成所述第二校验信息。
通过这种方式,可以得到对检测结果进行校验的第二校验信息,提高检测结果传输的准确性。
在一种可能的实现方式中,所述第一数据包包括模式标志位字段;所述方法还包括:
根据采集所述图像帧时的工作模式,确定所述检测结果对应的工作模式;
基于所述检测结果对应的工作模式,生成所述第一数据包的模式标志位字段。
这样,通过模式标志位字段可以确定检测结果对应的工作模式,从而下位机可以更好地执行相应的操作。
在一种可能的实现方式中,所述方法还包括:
在所述第一数据包的发送时间超过重传阈值,并且,在所述发送时间内未接收所述下位机返回的确认信息的情况下,再次向所述下位机发送所述第一数据包。
这样,可以确保第一数据包成功达到下位机,保证上位机与下位机之间的通信。
在一种可能的实现方式中,所述方法还包括:
接收下位机发送的第二数据包;
根据所述第二数据包的控制字段携带的控制信息,对当前的工作模式进行调整。
通过这种方式,可以实现上位机与下位机的双向通信。
在一种可能的实现方式中,所述工作模式,包括以下至少一种:
手势分类模式;人脸检测模式;人体跟踪模式;球体检测模式。
这样,上位机可以与下位机在多种工作模式下进行通信。
根据本公开的另一方面,提供了一种通信方法,所述方法包括:
接收上位机发送的预设协议格式的第一数据包;
基于所述第一数据包,得到对图像帧进行目标检测得到的检测结果以及当前的工作模式;
根据所述检测结果以及当前的工作模式对当前场景进行图像采集进行工作。
通过这种方式,可以实现上位机和下位机的信息通信。
在一种可能的实现方式中,所述基于所述第一数据包,得到所述第一数据包携带的检测结果以及当前的工作模式,包括:
在所述第一数据包的检测结果字段中获取检测信息;
根据所述检测信息得到对图像帧进行目标检测得到的检测结果;
在所述第一数据包的控制字段中获取控制信息;
根据所述控制信息确定当前工作模式。
这样,下位机可以在第一数据包中得到目标检测得到的检测结果以及确定当前工作模式。
在一种可能的实现方式中,所述根据所述检测信息得到对图像帧进行目标检测得到的检测结果,包括:
在所述检测信息的头部和尾部获取第一校验信息;
在所述第一校验信息匹配预设校验信息的情况下,在所述检测信息中提取所述检测结果。
这样,可以保证检测结果传输的可靠性。
在一种可能的实现方式中,所述在所述第一数据包的检测结果字段中获取检测信息,包括:
在所述第一数据包的校验字段中,获取第二校验信息;
获取由预设的监督码序列生成的二进制序列;
利用所述二进制序列对所述第二校验信息进行校验,得到校验结果;
在所述校验结果为校验通过的情况下,在所述第一数据包中获取所述检测结果。
这样,下位机可以获取准确地检测结果,避免检测结果被篡改。
在一种可能的实现方式中,所述方法还包括:
检测当前的工作模式;
在所述工作模式发生改变的情况下,基于当前的工作模式修改所述第一数据包的控制字段,得到第二数据包;
向上位机发送所述第二数据包。
这样,可以实现下位机到上位机的信息通信过程。
在一种可能的实现方式中,所述工作模式包括以下至少一种:
手势分类模式;人脸检测模式;人体跟踪模式;球体检测模式。
这样,下位机可以与上位机在多种工作模式下进行通信。
根据本公开的另一方面,提供了一种通信装置,所述装置包括:
获取模块,用于获取对图像帧进行目标检测得到的检测结果;
生成模块,用于基于所述检测结果以及当前的工作模式,生成预设协议格式的第一数据包;
发送模块,用于向下位机发送所述第一数据包,以使所述下位机根据所述第一数据包对当前场景进行图像采集。
在一种可能的实现方式中,所述获取模块,具体用于在共享内存中获取对图像帧进行目标检测得到的检测结果。
在一种可能的实现方式中,所述生成模块,具体用于,
根据所述检测结果生成检测信息;
根据所述当前的工作模式生成控制信息;
将所述检测信息添加在检测结果字段中,将所述控制信息添加在控制字段中,生成预设协议格式的所述第一数据包。
在一种可能的实现方式中,所述生成模块,具体用于在所述检测结果的头部和尾部添加第一校验信息,生成所述检测信息。
在一种可能的实现方式中,所述第一数据包包括校验字段;所述生成模块还用于,
生成第二校验信息;
将所述第二校验信息添加在所述第一数据包的校验字段中,其中,所述第二校验信息用于所述下位机对所述第一数据包的准确性进行验证。
在一种可能的实现方式中,所述生成模块,具体用于,
获取预设的生成多项式;
基于所述生成多项式,生成二进制序列;
基于所述检测结果以及所述二进制序列,生成所述第二校验信息。
在一种可能的实现方式中,所述第一数据包包括模式标志位字段;所述生成模块还用于,
根据采集所述图像帧时的工作模式,确定所述检测结果对应的工作模式;
基于所述检测结果对应的工作模式,生成所述第一数据包的模式标志位字段。
在一种可能的实现方式中,所述发送模块,还用于在所述第一数据包的发送时间超过重传阈值,并且,在所述发送时间内未接收所述下位机返回的确认信息的情况下,再次向所述下位机发送所述第一数据包。
在一种可能的实现方式中,所述装置还包括:
接收模块,用于接收下位机发送的第二数据包;根据所述第二数据包的控制字段携带的控制信息,对当前的工作模式进行调整。
在一种可能的实现方式中,所述工作模式,包括以下至少一种:
手势分类模式;人脸检测模式;人体跟踪模式;球体检测模式。
根据本公开的另一方面,提供了一种通信装置,所述装置包括:
接收模块,用于接收上位机发送的预设协议格式的第一数据包;
确定模块,用于基于所述第一数据包,得到对图像帧进行目标检测得到的检测结果以及当前的工作模式;
控制模块,用于根据所述检测结果以及当前的工作模式对当前场景进行图像采集进行工作。
在一种可能的实现方式中,所述确定模块,具体用于,
在所述第一数据包的检测结果字段中获取检测信息;
根据所述检测信息得到对图像帧进行目标检测得到的检测结果;
在所述第一数据包的控制字段中获取控制信息;
根据所述控制信息确定当前工作模式。
在一种可能的实现方式中,所述确定模块,具体用于,
在所述检测信息的头部和尾部获取第一校验信息;
在所述第一校验信息匹配预设校验信息的情况下,在所述检测信息中提取所述检测结果。
在一种可能的实现方式中,所述确定模块,具体用于,
在所述第一数据包的校验字段中,获取第二校验信息;
获取由预设的监督码序列生成的二进制序列;
利用所述二进制序列对所述第二校验信息进行校验,得到校验结果;
在所述校验结果为校验通过的情况下,在所述第一数据包中获取所述检测结果。
在一种可能的实现方式中,所述装置还包括:
修改模块,用于检测当前的工作模式;在所述工作模式发生改变的情况下,基于当前的工作模式修改所述第一数据包的控制字段,得到第二数据包;向上位机发送所述第二数据包。
在一种可能的实现方式中,所述工作模式包括以下至少一种:
手势分类模式;人脸检测模式;人体跟踪模式;球体检测模式。
根据本公开的一方面,提供了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:执行上述通信方法。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述通信方法。
在本公开实施例中,上位机可以获取对图像帧进行目标检测得到的检测结果,然后基于检测结果以及当前的工作模式,生成预设协议格式的第一数据包,再向下位机发送生成的第一数据包,以使下位机根据所述第一数据包对当前场景进行图像采集,这样,可以通过预设协议格式的第一数据包,实现上位机和下位机之间的通信。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出根据本公开实施例的通信方法的流程图。
图2示出根据本公开实施例的共享内存的信息存储格式的框图。
图3示出根据本公开实施例的检测结果的信息存储格式的框图。
图4示出根据本公开实施例的第一数据包格式的框图。
图5示出根据本公开实施例的一种通信方法的流程图。
图6示出根据本公开实施例的通信装置一示例的框图。
图7示出根据本公开实施例的通信装置一示例的框图。
图8示出根据本公开实施例的电子设备示例的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
本公开实施例提供的一种信息通信方案,上位机可以获取对图像帧进行目标检测得到的检测结果,然后基于检测结果以及当前的工作模式,生成预设协议格式的第一数据包,再向下位机发送所述第一数据包,以使所述下位机根据所述第一数据包对当前场景进行图像采集。如此,实现上位机与下位机之间的信息通信。例如,实现树莓派(上位机)与智能机器人的控制模块(下位机)之间的信息通信。
图1示出根据本公开实施例的通信方法的流程图。该通信方法可以由终端设备、服务器或其它类型的电子设备执行,其中,终端设备可以为用户设备(userequipment,ue)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(personaldigitalassistant,pda)、手持设备、计算设备、车载设备、可穿戴设备、智能机器人等。在一些可能的实现方式中,该通信方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。下面以电子设备作为执行主体为例对本公开实施例的通信方法进行说明。
步骤s11,获取对图像帧进行目标检测得到的检测结果;
在本公开实施例中,上位机可以获取内存中存储的检测结果。检测结果可以是对下位机采集的图像帧中的目标对象进行目标检测得到的,例如,对图像帧中的球体进行目标检测得到针对球体的目标检测结果。这里,检测结果可以是目标对象在图像帧中的图像坐标,或者,可以是目标对象在是三维空间中的世界坐标。举例来说,树莓派可以作为上位机,可以应用在智能机器人中。智能机器人可以实时采集当前场景的图像帧,然后树莓派(上位机)可以获取对图像帧进行目标检测的检测结果。
在一种可能的实现方式中,可以在共享内存中获取对图像帧进行目标检测得到的检测结果。这里,上位机可以创建共享内存,并将图像帧的检测结果实时存储在共享内存中,从而上位机可以在共享内存中直接对检测结果进行复制,提高检测结果获取的效率。
在一个示例中,共享内存中不仅可以存储检测结果,还可以实时存储图像帧以及检测结果对应的工作模式。检测结果对应的工作模式可以是对图像帧进行目标检测时上位机与下位机的工作模式,该工作模式可以包括手势分类模式、人脸检测模式、人体跟踪模式、球体检测模式中的一种或多种,相应地,对图像帧进行的目标检测与该工作模式相对应,即,可以根据工作模式可以确定对图像帧进行目标检测的目标对象。例如,在手势分类模式下,目标对象可以是图像帧中的手势图像,在人脸检测模式下,目标对象可以是图像帧中的人脸图像。
图2示出根据本公开实施例的共享内存的信息存储格式的框图。共享内存可以包括标志位部分、图像内容部分以及检测结果部分。其中,标志位部分可以存储标识当前的图像帧的目标检测状态以及工作模式的标志位,目标检测状态可以是当前的图像帧是否经过目标检测处理,例如,标志位为1时,可以表示当前的图像帧经过手势检测。图像内容部分可以存储当前的图像帧,例如,智能机器人每采集一个图像帧,树莓派可以将该图像帧存储在共享内存的图像内容部分。检测结果部分可以存储当前的图像帧进行目标检测的检测结果,例如,在目标检测为人脸检测的情况下,检测结果可以人脸的图像坐标或者世界坐标。这里,可以为共享内容包括的每个部分分配相应的存储空间,举例来说,可以为标志位分配大小是8字节的存储空间,为图像内容部分分配大小是50k字节的存储空间,为检测结果分配大小是72字节的存储空间。这里,可以不断对共享内存中缓存的内容进行更新,即,每采集一个图像帧,可以将共享内存的内容更新为当前的图像帧对应的标志位、图像内容和检测结果。
图3示出根据本公开实施例的检测结果的信息存储格式的框图。
在一个示例中,共享内容的检测结果部分可以存储当前的图像帧中至少一个目标对象的检测结果,即,目标对象的图像坐标或世界坐标,该检测记过可以用若干个点的图像坐标或世界坐标进行表示,例如,检测结果部分可以存储n个目标对象的检测结果,n是大于0的正整数,其中,可以选取目标对象1轮廓的上、下、左、右四个边缘的点,将这四个边缘的点的图像坐标或世界坐标作为目标对象1的检测结果。
步骤s12,基于所述检测结果以及当前的工作模式,生成预设协议格式的第一数据包。
在本公开实施例中,上位机可以检测当前的工作模式,然后将当前的图像帧的检测结果和当前的工作模式封装在预设协议格式的第一数据包中。这里,预设协议格式可以是传输控制/互联网(transmissioncontrolprotocol/internetprotocol,tcp/ip)协议格式。这里,当前的工作模式可以与检测结果对应的工作模式相同或者不同。当前的工作模式可以由用户进行设定。
在一种可能的实现方式中,可以根据检测结果生成检测信息,根据当前的工作模式生成控制信息,然后将检测信息添加在检测结果字段中,以及,将控制信息添加在控制字段中,生成预设协议格式的第一数据包。在该实现方式中,第一数据包可以包括检测结果字段以及控制字段。检测结果字段中可以添加由检测结果生成的检测信息,控制字段中可以添加由当前的工作模式生成的控制信息。上位机可以将检测结果直接作为检测信息添加在检测结果字段中,或者,可以对检测结果进行加密处理,将加密后的检测结果作为检测信息添加在检测结果字段中。相应地,上位机可以将表示当前的工作模式的标识信息直接作为控制信息,或者,上位机可以将表示当前的工作模式的标识信息进行加密得到控制信息。这样,检测信息和控制信息可以携带在第一数据包的检测结果字段和控制字段中,实现与下位机的信息通信。
在该实现方式的一个示例中,在所述检测结果的头部和尾部添加第一校验信息,生成所述检测信息。在该示例中,为了保证检测结果传输的可靠性,可以在检测结果的头部和尾部分别添加第一校验信息,头部添加的第一校验信息与尾部添加第一校验信息可以相同也可以不同。这里,第一校验信息可以是上位机和下位机预先协商的,例如,可以将头部的第一校验信息设置为0x7e,将尾部的第一校验信息设置为0xac。这样,下位机在接收到第一数据包之后,可以利用与上位机预先协商的第一校验信息对第一数据包的检测结果字段中的检测信息进行验证,如果检测信息的头部以及尾部均与第一校验信息相匹配,则可以根据该检测信息执行相应的指令,否则,可以将接收的第一数据包丢弃,不进行任何处理。这样,可以保证检测结果传输的可靠性。
步骤s13,向下位机发送所述第一数据包,以使所述下位机根据所述第一数据包对当前场景进行图像采集。
在本公开实施例中,上位机在生成预设协议格式的第一数据包之后,可以向下位机发送第一数据包。这里,上位机与下位机可以通过多种方式连接,例如,可以通过串行接口连接,或者,可以通过无线方式连接。举例来说,树莓派可以通过串行接口与智能机器人的控制模块连接,树莓派可以通过串行接口将第一数据包发送给智能机器人的控制模块。
这里,下位机接收到第一数据包之后,可以通过对第一数据包的解析,由第一数据包的检测结果字段中获取检测信息,由第一数据包的控制字段获取控制信息,然后可以根据控制信息指示的工作模式以及检测结果指示的目标对象的位置,执行相应的操作,例如,对目标对象进行追踪等。
图4示出根据本公开实施例的第一数据包格式的框图。在一个可能的实现方式中,第一数据包还可以包括校验字段。上述方法还可以包括:生成第二校验信息;将所述第二校验信息添加在所述第一数据包的校验字段中,其中,所述第二校验信息用于所述下位机对所述第一数据包的准确性进行验证。
在该实现方式中,第一数据包中可以包括校验字段,例如,校验字段可以是16个比特位。上位机可以生成第二校验信息,例如,利用随机数生成第二校验信息,然后可以利用第二校验信息为检测结果或者控制信息加密,并将第二校验信息添加在第一数据包的校验字段中。下位机在接收到第一数据包之后,可以利用校验字段中的第二校验信息为检测结果或者控制信息进行解密,如果解密成功则可以根据得到的检测结果以及控制信息执行相应的操作,否则,可以丢弃接收到的第一数据包。通过在校验字段中携带第二校验信息,可以保证检测结果或者控制信息的准确行,避免被篡改的可能性。
在该实现方式的一个示例中,可以获取预设的生成多项式,基于所述生成多项式,生成二进制序列,基于所述检测结果以及所述二进制序列,生成所述第二校验信息。
在该示例中,为了保证信息通信过程中检测结果的准确性,可以针对检测结果,生成对检测结果进行校验的第二校验信息。这里的生成多项式可以与下位机预先协商,可以将生成多项式转换为二进制序列,二进制序列的位数可以为正整数,如8位、4为等。例如,生成多项式g(x)=x3+x2+1,二进制序列可以是将1101。然后可以利用检测结果d(x)以及生成多项式g(x),确定冗余码长r,然后将d(x)的二进制码向左移动r位,得到一个第一二进制码,然后将该第一二进制码除以g(x),得到余数r。然后将r的最后r位进行模2运算,得到第二二进制码,可以将第二二进制码重新赋值给r。然后将d(x)的二进制码向左移动r位后与r相加,可以得到第二校验信息。通过这种方式,可以得到对检测结果进行校验的第二校验信息,提高检测结果传输的准确性。
在一种可能的实现方式中,第一数据包包括模式标志位字段;上述方法还可以包括:根据采集所述图像帧时的工作模式,确定所述检测结果对应的工作模式;基于所述检测结果对应的工作模式,生成所述第一数据包的模式标志位字段。
在该实现方式中,第一数据包中可以包括模式标志位字段,该模式标志位字段可以指示检测结果对应的工作模式。例如,该模式标志位字段为1时,可以表示检测结果对应的工作模式是手势分类模式。上位机可以根据检测结果对应的工作模式生成存储在模式标志位字段的信息,然后将该信息封装在存储在模式标志位字段。下位机在接收到第一数据包之后,可以根据第一数据包中的模式标志位字段确定检测结果对应的工作模式,例如,确定当前的检测结果是在人脸检测模式下的人脸检测结果,下位机可以将该人脸检测结果保存在人脸检测模式对应的存储空间中。这样,通过模式标志位字段可以确定检测结果对应的工作模式,从而下位机可以更好地执行相应的操作。
在一种可能的实现方式中,在所述第一数据包的发送时间超过重传阈值,并且,在所述发送时间内未接收所述下位机返回的确认信息的情况下,上位机可以再次向所述下位机发送所述第一数据包。
在该实现方式中,上位机可以将重传阈值存放在第一数据包的重传阈值字段,重传阈值可以根据实际的应用场景进行设置。上位机在发送第一数据包之后,可以计算第一数据包的发送时间。如果该发送时间超过重传阈值时,上位机未接收到下位机发送的针对第一数据包的返回的确认信息,则可以认为存在下位机未接收到第一数据包或者第一数据包有误等问题,则可以重新向下位机发送第一数据包。这样,可以确保第一数据包成功达到下位机,保证上位机与下位机之间的通信。
在一个可能的实现方式中,如图4所示,第一数据包还可以包括可选字段,该可选字段可以根据实际应用场景中第一数据包的通信协议格式进行设置,从而可以对第一数据包进行改进以及优化。
在一种可能的实现方式中,上位机可以接收下位机发送的第二数据包;根据所述第二数据包的控制字段携带的控制信息,对当前的工作模式进行调整。
在该实施方式中,下位机可以连接多个传感器,接收至少一个传感器传递的电信号,用户可以通过传感器设置当前的工作模式。下位机通过检测传感器的电信号,确定用户设置的工作模式。下位机可以直接由当前的工作模式生成控制信息,将该控制信息添加在第二数据包的控制字段中,或者,可以将加密后的控制信息添加在第二数据包的控制字段中,向上位机发送第二数据包。上位机接收第二数据包之后,可以在第二数据包的控制字段解析出当前的工作模式,并将自身的工作模式调整到解析出的工作模式,例如,树莓派根据智能机器人的控制模块传输的第二数据包,将工作模式由原来的人脸检测模式调整到球体检测模式。通过这种方式,可以实现上位机与下位机的双向通信。
需要说明的是,上位机还可以在第二数据包中获取上位机发送其他的一些信息,例如,在第二数据包中获取智能机器人运转的转速、速度等一些信息,从而上位机可以通过与下位机的双向通信,更好地了解智能机器人当前的运动状态。
图5示出根据本公开实施例的一种通信方法的流程图。该通信方法可以应用于下位机中,该方法可以包括以下步骤:
步骤s21,接收上位机发送的预设协议格式的第一数据包。
在本公开实施例中,下位机可以接收上位机发送的预设协议格式的第一数据包,这里,预设协议格式可以是tcp/ip协议格式。举例来说,智能机器人的控制模块(下位机)可以通过串行接口接收树莓派(上位机)发送的第一数据包。
步骤s22,基于所述第一数据包,得到对图像帧进行目标检测得到的检测结果以及当前的工作模式。
这里,下位机可以在第一数据包的检测结果字段获取对图像帧进行目标检测得到的检测结果,在第一数据包的控制字段中获取当前的工作模式。这里的工作模式包括手势分类模式、人脸检测模式、人体跟踪模式、球体检测模式中的一种或多种。
步骤s23,根据所述检测结果以及当前的工作模式对当前场景进行图像采集进行工作。
这里,下位机可以根据检测结果确定目标对象的位置,该位置可以是目标对象的世界坐标或者图像坐标。然后,根据当前的工作模式以及检测结果指示的目标对象的位置,进行相应的图像采集进行工作,例如,对目标对象进行追踪拍摄等。通过这种方式,可以实现上位机和下位机的信息通信。
在一种可能的实现方式中,下位机可以在所述第一数据包的检测结果字段中获取检测信息,根据所述检测信息得到对图像帧进行目标检测得到的检测结果。相应地,上位机可以在所述第一数据包的控制字段中获取控制信息,根据所述控制信息确定当前工作模式。在该实现方式中,下位机可以直接由检测结果字段的检测信息得到目标对象的检测结果,或者,可以利用预先与上位机协商的方式将检测结果字段的检测信息进行解密,得到目标对象的检测结果。相应地,下位机可以直接由控制字段的控制信息得到当前的工作模式,或者,可以利用预先与上位机协商的方式将控制字段的控制信息进行解密,得到当前的工作模式。这样,可以保证第一数据包内容的准确性。
在一种可能的实现方式中,下位机可以在所述检测信息的头部和尾部获取第一校验信息,在所述第一校验信息匹配预设校验信息的情况下,在所述检测信息中提取所述检测结果。在该实现方式中,第一校验信息可以是上位机和下位机预先协商的,检验信息头部和尾部的第一校验信息可以相同,也可以不同。例如,可以将头部的第一校验信息设置为0x7e,将尾部的第一校验信息设置为0xac。下位机在接收到第一数据包之后,可以利用与上位机预先协商的第一校验信息对第一数据包的检测结果字段中的检测信息进行验证,如果检测信息的头部以及尾部均与第一校验信息相匹配,则可以由该检测信息确定当前的工作模式。否则,可以将接收的第一数据包丢弃,不进行任何处理。这样,可以保证检测结果传输的可靠性。
在该实现方式的一个示例中,上位机可以在所述第一数据包的校验字段中,获取第二校验信息,并获取由预设的监督码序列生成的二进制序列。然后利用所述二进制序列对所述第二校验信息进行校验,得到校验结果,在所述校验结果为校验通过的情况下,在所述第一数据包中获取所述检测结果。
在该示例中,为了保证信息通信过程中检测结果的准确性,可以为该检测结果设置第二校验信息。第二校验信息可以携带在第一数据包的校验字段中。下位机可以获取预先存储的监督码序列,由该监督码序列生成的二进制序列,或者,直接获取存储的二进制序列。然后将第二校验信息除以二进制序列,得到余数,在余数是0的情况下,可以认为校验结果是校验通过。否者,可以认为校验结果是校验失败。在校验通过的情况下,可以由检测结果字段中获取检测结果,在校验失败的情况下,可以丢弃第一数据包。这样,下位机可以获取准确地检测结果,避免检测结果被篡改。
在一种可能的实现方式中,所述方法还包括:检测当前的工作模式;在所述工作模式发生改变的情况下,基于当前的工作模式修改所述第一数据包的控制字段,得到第二数据包;向上位机发送所述第二数据包。
在该实现方式中,下位机可以连接多个传感器,例如,触摸传感器、光感传感器、红外传感器等,接收至少一个传感器传递的电信号,用户可以通过传感器设置当前的工作模式。下位机通过检测传感器的电信号,确定用户设置的工作模式。下位机可以直接由当前的工作模式生成控制信息,将该控制信息添加在第二数据包的控制字段中,或者,可以将加密后的控制信息添加在第二数据包的控制字段中,向上位机发送第二数据包。从而上位机可以第二数据包中控制字段,调整当前的工作模式。这样,可以实现下位机到上位机的信息通信过程。
需要说明的是,下位机除了将当前的工作模式通过第二数据包的控制字段发送给上位机之后,还可以主动向上位机发送其他的一些信息,例如,将智能机器人运转的转速、速度等一些信息携带在第二数据包中发送给上位机。
通过本公开实施例提供的信息通信方案,实现上位机与下位机之间的信息通信。例如,实现树莓派(上位机)与智能机器人的控制模块(下位机)之间的信息通信。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。
此外,本公开还提供了装置、电子设备、计算机可读存储介质、程序,上述均可用来实现本公开提供的任一种通信方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
图6示出根据本公开实施例的通信装置一示例的框图,如图6所示,所述装置包括:
获取模块31,用于获取对图像帧进行目标检测得到的检测结果;
生成模块32,用于基于所述检测结果以及当前的工作模式,生成预设协议格式的第一数据包;
发送模块33,用于向下位机发送所述第一数据包,以使所述下位机根据所述第一数据包对当前场景进行图像采集。
在一种可能的实现方式中,所述获取模块31,具体用于在共享内存中获取对图像帧进行目标检测得到的检测结果。
在一种可能的实现方式中,所述生成模块32,具体用于,
根据所述检测结果生成检测信息;
根据所述当前的工作模式生成控制信息;
将所述检测信息添加在检测结果字段中,将所述控制信息添加在控制字段中,生成预设协议格式的所述第一数据包。
在一种可能的实现方式中,所述生成模块32,具体用于在所述检测结果的头部和尾部添加第一校验信息,生成所述检测信息。
在一种可能的实现方式中,所述第一数据包包括校验字段;所述生成模块32还用于,
生成第二校验信息;
将所述第二校验信息添加在所述第一数据包的校验字段中,其中,所述第二校验信息用于所述下位机对所述第一数据包的准确性进行验证。
在一种可能的实现方式中,所述生成模块32,具体用于,
获取预设的生成多项式;
基于所述生成多项式,生成二进制序列;
基于所述检测结果以及所述二进制序列,生成所述第二校验信息。
在一种可能的实现方式中,所述第一数据包包括模式标志位字段;所述生成模块32还用于,
根据采集所述图像帧时的工作模式,确定所述检测结果对应的工作模式;
基于所述检测结果对应的工作模式,生成所述第一数据包的模式标志位字段。
在一种可能的实现方式中,所述发送模块33,还用于在所述第一数据包的发送时间超过重传阈值,并且,在所述发送时间内未接收所述下位机返回的确认信息的情况下,再次向所述下位机发送所述第一数据包。
在一种可能的实现方式中,所述装置还包括:
接收模块,用于接收下位机发送的第二数据包;根据所述第二数据包的控制字段携带的控制信息,对当前的工作模式进行调整。
在一种可能的实现方式中,所述工作模式,包括以下至少一种:
手势分类模式;人脸检测模式;人体跟踪模式;球体检测模式。
图7示出根据本公开实施例的通信装置一示例的框图,如图7所示,所述装置包括:
接收模块41,用于接收上位机发送的预设协议格式的第一数据包;
确定模块42,用于基于所述第一数据包,得到对图像帧进行目标检测得到的检测结果以及当前的工作模式;
控制模块43,用于根据所述检测结果以及当前的工作模式对当前场景进行图像采集进行工作。
在一种可能的实现方式中,所述确定模块42,具体用于,
在所述第一数据包的检测结果字段中获取检测信息;
根据所述检测信息得到对图像帧进行目标检测得到的检测结果;
在所述第一数据包的控制字段中获取控制信息;
根据所述控制信息确定当前工作模式。
在一种可能的实现方式中,所述确定模块42,具体用于,
在所述检测信息的头部和尾部获取第一校验信息;
在所述第一校验信息匹配预设校验信息的情况下,在所述检测信息中提取所述检测结果。
在一种可能的实现方式中,所述确定模块42,具体用于,
在所述第一数据包的校验字段中,获取第二校验信息;
获取由预设的监督码序列生成的二进制序列;
利用所述二进制序列对所述第二校验信息进行校验,得到校验结果;
在所述校验结果为校验通过的情况下,在所述第一数据包中获取所述检测结果。
在一种可能的实现方式中,所述装置还包括:
修改模块,用于检测当前的工作模式;在所述工作模式发生改变的情况下,基于当前的工作模式修改所述第一数据包的控制字段,得到第二数据包;向上位机发送所述第二数据包。
在一种可能的实现方式中,所述工作模式包括以下至少一种:
手势分类模式;人脸检测模式;人体跟踪模式;球体检测模式。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为上述方法。
电子设备可以被提供为终端、服务器或其它形态的设备。
图8是根据一示例性实施例示出的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。参照图8,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(i/o)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。