具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
参见图1,为本申请实施例一提供的光学防抖振动发生器的实现方法的流程示意图,包括:
S101、根据预设的N个振动发生参数,计算得到N个预设运动轨迹曲线,所述N个预设运动轨迹曲线用于指引所述N个振动发生器121按照对应轨迹振动,N为正整数;
本申请实施例中提供的实现方法的执行主体为光学防抖振动发生器的实现装置110,实现装置110可以为笔记本电脑、平板电脑、台式计算机、服务器、嵌入式计算机、FPGA(Field Programmable Gate Array)处理器、MCU(Microcontroller Unit)处理器、ARM(Advanced RISC Machines)处理器或者其他具有处理功能的器件和设备等。本实现装置110主要用于实现振动台120上的振动发生器121振动时使振动台120提供正确的抖动环境。
其中,振动台120包括振动发生器121和载台122,载台122用于承载被测的摄像模组,振动发生器121与实现装置110连接,振动发生器121连接载台122,振动发生器121根据预设运动轨迹曲线驱动载台122振动。
当振动发生器121的数量为多个时,多个振动发生器121依次沿第一方向叠放设置,且位于第一方向一侧(一般为上侧)的振动发生器121与载台122连接,此时多个振动发生器121之间产生的振动叠加在一起并通过第一方向一侧的振动发生器121传递给载台122,使得载台122能在各个振动发生器121产生的振动方向上抖动。一般地,第一方向为竖直方向,载台122设置于多个振动发生器121中位于第一方向上侧的振动发生器121上。
在一具体实施例中,载台122包括载台122本体和凸设置于载台122本体中间的连接部,连接部用于与振动发生器121连接。在其他实施例中,还可以通过其他结构使得多轴陀螺仪123采集到振动台120抖动中心的运动轨迹。
在本实施例中,实现装置110根据用户输入的预设的N个振动发生参数计算N个预设运动轨迹曲线。
其中,每一振动发生参数均包括多个参数项,多个参数项至少包括频率、幅度、加速度、补偿位移和初始相位,此外,多个参数项还可以包括上升时间、下降时间、停止相位等参数项。在实际应用时,为了避免用户每次需对相同数值的参数项进行重复输入,实现装置110存储部分参数项的默认值,用户在使用时只需输入关键参数项数据,例如,用户只需要预设频率和幅度的数值。
其中,N个预设运动轨迹曲线与N个振动发生器121一一对应,N个振动发生器121与多个轴向一一对应。实际位置运动轨迹是指多轴陀螺仪123实际安装位置的运动轨迹。
在一示例中,实现装置110根据正弦函数y=A*sin(2*π*x*f)生成预设运动轨迹曲线,其中,y为位置信息,A为振幅,x为时间,f为频率。实现装置110通过获取用户输入的振动发生参数,并根据振动发生参数中的振幅和频率,根据正弦函数产生预设运动轨迹曲线,其他参数项按照默认值处理。
当然,实现装置110还可以采用其他预设函数生成预设运动轨迹曲线,在此不再赘述。
示例地,预设运动轨迹曲线可以是实现装置110根据预设函数的多个时间点生成的多个位置点值,实现装置110可以按照时间点顺序向振动发生器121发出多个位置点值,振动发生器121在相应的时间点达到相应的位置点值,且当位置点值的数量足够时,振动发生器121能够实现平稳产生振动。
S102、实时获取多轴陀螺仪123采集的N个实际位置运动轨迹曲线,所述N个实际位置运动轨迹曲线与所述N个预设运动轨迹曲线一一对应,所述多轴陀螺仪123安装于所述N个振动发生器121所在的振动台120的抖动中心位置;
在本实施例中,通过一个多轴陀螺仪123采集振动台120在多轴方向上产生的振动情况,此时为了使得多轴陀螺仪123能够准确采集各个振动发生器121在各个轴向产生的振动情况,将多轴陀螺仪123安装于振动台120的抖动中心位置。
承上例,多轴陀螺仪123安装于载台122的中心位置。例如,多轴陀螺仪123安装于载台122的连接部上。
S103、当任一所述实际位置运动轨迹曲线与对应所述预设运动轨迹曲线不一致时,计算所述任一所述实际位置运动轨迹曲线对应的偏移补偿参数;
在本实施例中,实现装置110根据接收到的N个实际位置运动轨迹曲线计算各个实际位置运动轨迹曲线对应的振动发生参数,通过将实际位置运动轨迹曲线的实际振动参数与预设运动轨迹曲线的振动发生参数进行对比,来计算任一实际位置运动轨迹曲线对应的偏移补偿参数。
S104、将所述偏移补偿参数补偿至所述任一所述实际位置运动轨迹对应的所述振动发生器121的振动发生参数中,以使得所述振动发生器121对应的所述实际位置运动轨迹曲线与对应的所述预设运动轨迹曲线一致。
本实施例中,利用一个多轴陀螺仪123采集多个振动发生器121的实际位置运动轨迹曲线,能够实时对多个轴向的振动发生器121同时进行动态补偿,特别适应于对三轴及以上的振动进行补偿;同时相比通过编码器采集伺服电机位置,避免了由于伺服电机的输出轴和振动台120之间连接方式存在的结构误差所导致的采集数据本身存在的误差,而且多轴陀螺仪123能够采集更多的数据类型,例如角速度、角位移、加速度等参数,相比编码器其采集的运动轨迹更加真实的反映振动台120的振动情况,有助于提供补偿精度并降低补偿滞后性,使得振动台120模拟的抖动环境更加准确。
可选地,可以通过重复S101至S104进行多次补偿调节,使得振动发生器对应的实际位置运动轨迹曲线与预设运动轨迹曲线达到一致。此时从第二次执行步骤S101时开始,步骤S101中的振动发生参数应该是经补偿后的振动发生参数。
在一优选实施例中,N个振动发生器121均包括运动控制器和直驱电机,运动控制器的输入端与实现装置110连接,运动控制器的输出端与直驱电机连接,运动控制器用于根据对应的预设运动轨迹曲线向对应的直驱电机发出控制指令以使得直驱电机在接收到控制指令时产生与预设运动轨迹曲线对应的振动轨迹。
其中,直驱电机具有一法兰盘,载台122连接在法兰盘上。相比现有技术中利用伺服电机的输出轴通过联轴器连接载台122的方案,避免了因使用联轴器所带来的轴心不一致等结构误差所造成的振动不准确的情况,使得补偿精度更高。同时,直驱电机的控制精度要高于伺服电机的控制精度,相比伺服电机驱动,其转向力矩更大使得换向更加及时,能进一步避免了伺服电机驱动存在的补偿滞后的问题。
参见图2,为本申请实施例二提供的光学防抖振动发生器的实现方法的流程示意图,包括S201至S206,其中S201、S202以及S206与S101、S102以及S103相同,在此不赘述,不同之处在于:
S203、根据傅里叶算法计算任一所述实际位置运动轨迹曲线对应的实际振动参数;
S204、计算所述实际振动参数与对应的所述振动发生参数的差值;
S205、当所述差值大于预设阈值时,基于PID算法模型,计算所述任一所述实际位置运动轨迹曲线的所述差值对应的偏移补偿参数。
在本实施例中,根据傅里叶算法计算任一实际位置运动轨迹曲线对应的实际振动参数。其中,通过傅里叶变换算法能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数或者它们积分的线性组合),并计算出该函数的频率和振幅。根据傅里叶变换计算实际位置运功轨迹曲线的实际振动参数可以参考现有技术,在此不赘述。
可选地,实际振动参数与振动发生参数的差值的绝对值大于阈值时,计算偏移补偿参数。具体地,实际振动参数的各参数项与振动发生参数的各参数项的差值大于各自阈值时,计算各参数项的偏移补偿项值。例如,当振幅差大于0.1度时,计算振幅的偏移补偿项值。
其中,实际振动参数和振动发生参数均包括频率、幅度、加速度、补偿位移和初始相位这五个参数项。当然,还可以均包括其他参数项,在此不赘述。
当实际振动参数的实际振动参数与振动发生参数的任一参数项超过对应的参数项阈值时,则表示实际位置运动轨迹曲线与预设运动轨迹曲线不一致。
当实际位置运动轨迹曲线与预设运动轨迹曲线不一致时,利用PID算法模型计算偏移补偿参数,具体地,计算各个参数项的偏移补偿项值,根据各个参数项的偏移补偿项值得到实际振动参数的偏移补偿参数。
本实施例中,PID(Proportional(比例)、Integral(积分)、Differential(微分))算法模型如下:
其中,u(k)为目标参数项的偏移补偿项值;e(k)为目标参数项的当前差值;e(i)为目标参数项的第i次差值;e(k)-e(k-1)为目标参数项当前差值与上一次差值的差值,KP为比例系数,KI为积分系数、KD为微分系数。
例如,当目标参数项为振动发生参数的振幅值时,u(k)为实际振动参数振幅的偏移补偿项值,当目标参数项为振动发生参数的频率值时,u(k)为实际振动参数频率的偏移补偿项值。
具体PID算法模型对波形参数的调整过程为现有技术,在此不赘述。
需要说明的是,利用PID算法模型计算各个参数项的偏移补偿项值。各个参数项的补偿构成偏移补偿参数。
通过实验证明,通过本申请提供的PID算法模型计算各参数项的偏移补偿项值能对振动发生器121起到有效的补偿。
参见图3,为本申请实施例三提供的光学防抖振动发生器的实现方法的流程示意图,包括步骤S301至S305,其中,S301至S304与S101至S104相同在此不赘述,不同之处详述如下:
S305、关联存储所述偏移补偿参数和所述振动发生参数。
在本实施例中,对各个振动发生器121的振动发生参数进行补偿后,将偏移补偿参数与振动发生参数进行关联存储与本地,以便于在下次输入相同的振动发生参数时,可以直接根据偏移补偿参数对振动发生参数进行补偿,省去了校正计算过程,加快了测试过程。
参见图4,图4为本申请实施例四提供的补偿前后实际位置运动轨迹曲线示意图。其中,图4表示预设的振动发生参数为±3°/4HZ的补偿前和补偿后的实际位置运动轨迹曲线示意图,其中±3°/4HZ表示预期得到振幅为±3°,频率为4HZ的正弦轨迹曲线,图4(a)为获取到的补偿前基于预设的振动发生参数产生的实际位置运动轨迹曲线,图4(b)为获取到的基于补偿后的振动发生参数产生的实际位置运动轨迹曲线,其中横坐标为时间,纵坐标为角度(即振幅)。结合图4(a)和图4(b)可以看出,通过对振动发生器121的振动发生参数进行补偿,可以使得多轴陀螺仪123采集到的实际位置运动轨迹曲线达到预设效果。
参见图5,为本申请实施例五提供的一种光学防抖测试设备100,包括振动台120和上述实现装置110,振动台120包括N个振动发生器121、载台122和多轴陀螺仪123,实现装置110与N个振动发生器121电连接,所述N个振动发生器121沿第一方向叠放设置,位于所述第一方向一侧的所述振动发生器121与所述载台122连接,所述多轴陀螺仪123设置于所述振动台120的抖动中心位置,所述多轴陀螺仪123与所述实现装置110通信连接,N为正整数。
其中,N个振动发生器121可以包括一个或多个振动发生器121,例如两个振动发生器121。当振动发生器121的数量为多个时,多个振动发生器121依次沿第一方向叠放设置,且位于第一方向一侧(一般为上侧)的振动发生器121与载台122连接,此时多个振动发生器121之间产生的振动叠加在一起并通过第一方向一侧的振动发生器121传递给载台122,使得载台122能在各个振动发生器121产生的振动方向上抖动。一般地,第一方向为竖直方向,载台122设置于多个振动发生器121中位于第一方向上侧的振动发生器121上。
一般地,当振动发生器121的数量为多个时,为了实现多轴振动的输出,多个振动发生器121的振动轴线之间的布局关系可以参考现有布局形式,在此不限制。例如,各个振动发生器121的振动轴线交叉设置时实现两个不同轴向的旋转振动。
参见图6,为本申请实施例六提供的一种振动台120,其中,载台122包括载台122本体和凸设置于载台122本体中间的连接部,连接部用于与振动发生器121连接,多轴陀螺仪123设置于连接部上。
在其他实施例中,还可以通过其他结构使得多轴陀螺仪123采集到振动台120抖动中心的运动轨迹。
在一优选实施例中,每一振动发生器121均包括运动控制器和直驱电机,运动控制器的输入端与实现装置110连接,运动控制器的输出端与直驱电机连接,运动控制器用于根据对应的预设运动轨迹曲线向对应的直驱电机发出控制指令以使得直驱电机在接收到控制指令时产生与预设运动轨迹曲线对应的振动轨迹。
其中,直驱电机具有一法兰盘,载台122连接在法兰盘上。相比现有技术中利用伺服电机的输出轴通过联轴器连接载台122的方案,避免了因使用联轴器所带来的轴心不一致等结构误差所造成的振动不准确的情况,使得补偿精度更高。同时,直驱电机的控制精度要高于伺服电机的控制精度,相比伺服电机驱动,其转向力矩更大使得换向更加及时,能进一步避免了伺服电机驱动存在的补偿滞后的问题。
在其他实施例中,为了实现各个振动发生器121之间能够叠放设置,振动发生器121还可以包括其他附件结构,在此不限制。
参见图7,为本申请实施例七提供的实现装置110的示意图,其包括的各单元用于执行图1对应的实施例中的各步骤。具体请参阅图1对应的实施例中的相关描述。实现装置110包括:
第一计算模块111,用于根据预设的N个振动发生参数,计算得到N个预设运动轨迹曲线,所述N个预设运动轨迹曲线用于指引所述N个振动发生器121按照对应轨迹振动,N为正整数;
通讯模块112,用于实时获取多轴陀螺仪123采集的N个实际位置运动轨迹曲线,所述N个实际位置运动轨迹曲线与所述N个预设运动轨迹曲线一一对应,所述多轴陀螺仪123安装于所述N个振动发生器121所在的振动台120的抖动中心位置;
第二计算模块113,用于当任一所述实际位置运动轨迹曲线与对应所述预设运动轨迹曲线不一致时,计算所述任一所述实际位置运动轨迹曲线对应的偏移补偿参数;
补偿模块114,用于将所述偏移补偿参数补偿至所述任一所述实际位置运动轨迹对应的所述振动发生器121的振动发生参数中,以使得所述振动发生器121对应的所述实际位置运动轨迹曲线与对应的所述预设运动轨迹曲线一致。
进一步地,第二计算模块113,还用于根据傅里叶算法计算任一所述实际位置运动轨迹曲线对应的实际振动参数;计算所述实际振动参数与对应的所述振动发生参数的差值;当所述差值大于预设阈值时,基于PID算法模型,计算任一所述实际位置运动轨迹曲线的所述差值对应的偏移补偿参数。
进一步地,第二计算模块113,还用于基于PID模型,计算任一所述实际位置运动轨迹曲线的各个所述参数项对应差值的偏移补偿项值;根据各个所述参数项的所述偏移补偿项值得到所述偏移补偿参数。
其中,上述实现装置110中各个模块的功能实现与上述光学防抖振动发生器的实现方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
参见图8,为本申请实施例八提供的终端设备7的硬件结构示意图。如图8所示,该实施例终端设备7包括:处理器70、存储器71以及存储在所述存储器71中并可在所述处理器70上运行的程序72,例如光学防抖振动发生器的实现程序。所述处理器70执行所述程序72时实现上述各个光学防抖振动发生器的实现方法实施例中的步骤,例如图1所示的步骤S101至S104。或者,所述处理器70执行所述程序72时实现上述各装置实施例中各模块/单元的功能,例如图7所示模块111至114的功能。
示例性的,所述程序72可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器71中,并由所述处理器70执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列程序指令段,该指令段用于描述所述程序72在所述终端设备7中的执行过程。例如,所述程序72可以被分割成指令第一计算模块、通讯模块、第二计算模块和补偿模块(为虚拟装置中的模块),各模块具体功能如下:
第一计算模块,用于根据预设的N个振动发生参数,计算得到N个预设运动轨迹曲线,所述N个预设运动轨迹曲线用于指引所述N个振动发生器121按照对应轨迹振动,N为正整数;
通讯模块,用于实时获取多轴陀螺仪123采集的N个实际位置运动轨迹曲线,所述N个实际位置运动轨迹曲线与所述N个预设运动轨迹曲线一一对应,所述多轴陀螺仪123安装于所述N个振动发生器121所在的振动台120的抖动中心位置;
第二计算模块,用于当任一所述实际位置运动轨迹曲线与对应所述预设运动轨迹曲线不一致时,计算所述任一所述实际位置运动轨迹曲线对应的偏移补偿参数;
补偿模块,用于将所述偏移补偿参数补偿至所述任一所述实际位置运动轨迹对应的所述振动发生器121的振动发生参数中,以使得所述振动发生器121对应的所述实际位置运动轨迹曲线与对应的所述预设运动轨迹曲线一致。
所述终端设备7可以是嵌入型计算机、ARM构架的处理设备、微型处理器、FPGA构架的处理设备、桌上型计算机、笔记本、掌上电脑及云端计算管理平台等计算设备。所述终端设备7可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图8仅仅是终端设备7的示例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备7还可以包括输入输出设备、网络接入设备、总线等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71可以是所述终端设备7的内部存储单元,例如终端设备7的硬盘、内存、闪存、ROM类储存芯片、RAM类存储芯片等。所述存储器71也可以是所述终端设备7的外部存储设备,例如所述终端设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。