本申请涉及计算机技术领域,尤其涉及一种控制云台的方法及装置。
背景技术:
云台摄像机可以是指带有云台的摄像机,云台可以装配有承载摄像机进行水平和竖直两个方向的转动装置,通过mcu(microcontrollerunit,微控制单元)来控制电机转动,从而带动云台转动,进而可以根据不同的需求,使摄像机以多个角度进行图像采集,还可以通过mcu控制摄像机机芯(简称机芯),比如摄像头的伸缩等,以便满足不同的图像采集需求。
通常情况下,针对云台的控制指令大致可以有两种时限要求,分别可以是接收到以后立即执行的实时指令,以及接收到以后,等待一段时间后再执行的延时指令;而对于优先级也可以有不同的要求,比如对于机芯的控制指令则需要较高的优先级,等。
现有技术中,云台通常采用顺序排列的形式执行不同的任务,也即只要接收到针对云台的控制指令,就写入到消息列队中并按顺序依次执行,然而对于一些优先级较高任务则无法及时执行,且对于需要延时的任务也影响了其他任务的执行时效。比如,优先级较高的任务也只能排在队尾,等待其他任务执行完成后才轮到该任务执行,而定时任务,在等待的过程中不执行任何其他任务。可见,对云台的控制能否满足时限、优先级等不同的任务执行要求,成为了亟待解决的问题,所以需要提供一种方案,能够在对装载摄像机的云台进行控制的过程中,满足不同的控制要求。
技术实现要素:
本申请实施例提供一种控制云台的方法,用于在对装载摄像机的云台进行控制的过程中,满足不同的控制要求。
为解决上述技术问题,本申请实施例是这样实现的:
本申请实施例采用下述技术方案:
一种控制云台的方法,包括:
当接收到针对云台的实时指令后,将所述实时指令以实时任务的形式写入到云台的消息列队中的末位;
当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将所述延时指令以实时任务的形式写入到所述消息列队中;
当接收到针对云台的优先指令后,将所述优先指令以实时任务的形式写入到所述消息列队中的非末位;
按序依次从所述消息列队中读取、执行实时任务,并删除执行成功的实时任务。
优选地,确定出针对云台的延时指令,包括:
接收到针对云台的延时指令;或
根据预先设置,生成针对云台的延时指令。
优选地,当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将所述延时指令以实时任务的形式写入到所述消息列队中,包括:
当确定出针对云台的延时指令后,根据所述延时指令在任务链表中添加定时任务、以及对应的剩余时长;
当所述任务链表中存在剩余时长为零的目标定时任务时,将所述目标定时任务以实时任务的方式写入到所述消息列队中。
优选地,所述目标定时任务为周期性任务,则将所述目标定时任务以实时任务的方式写入到所述消息列队中之后,所述方法还包括:
重置在所述任务链表中所述目标定时任务的剩余时长。
优选地,所述方法还包括:
当执行的实时任务为针对云台的转动任务时,根据所述转动任务的任务参数,确定所述云台从第一位置传感器转动到第二位置传感器的预计时间间隔;
判断是否在所述预计时间间隔内,所述云台从所述第一位置传感器转动到所述第二位置传感器;
若未转动到,则重启所述云台的电机,并重新执行所述转动任务。
本申请实施例提供一种控制云台的装置,用于在对装载摄像机的云台进行控制的过程中,满足不同的控制要求。
一种控制云台的装置,包括:任务写入模块、以及任务执行模块,其中,
所述任务写入模块,用于:
当接收到针对云台的实时指令后,将所述实时指令以实时任务的形式写入到云台的消息列队中的末位;
当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将所述延时指令以实时任务的形式写入到所述消息列队中;
当接收到针对云台的优先指令后,将所述优先指令以实时任务的形式写入到所述消息列队中的非末位;
所述任务执行模块,用于按序依次从所述消息列队中读取、执行实时任务,并删除执行成功的实时任务。
优选地,所述任务写入模块,具体用于:
当确定出针对云台的延时指令后,根据所述延时指令在任务链表中添加定时任务、以及对应的剩余时长;
当所述任务链表中存在剩余时长为零的目标定时任务时,将所述目标定时任务以实时任务的方式写入到所述消息列队中。
优选地,所述装置还包括任务判断模块,用于:
当执行的实时任务为针对云台的转动任务时,根据所述转动任务的任务参数,确定所述云台从第一位置传感器转动到第二位置传感器的预计时间间隔;
判断是否在所述预计时间间隔内,所述云台从所述第一位置传感器转动到所述第二位置传感器;
若未转动到,则重启所述云台的电机,并重新执行所述转动任务。
由以上实施例提供的技术方案可见,当接收到针对云台的实时指令后,可以将该实时指令以实时任务的形式写入到消息列队中的末位;当确定出延时指令后,可以建立定时任务,并待到定时结束时,将该延时指令以实时任务的形式写入到消息列队中;当接收到优先指令后,可以将该优先指令以实时任务的形式写入到消息列队中的首位,从而使装载摄像机的云台可以按序依次读取消息列队中的任务,并实时执行。相比于现有技术中不论接收到何种要求的控制指令,均写入到消息列队并按顺序执行,而导致无法满足时限和优先级要求的问题,本申请实施例根据不同的执行要求,以适当的时机和适当的位置,且均以实时任务的形式将指令写入到消息列队中,使云台无需再判断任务的执行要求,直接按序执行就可以满足不同的控制要求。
附图说明
为了更清楚地说明本申请实施例或现有的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的控制云台的方法的流程示意图;
图2为本申请实施例提供的云台的硬件结构图;
图3为本申请实施例提供的将任务写入到消息列队的示意图;
图4为本申请实施例提供的将定时任务添加到任务链表的示意图;
图5为本申请实施例提供的将任务链表中的定时任务写入到消息列队的示意图;
图6为本申请实施例提供的从消息列队中读取任务的示意图;
图7为本申请实施例提供的控制云台的装置的结构示意图;
图8为本申请实施例提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本申请的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请中各实施例提供的技术方案。
实施例1
如前所述,现有技术中云台通常采用顺序排列的形式执行不同的任务,只要接收到针对云台的控制指令,就写入到消息列队中并按顺序依次执行。比如先接收到延时5s(秒)的转动指令1,则将该指令写入到消息列队中,再接收到实时转动指令2,则又将该指令写入到消息列队中,此时会先等待5s后执行转动指令1,而后再执行转动指令2。但实际上,实时转动指令2发送的动机是期望立刻执行而非等待,所以现有技术的这种控制云台的方式无法满足任务执行的要求。基于此缺陷,本实施例提供一种控制云台的方法,在对装载摄像机的云台进行控制的过程中,可以满足不同的控制要求。该方法的执行主体可以是云台,该方法的具体流程示意图如图1所示,包括:
步骤102:当接收到针对云台的实时指令后,将该实时指令以实时任务的形式写入到云台的消息列队中的末位。
在实际的云台控制场景中,云台可以与客户端相连接,以便客户端可以根据控制要求,向云台发送控制指令。云台的硬件结构可以如图2所示,其中主控可以用于接收客户端发送的控制指令,并将控制指令发送给mcu进行执行,具体地,mcu可以驱动水平或竖直电机,从而实现云台转动,也可以驱动机芯(摄像头机芯)进行伸缩,从而实现图像缩放和对焦,还可以通过位置传感器确定出云台所处的角度。
所以在本步骤中,云台中的主控可以接收来自客户端的针对云台的实时指令,比如转动指令、电机启动指令,电机停止指令,等。这些实时指令可以在云台接收到以后无需等待便立刻执行,所以可以将接收到的实时指令以实时任务的形式写入到云台的消息列队中,使云台读取实时任务后可以立即执行。由于消息列队中可能存在其他的实时任务,所以可以将该任务写入到消息列队中的末位,该消息列队就可以是用于临时存储待执行的任务。
具体地实现方式,可以由主控接收针对云台的实时指令,并发送给mcu,由mcu将该实时指令以实时任务的形式写入到云台的消息列队中的末位。如图3所示,为将任务写入到消息列队的示意图,可以先判断mcu的消息列队是否已满,若否则可以关闭中断,以便暂停任何操作,使mcu可以高效稳定地在消息列队中写入实时任务,写入完毕后再可以开启中断,恢复正常的运行模式。这里的中断就可以代表最高优先级,即暂停其他操作而高效稳定地进行任务写入操作。
针对云台的控制指令可以有多种类型,比如云台转动指令、电机的启动停止指令,机芯的缩放指令等。在实际的应用中,为了提高执行指令的稳定性,降低出错率,通常可以为不同类型的指令预置不同的处理程序,比如处理程序1可以专门用于执行转动指令、处理程序2可以专门用于执行电机的指令、处理程序3可以专门用于执行机芯的缩放指令等。为了进一步提高执行指令的稳定性,降低出错率,可以将控制指令由该指令类型对应的处理程序写入到消息列队中,并由其执行该指令,也即针对某类型的控制指令,由对应的处理程序写入到消息列队中,再由该处理程序执行。所以在一种实施方式中,当接收到针对云台的实时指令后,将该实时指令以实时任务的形式写入到云台的消息列队中的末位,可以包括:当接收到针对云台的实时指令后,利用与该实时指令类型对应的处理程序,将该实时指令以实时任务的形式写入到云台的消息列队中的末位。
步骤104:当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将该延时指令以实时任务的形式写入到消息列队中。
前文已经介绍,在现有技术中当云台接收到延时指令后,就将该延时指令写入到消息列队中,以便云台可以执行该延时指令,但采用的是等待延时结束再执行的方式,故影响了其他实时指令的执行时效。所以本步骤中,当确定出针对云台的延时指令后,可以先不写入消息列队中,而是在云台中建立定时任务,并在定时结束后,将该延时指令以实时任务的形式写入到消息列队中。比如云台确定出一个延时指令,为5s后转动角度α,则可以先建立一个定时任务,该定时任务的内容为5s后触发转动角度α,当等待5s后,再将转动角度α以实时任务的形式写入到消息列队中,据此云台在读取到该实时任务后可以立即执行,从而达到了延时指令的效果。
在一种实施方式中,确定出针对云台的延时指令,可以包括:接收到针对云台的延时指令;或根据预先设置,生成针对云台的延时指令。具体地,对于延时指令,可以是客户端发送的,也可以是云台根据预先设置自行生成的。比如,客户端可以根据不同的需求,发送延时指令,而云台可以根据预先设置触发生成控制指令,具体比如定期电机重启、定期对焦、电机过热后休眠等,均可以预先进行设置而由云台自行生成。而针对延时指令,可以包含一次性延时的指令,还可以包含周期性指令,比如5s以后执行一次,可以属于一次性延时指令,而每隔5s执行一次,则属于周期性指令。
为了减少对消息列表的干扰,可以通过任务链表来管理定时任务,具体地,在一种实施方式中,当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将该延时指令以实时任务的形式写入到消息列队中,可以包括:当确定出针对云台的延时指令后,根据该延时指令在任务链表中添加定时任务、以及对应的剩余时长;当任务链表中存在剩余时长为零的目标定时任务时,将该目标定时任务以实时任务的方式写入到消息列队中。
进一步地,可以创建一个任务链表和一个空闲链表,空闲链表中可以有多个闲置的任务块,每个任务块可以用于存储定时任务。如图4所示,为将定时任务添加到任务链表的示意图,当确定出针对云台的延时指令后,可以从空闲链表中取出任务块,并以该定时任务的参数和剩余时长对该任务块进行赋值,此后可以将赋值后的任务块添加到任务链表中,其中任务块可以是用于存储任务的存储区域,每个任务块再被定时任务占用后,就无法再被其他任务占用,也即空闲的任务块被赋值并添加至任务链表中,就无法再被其他任务使用。
如图5所示,为将任务链表中的定时任务写入到消息列队的示意图,任务链表中的每个任务块均可以具有对应的任务参数和剩余时长,可以先从任务链表的表头开始,遍历其中的每个任务块,在每个单位时间过后,将每个任务块中的剩余时长均减少1个单位时长,当出现剩余时长为0的目标(定时)任务后,将该剩余时长为0的任务块中的目标任务通过调用回调函数的方式,以实时任务的形式写入到消息列队中。此后可以清空该任务块中的赋值,并添加至空闲链表中。也即空闲链表中的多个空闲任务块可以通过赋值的方式添加定时任务,赋值后的任务块可以添加至任务链表中,当任务链表中的任务块对应的任务被取出(以及写入至消息列队中)后,再次清空为空闲的任务块后,可以再次添加至空闲链表中,以便此后再次被其他的定时任务利用。
在前文已经介绍,定时指令可以是周期性指令,所以在对任务块进行赋值时,也可以添加周期性标识。则在一种实施方式中,当目标任务为周期性任务时,则将目标定时任务以实时任务的方式写入到消息列队中之后,该方法还可以包括:重置任务链表中该目标定时任务的剩余时长。具体地,如图5中所示,当通过调用回调函数的方式将定时任务以实时任务的形式写入到消息列队中后,可以先判断是否需要周期执行,也即是否对应为周期性指令,若需要则可以重置该任务块的剩余时长,以便后续再次执行。若不需要,则可以如上文所述清空该任务块中的赋值,并添加至空闲链表中。
在前文已经介绍,可以为不同类型的指令预置不同的处理程序,则在本步骤中,当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将该延时指令以实时任务的形式写入到消息列队中,可以包括:当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,利用与该延时指令类型对应的处理程序,将该延时指令以实时任务的形式写入到消息列队中。
在本步骤中,将延时指令以实时任务的形式写入到消息列队中,可以是将延时指令以实时任务的形式写入到消息列队中的首位,以便优先执行,也可以将延时指令以实时任务的形式写入到消息列队中的末位,以便按序执行,还可以写入到消息列队中的随机一位。
步骤106:当接收到针对云台的优先指令后,将该优先指令以实时任务的形式写入到消息列队中的非末位。
优先指令可以是指优先级较高的指令,比如最高优先级、次高优先级等,具体比如针对机芯的缩放指令,或优先级较高的转动指令等。本步骤为了能够使优先指令能够优先执行,从而满足对优先级的要求,可以在接收到针对云台的优先指令后,将该优先指令以实时任务的形式写入到消息列队中的非末位。具体地,非末位可以是除末位以外的其他顺位,比如对于最高优先级的优先指令,可以写入消息列队的首位,对于次高优先级的优先指令,可以写入消息列队的第二位,等。
在前文已经介绍,可以为不同类型的指令预置不同的处理程序,则在本步骤中,当接收到针对云台的优先指令后,将该优先指令以实时任务的形式写入到消息列队中的非末位,可以包括:当接收到针对云台的优先指令后,利用与该优先指令类型对应的处理程序,将该优先指令以实时任务的形式写入到消息列队中的非末位。
步骤108:按序依次从该消息列队中读取、执行实时任务,并删除执行成功的实时任务。
在前述步骤中,分别将实时指令、延时指令、以及优先指令均以实时任务的形式写入到云台的消息列队中,所以本步骤中,云台中的mcu就可以按序依次从该消息列队中读取实时任务。由于均是实时任务,所以就无需再判断是否需要立刻执行还是延时执行,从而减少了判断的步骤,也降低了任务堆积的概率,也就在一定程度上降低了云台出错的概率。如图6所示,为从消息列队中读取任务的示意图,可以先判断mcu的消息列队是否已空,若否则可以关闭中断,以便暂停任何操作,使mcu可以高效稳定地从消息列队中读取实时任务,读取完毕后再可以开启中断,恢复正常的运行模式,并可以执行该实时任务。
当执行实时任务成功后,可以删除执行成功的实时任务,以便再继续从消息列队中读取并执行剩余的任务。判断是否成功可以通过多种方式,比如读取操作记录,或根据云台转动的结果进行判断。
而对于转动指令是否执行成功,可以通过位置传感器进行判断,在一种实施方式中,为了能够较为准确地判断出转动指令是否执行成功,该方法还可以包括:当执行的实时任务为针对云台的转动任务时,根据该转动任务的任务参数,确定云台从第一位置传感器转动到第二位置传感器的预计时间间隔;判断是否在预计时间间隔内,该云台从第一位置传感器转动到第二位置传感器;若未到达,则重启云台的电机,并重新执行该转动任务。具体地,可以通过云台中的位置传感器,确定出云台的转动角度,而在实际应用中,可以有多个位置传感器,用于判断云台是否处在需要的角度,所以当执行转动任务时,可以根据转动任务中的角速度和角度的参数,确定出第一位置传感器和第二位置传感器的预计时间间隔,在执行过程中,判断云台能否在预计时间间隔内,从第一位置传感器转动到第二位置传感器,若达到,则说明转动任务执行成功,若未达到则说明该转动任务执行失败,此时可以重启云台的电机,并重新执行该转动任务,以便后续再次判断是否执行成功。在实际应用中,若执行失败的次数超过预设的失败次数,则可以向客户端发送故障提示。
在前文已经介绍,为了提高执行指令的稳定性,降低出错率,通常为不同类型的指令预置不同的处理程序,则在本步骤中,按序依次从该消息列队中读取、执行实时任务,并删除执行成功的实时任务,可以包括:按序依次从该消息列队中读取实时任务,并利用与该实时任务类型对应的处理程序,执行该实时任务,以及删除执行成功的实时任务。
需要说明的是,上述步骤无固定的先后顺序,可以在同一时刻执行,也可以先执行步骤102、104和106,再执行步骤108,或先执行步骤102和步骤104后,执行步骤108,然后再执行步骤106,等。
由以上实施例提供的方法可见,当接收到针对云台的实时指令后,可以将该实时指令以实时任务的形式写入到消息列队中的末位;当确定出延时指令后,可以建立定时任务,并待到定时结束时,将该延时指令以实时任务的形式写入到消息列队中;当接收到优先指令后,可以将该优先指令以实时任务的形式写入到消息列队中的首位,从而使装载摄像机的云台可以按序依次读取消息列队中的任务,并实时执行。相比于现有技术中不论接收到何种要求的控制指令,均写入到消息列队并按顺序执行,而导致无法满足时限和优先级要求的问题,本申请实施例根据不同的执行要求,以适当的时机和适当的位置,且均以实时任务的形式将指令写入到消息列队中,使云台无需再判断任务的执行要求,直接按序执行就可以满足不同的控制要求。
实施例2
基于相同的构思,本申请实施例2提供了一种控制云台的装置,在对装载摄像机的云台进行控制的过程中,可以满足不同的控制要求。该装置的结构示意图如图7所示,包括:任务写入模块202、以及任务执行模块204,其中,
任务写入模块202,可以用于:
当接收到针对云台的实时指令后,将实时指令以实时任务的形式写入到云台的消息列队中的末位;
当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将延时指令以实时任务的形式写入到消息列队中;
当接收到针对云台的优先指令后,将优先指令以实时任务的形式写入到消息列队中的非末位;
任务执行模块,用于按序依次从消息列队中读取、执行实时任务,并删除执行成功的实时任务。
在一种实施方式中,任务写入模块202,可以用于:
接收到针对云台的延时指令;或
根据预先设置,生成针对云台的延时指令。
在一种实施方式中,任务写入模块202,可以用于:
当确定出针对云台的延时指令后,根据延时指令在任务链表中添加定时任务、以及对应的剩余时长;
当任务链表中存在剩余时长为零的目标定时任务时,将目标定时任务以实时任务的方式写入到消息列队中。
在一种实施方式中,目标定时任务为周期性任务,则任务写入模块202,
还可以用于:
将目标定时任务以实时任务的方式写入到消息列队中之后,重置在任务链表中目标定时任务的剩余时长。
在一种实施方式中,装置还包括任务判断模块,可以用于:
当执行的实时任务为针对云台的转动任务时,根据转动任务的任务参数,确定云台从第一位置传感器转动到第二位置传感器的预计时间间隔;
判断是否在预计时间间隔内,云台从第一位置传感器转动到第二位置传感器;
若未转动到,则重启云台的电机,并重新执行转动任务。
对于本装置中的任务写入模块202和任务执行模块204,可以均设置在云台的mcu中,也可以分别设置在主控和mcu中,比如当设置在mcu中时,可以接收来自主控的指令(主控接收来自客户端的指令后发送给mcu),并以实时任务的形式写入到云台的消息列队中,据此,可以在mcu的消息列队中读取并执行实时任务。当分别设置在主控和mcu中时,可以由主控中的任务写入模块202接收来自客户端的指令,并发送给mcu,由mcu中的任务写入模块202,执行任务写入操作。
由以上实施例提供的装置可见,当接收到针对云台的实时指令后,可以将该实时指令以实时任务的形式写入到消息列队中的末位;当确定出延时指令后,可以建立定时任务,并待到定时结束时,将该延时指令以实时任务的形式写入到消息列队中;当接收到优先指令后,可以将该优先指令以实时任务的形式写入到消息列队中的首位,从而使装载摄像机的云台可以按序依次读取消息列队中的任务,并实时执行。相比于现有技术中不论接收到何种要求的控制指令,均写入到消息列队并按顺序执行,而导致无法满足时限和优先级要求的问题,本申请实施例根据不同的执行要求,以适当的时机和适当的位置,且均以实时任务的形式将指令写入到消息列队中,使云台无需再判断任务的执行要求,直接按序执行就可以满足不同的控制要求。
图8是本申请的一个实施例电子设备的结构示意图。在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成控制云台的装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
当接收到针对云台的实时指令后,将所述实时指令以实时任务的形式写入到云台的消息列队中的末位;
当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将所述延时指令以实时任务的形式写入到所述消息列队中;
当接收到针对云台的优先指令后,将所述优先指令以实时任务的形式写入到所述消息列队中的非末位;
按序依次从所述消息列队中读取、执行实时任务,并删除执行成功的实时任务。
上述如本申请图7所示实施例提供的控制云台的装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图7所示实施例提供的控制云台的装置在图8所示实施例的功能,本申请实施例在此不再赘述。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图7所示实施例中控制云台的装置执行的方法,并具体用于执行:
当接收到针对云台的实时指令后,将所述实时指令以实时任务的形式写入到云台的消息列队中的末位;
当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将所述延时指令以实时任务的形式写入到所述消息列队中;
当接收到针对云台的优先指令后,将所述优先指令以实时任务的形式写入到所述消息列队中的非末位;
按序依次从所述消息列队中读取、执行实时任务,并删除执行成功的实时任务。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
1.一种控制云台的方法,其特征在于,包括:
当接收到针对云台的实时指令后,将所述实时指令以实时任务的形式写入到云台的消息列队中的末位;
当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将所述延时指令以实时任务的形式写入到所述消息列队中;
当接收到针对云台的优先指令后,将所述优先指令以实时任务的形式写入到所述消息列队中的非末位;
按序依次从所述消息列队中读取、执行实时任务,并删除执行成功的实时任务。
2.如权利要求1所述的方法,其特征在于,确定出针对云台的延时指令,包括:
接收到针对云台的延时指令;或
根据预先设置,生成针对云台的延时指令。
3.如权利要求1所述的方法,其特征在于,当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将所述延时指令以实时任务的形式写入到所述消息列队中,包括:
当确定出针对云台的延时指令后,根据所述延时指令在任务链表中添加定时任务、以及对应的剩余时长;
当所述任务链表中存在剩余时长为零的目标定时任务时,将所述目标定时任务以实时任务的方式写入到所述消息列队中。
4.如权利要求3所述的方法,其特征在于,所述目标定时任务为周期性任务,则将所述目标定时任务以实时任务的方式写入到所述消息列队中之后,所述方法还包括:
重置所述任务链表中所述目标定时任务的剩余时长。
5.如权利要求1所述的方法,所述方法还包括:
当执行的实时任务为针对云台的转动任务时,根据所述转动任务的任务参数,确定所述云台从第一位置传感器转动到第二位置传感器的预计时间间隔;
判断是否在所述预计时间间隔内,所述云台从所述第一位置传感器转动到所述第二位置传感器;
若未转动到,则重启所述云台的电机,并重新执行所述转动任务。
6.一种控制云台的装置,其特征在于,包括:任务写入模块、以及任务执行模块,其中,
所述任务写入模块,用于:
当接收到针对云台的实时指令后,将所述实时指令以实时任务的形式写入到云台的消息列队中的末位;
当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将所述延时指令以实时任务的形式写入到所述消息列队中;
当接收到针对云台的优先指令后,将所述优先指令以实时任务的形式写入到所述消息列队中的非末位;
所述任务执行模块,用于按序依次从所述消息列队中读取、执行实时任务,并删除执行成功的实时任务。
7.如权利要求6所述的装置,其特征在于,所述任务写入模块,具体用于:
当确定出针对云台的延时指令后,根据所述延时指令在任务链表中添加定时任务、以及对应的剩余时长;
当所述任务链表中存在剩余时长为零的目标定时任务时,将所述目标定时任务以实时任务的方式写入到所述消息列队中。
8.如权利要求6所述的装置,所述装置还包括任务判断模块,用于:
当执行的实时任务为针对云台的转动任务时,根据所述转动任务的任务参数,确定所述云台从第一位置传感器转动到第二位置传感器的预计时间间隔;
判断是否在所述预计时间间隔内,所述云台从所述第一位置传感器转动到所述第二位置传感器;
若未转动到,则重启所述云台的电机,并重新执行所述转动任务。
9.一种电子设备,包括:
处理器;以及
被设置为存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
当接收到针对云台的实时指令后,将所述实时指令以实时任务的形式写入到云台的消息列队中的末位;
当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将所述延时指令以实时任务的形式写入到所述消息列队中;
当接收到针对云台的优先指令后,将所述优先指令以实时任务的形式写入到所述消息列队中的非末位;
按序依次从所述消息列队中读取、执行实时任务,并删除执行成功的实时任务。
10.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
当接收到针对云台的实时指令后,将所述实时指令以实时任务的方式的形式写入到云台的消息列队中的末位;
当确定出针对云台的延时指令后,建立定时任务,并待到定时结束时,将所述延时指令以实时任务的方式的形式写入到所述消息列队中;
当接收到针对云台的优先指令后,将所述优先指令以实时任务的方式的形式写入到所述消息列队中的首位非末位;
按序依次从所述消息列队中读取、执行实时任务,并删除执行成功的实时任务。
技术总结