基于手机及内置重力感应器的云台控制方法 技术领域 本发明属于数字视频监控技术领域, 具体涉及一种基于网络的用手机操控远程云 台转动, 实施视频监控的方法。
背景技术 目前的数字视频监控一般采取摄像机安装在云台上, 监控中心控制云台进行水 平、 垂直运动, 带动摄像机水平转动、 调整机身倾斜角度等, 摄像机对镜头范围内的景象进 行拍摄传回视频流。对云台的控制有按键、 摇杆、 直接输控制命令等方式。
随着智能手机的大量普及, 以及 3G、 WiFi 等无线互联网络的迅速发展, 远程监控 多了一条新的途径, 即智能手机通过网络远程操控监控设备而实施监控。这使得手机使用 者可以随时随地监控远端情况。但由于手机的随身携带及触摸屏大小有限等特性, 使得现 有的各种操控远端云台方法在手机上使用显得很不方便。
若为手机配置专门的摇杆设备, 则其携带不方便, 这与手机的随身携带特性不符。 若在手机触摸屏上安排滑动条或罗盘、 按键等操作符号, 模拟云台操作面板对云台实施操 作, 则会占用触摸屏很大的一部分显示空间, 使得本就大小有限的触摸屏难以获得充分的 屏幕空间播放实时传回的监控画面 ( 由于在触摸屏上安排操作符号需要考虑到人手触摸 的方便程度, 操作符号不能设计得过小, 若干操作符号的组合占用的屏幕空间比较大 )。另 外, 滑动条、 罗盘和按键的控制方式是在二维平面操控三维空间的移动, 操作过程不直观。 以上因素会影响到操控者对云台运行情况的判断, 增加用户来回移动云台的次数, 降低操 控效率以及用户的操控体验。
综上, 现有的手机云台控制方法需要占用大量的屏幕空间, 并且只支持平面操控, 难以克服手机屏幕空间有限、 操控过程不直观等问题, 使得操控效率不高、 用户体验不好。
发明内容
本发明针对现有技术在操控效率和用户体验方面的不足, 提出了一种基于手机及 内置重力感应器的云台控制方法。
本发明采取以下技术方案 : 基于手机及内置重力感应器的云台控制方法, 按如下 步骤 :
第一步, 为手机内置重力感应器建立三维坐标系 ;
第二步, 记录手机当前位置及远端云台位置, 建立两者对应关系 ;
第三步, 设定采样间隔, 定时对内置重力感应器的参数值进行采样 ;
第四步, 依据采样值计算手机当前位置与前一采样时刻位置的变化 ( 含水平、 垂 直角度偏移 ) ;
第五步, 将取得的水平、 垂直角度偏移值, 输入云台控制命令生成模块 ;
第六步, 云台控制命令生成模块对输入的各时刻手机位置参数进行整合运算, 依 据远端云台控制协议, 生成远端云台控制命令 ;第七步, 将远端云台控制命令放入控制命令输出队列, 依据命令发送策略, 将控制 命令经网络发往远端云台控制单元, 实现对云台的控制。
本发明云台控制方法利用智能手机内置的重力感应器感知用户的肢体动作, 将手 机机身模拟为远端的云台, 操控手机机身做水平、 上下转动即操控远端云台做同样的运动。 该方法操作过程中, 操控者可以通过观察手机感知云台的相对位移, 有良好的位置感、 直 观。同时, 该方法无需在手机屏幕上显示用户操控用的滑动条、 罗盘等操作符号, 只需显示 按键操作符号, 使得手机可以留出更多的屏幕空间播放实时传回的监控画面, 提高了操控 的效率, 有良好的用户体验。 附图说明
图 1 为手机控制远端云台示意图。
图 2 为手机内置重力感应器三维坐标系示意图。
图 3 为重力感应器 Z 轴参数值变动反映手机机身上下转动示意图。
图 4 为重力感应器 X 轴参数值变动反映手机机身左右转动示意图。
图 5 为依据内置重力感应器参数值计算手机上下转动角度原理图。
图 6 为依据内置重力感应器参数值计算手机左右转动角度原理图。具体实施方式
基于手机及内置重力感应器的云台控制方法的基本原理是 : 目前的智能手机均内 置重力感应器, 可以感知手机在三维空间运动时, 空间各分量 (X、 Y、 Z 轴 ) 上的投影值。 而用 户以自然姿态手握手机 ( 自然姿态指手机屏幕面向用户, 机身与地面水平面有一个 15°~ 75°的倾角 ), 对手机进行左右、 上下转动时, 重力加速度在空间各分量上的投影值可以反 映出这样的转动运动。据此, 可以将手机机身模拟为远端云台, 通过记录手机机身在水平、 垂直方向上的转动情况, 感知用户对远端云台的操控要求, 并将操控要求转化为云台控制 指令, 发送到远端云台控制单元, 实现手机对远端云台的控制。
如图 1 所示, 手机控制远端云台具体步骤如下 :
第一步, 为手机内置重力感应器建立三维坐标系。
以手机屏幕为水平面, 建立 X、 Y 轴。一般手机屏幕为矩形, 以屏幕的横、 竖轴为 X、 Y 轴, 以与手机屏幕垂直的法线方向为 Z 轴, 完成三维坐标系的建立。图 2 是手机内置重力 感应器三维坐标系建立示意图。
第二步, 记录手机当前位置及远端云台位置, 建立两者对应关系。
采用智能手机操作系统 API 函数获取重力感应器当前数值。如谷歌 Android 系统 有如下函数可以取得重力感应器数值。
取得的重力感应器数值记录为三元组 [x0,y0,z0]。向远端云台发送控制命令取得 远端云台的当前位置参数, 记录为三元组 [lx0, ly0, lz0]。不同云台技术参数有差异, 某些云 台不支持回传当前位置参数。如出现此类情况, 则将 [lx0,ly0,lz0] 置为 [0, 0, 0]。后续计 算均计算相对偏移。
第三步, 设定采样间隔, 定时对内置重力感应器的参数值进行采样。
根据操作者手部运动习惯的差异, 以不遗漏操作者手部停留动作为标准, 设定采 样间隔。一般可取 100ms 的整数倍。用第二步中相同的方法获取重力感应器数值, 记录为 [x1, y1, z1], [x2, y2, z2], [x3, y3, z3],…, [xi, yi, zi], i 为采样次数。
第四步, 依据采样值计算手机当前位置与前一采样时刻位置的变化。
重力感应器能感应到重力加速度在第一步中所建立的三维坐标系各分量 (X、 Y、 Z 轴 ) 上的投影值。当用户以自然姿态手握手机 ( 自然姿态指手机屏幕面向用户, 机身与地 面水平面有一个 15°~ 75°的倾角 ), 对手机进行左右、 上下转动时, 投影值可以与手机的 转动建立对应关系。根据这一对应关系, 可以从重力加速度在三维坐标系各分量上投影值 的变化推算出手机左右、 上下的转动情况。图 3 显示了重力感应器 Z 轴参数值的变动与手 机机身上下转动之间的对应关系。图 4 显示了重力感应器 X 轴参数值的变动与手机机身左 右转动之间的对应关系。
图 5 为依据 Z 轴参数值变化计算手机机身上下转动角度原理图。图中手机平面 i 与 Zi 轴成 90°夹角, 手机平面 i-1 与 Zi-1 轴成 90°夹角 ; 则手机平面 i 与手机平面 i-1 间夹 角与 Zi 轴和 Zi-1 轴间夹角相等 ; Zi 轴和 Zi-1 轴间夹角可由 Z 轴上的重力加速度采样值 ( 即 投影值 ) 的变化得出。具体计算方法为 :
其中, g 为重力加速度, 一般为 9.8 ; gzi 为当前时刻 Z 轴上的重力加速度采样值 ( 即 投影值 ) ; gzi-1 为前一时刻 Z 轴上的重力加速度采样值。
图 6 为依据 X 轴参数值变化计算手机机身左右转动角度原理图。同上原理手机平 面间夹角与 X 轴间夹角相等 ; X 轴间夹角由 X 轴上的重力加速度采样值 ( 即投影值 ) 计算 得出 :
其中, g 为重力加速度, 一般为 9.8 ; gxi 为当前时刻 X 轴上的重力加速度采样值 ; gxi-1 为前一时刻 X 轴上的重力加速度采样值。因为本方法不支持超过 90°的水平转动采 样。因此, 如果计算结果超过 90°, 则取补角。
经以上计算, 取得手机当前位置与前一采样时刻位置在水平和上下方向上的转动偏移值。 第五步, 将取得的水平、 上下方向转动偏移值, 表达为 [ri, ui, ti]。ri 表示水平方 向转动角度, 正负值代表向右向左转动 ; ui 表示上下方向转动角度, 正负值代表向上向下转 动; ti 表示转动经历的时间, 为采样间隔的整数倍 ; i 为序列号。[ri, ui, ti] 依次输入云台 控制命令生成模块。
第六步, 手机对云台的控制操作设计如下 : 用户以自然姿态手握手机, 将手机向需 要监控的方向转动, 然后停顿或者回到自然姿态放置, 接收传回的视频流。 手机向监控方向 转动的动作生成相应的云台控制命令, 而手机回到自然姿态放置的过程不生成控制命令。 云台控制命令生成过程为 :
(1) 根据远端云台运动参数 ( 单位步长的移动时间、 或者云台转动 3°所需的时间 等 ), 设定命令发送间隔 ;
(2) 在命令发送间隔内, 对输入的三元组 [ri, ui, ti] 按输入顺序排序, 将 [r0, u0, t0]+[r1, u1, t1]+… +[rn, un, tn] = [R, U, T], n 为命令发送间隔内收到的三元组数量 ;
(3) 依据云台控制协议, 将 [R, U, T] 转化为云台控制命令, R 表示左右转动角度, U 表示上下转动角度, T 与 R、 U 相除表示转动角速度。云台控制协议中有具体命令控制云台 的左右、 上下转动。不同型号的云台遵循不同的云台控制协议, 命令格式各异, 具体系统具 体设计。
第七步, 将远端云台控制命令放入控制命令输出队列, 等待发送。 控制命令可以即 刻发送, 也可以等待收到前一个命令的反馈信息后, 再发送下一个控制命令。