APP下载

摄像机二自由度转动远程控制系统设计与实现

2020-09-14吴艳娟程闫斌王留涛全宗祺

实验室研究与探索 2020年8期
关键词:云台脚本舵机

吴艳娟, 王 凯, 程闫斌, 王留涛, 王 健, 全宗祺

(天津理工大学a. 电气电子工程学院;b. 天津市复杂系统控制理论及应用重点实验室,天津300384)

0 引 言

摄像机舵机控制系统广泛应用于摄像机云台和智能云台,军用和航空舵机云台控制稳定性和控制精度都达到了很高的水平,被广泛地运用到坦克、导弹、火箭、无人机及各种飞行器等设备中[1-4],在工业和民用方面应用也越来越广泛[5]。目前,无人驾驶智能车、无人值守智能变电站,无人值守智能仓库、无人值守停车场和智能机器人等技术的发展受到极大关注[6-11],摄像头作为视觉系统,在一定程度上决定了机器人环境适应性和可视性的能力,也体现机器人执行任务的效率或操控难度。目前在高精度智能机器上都会安装有摄像头,如果摄像头是固定的,不能转动,机器视觉的视野范围就会受限,会存在很大的视觉死角,使用就会存在局限性。为进一步提高智能化,需要对摄像头的视觉范围进行调整,将采集的图像信息进行远程通信,数据交互,实现远程控制[12-14]。特别是对于在无人值守的工作环境或工作人员无法进入的恶劣工作环境中的一些智能设备,更需要这种远程控制技术[15]。鉴于此,本文提出基于互联网的摄像机自由转动舵机远程控制技术,研制出试验演示控制系统,该控制系统实现了在客户端对摄像头二自由度转动的舵机进行远程控制,可通过客户端灵活控制智能机器的视觉范围,解决了摄像头固定不动视野范围受限,以及因工作环境限制无法进行现场操作等技术问题。

1 系统设计方案

本系统主要组成部分包括执行远程控制的客户端、进行数据交互的互联网、主控制器(包括全球广域网(World Wide Web,Web)服务器、上位机和下位机)、执行部件(包括摄像头和舵机云台)和电源等。

系统通过主控制器局域网与客户端进行数据交互。移动客户端通过局域网与主控制器连接,可以接收主控制器发送的视频图像信息和云台舵机当前的位置信息,同时移动客户端可以向主控制器发送控制命令改变云台的姿态。主控制器的上位机解析接收到的数据,控制信号通过下位机驱动云台舵机改变云台姿态,实现摄像头视角的改变。主控制器也驱动显示屏显示系统运行时的重要信息。系统总体的结构框图如图1 所示。

图1 系统总体结构框图

本设计分成硬件和软件设计两个部分,硬件设计又分成机械结构设计和电路设计两部分,整个设计过程采用模块化设计方法。

2 硬件设计

整体的硬件设计包括主控制器、摄像头、舵机云台、显示设备等,如图2 所示。摄像头模块实现系统图像信息采集功能,舵机云台为摄像头模块转动提供动力,图像信息的传输和处理、客户端控制命令数据的传输和解析及控制摄像头转动信息等均需要主控制器来控制。系统运行过程中的重要信息通过显示屏显示。

图2 系统硬件框图

2.1 主控模块

采用Raspberry Pi 3B +微型计算机为主控板,具有较强的硬件扩展能力。Raspberry Pi 微型计算机搭载了无线网卡、Ethernet 网口、摄像头串行接口(Camera Serial Interface,CSI)、40 管脚通用输入与输出(General-purpose input/ output,GPIO)等扩展硬件,具有较强的硬件扩展能力。在Raspbian 操作系统的配置界面中进行使能摄像头和内置集成电路(Inter-Integrated Circuit,I2C)总线初始化硬件接口。

2.2 外围器件驱动模块

由于主控制器件的GPIO 带负载能力有限,外围器件的驱动需要单独的电源,以保证运行稳定和安全。并且外围器件需要接口方便插拔调试、固定舵机和有机发光二极管(Organic Light-Emitting Diode,OLED)显示屏等,因此为外围器件附加了带插拔接口的驱动板。驱动板原理图如图3 所示。5 V直流电源为舵机提供动力。舵机和OLED通过线缆连接到驱动板上的插头母座。

图3 驱动板原理图

2.3 摄像头云台模块及其机械结构

采用Raspberry Pi配套CSI 接口高速率摄像头模块(Camera Module V2)采集图像信息。为让系统中摄像头视觉范围提升明显,需要增加摄像头在空间的自由度和每个自由度上的转动范围。搭建摄像头云台可以明显提升摄像头的视觉范围。云台的转动动力来自型号为sg90g的舵机对外输出的力矩。云台的两个自由度转动轴相互垂直,舵机输出轴为转动轴。云台机械结构示意图如图4 所示,图中2 个舵机分别控制云台2 个轴的转动。

2.4 显示器模块

系统运行时有一些重要信息,但主要是文本信息,信息量较小。显示该类信息的需求对显示屏大小和色彩要求较低,采用OLED 显示屏会更加轻薄,功耗更低,反应速率更快。

2.5 整体机械结构设计

系统整体硬件包括摄像头云台、微型计算机、外围器件驱动板、OLED 显示屏模块。在机械结构的分布上,将摄像头云台设计为一个整体(见图4),微型计算机和外围器件驱动板组合成一个整体,OLED 显示屏连接在外围器件驱动板上。其中微型计算机和外围器件驱动板组合后的机械结构如图5 所示。共分为3层,最上层是支架板,其功能是风扇支架和舵机云台支架;中间一层为Raspberry Pi 3B +主控板;最下层为外围器件驱动板,为系统舵机、OLED 显示屏器件提供接口。

图4 云台机械结构示意图

图5 安装组合图

3 软件设计

3.1 摄像头脚本开发

摄像机模块通过树莓派板载CSI 连接器连接到Raspberry Pi上,CSI接口如图6 主控电路板中红线标注所示。脚本主要采取循环缓存采集图像文件的方法,实现了“流视频技术”实现实时显示效果,服务器会持续不断地向客户端推送图像信息。

为了防止出现视频画面卡顿的现象,需要保证摄像机图像信息的数据大小与网络传输速率相匹配,因此,采用改变采集图像信息时每一帧的大小和位置方法。在该脚本中对采集的图像做了一个初始化,包括图像的分辨率、图像的水平和垂直翻转,通过调整图像数据的大小以适应网络传输速度。

图6 Raspberry Pi CSI总线接口

3.2 二自由度舵机控制的软件设计

舵机是一种伺服电机,其输出轴的位置可以不断变化并可以保持。其结构包括小型直流电动机、控制器、减速齿轮组、功率放大器、必要的固定器件以及外引线组成,采用闭环控制,其控制结构框图如图7所示。

图7 舵机控制系统结构框图

本文舵机控制系统执行位置控制,输入的控制信号是给定舵机舵面位置的脉冲信号,通过与反馈环节电位器检测的当前舵机舵面位置脉冲信号进行比较获得偏差,控制器对偏差进行调整后由功率放大器放大驱动直流电动机转动,带动与直流电动机机械连接的减速齿轮组转动,并且带动与减速齿轮组输出端相连接的同轴输出轴转动相应角度,达到按照偏差调整舵机舵面位置的目的。其中,作为反馈环节的电位器与输出轴相连,将检测到的位置脉冲信号反馈给输入端,与输入信号作比较,以此实现闭环控制。当输入信号(给定的位置脉冲信号)与电位器反馈的位置脉冲信号相同时,舵机就保持当前位置。当输入信号与电位器反馈的位置信号不同时,舵机将会继续转动直到到达指定位置停止并保持该位置。

舵机的控制信号需要周期为20 ms 的脉宽调制(Pulse-Width Modulation,PWM)脉冲信号,该脉冲高电平范围为0. 5 ~2. 5 ms[16],即占空比范围为2. 5% ~12. 5%,不同占空比的PWM 脉冲对应着舵机不同的位置0 ~180°。通过Raspberry Pi产生指定的PWM脉冲作为舵机的控制信号。舵机控制效果是线性的,但在实际使用过程中,由于生产舵机个体之间零部件的差异、减速齿轮的磨损、负载的变化等影响因素的存在,舵机的机械特性并非是严格线性的。为在实际控制过程中精确的控制舵机的位置角度,本文对实际的舵机机械特性做了线性矫正。矫正方法是采用实际测量数据拟合的方法,根据测试数据获得控制摄像头左右转动的1 号舵机和控制摄像头上下转动的2 号舵机拟合公式:

式中:y为占空比;x为转动位置。波形如图8 所示,R2为拟合系数。摄像机二自由度转动控制软件设计流程图如图9 所示。

图8 舵机拟合机械特性

图9 舵机控制脚本程序流程图

3.3 Web服务器的设计

本设计采用在主控微型计算机Raspberry Pi 上搭建Flask Web 服务器的方法,编写Web 应用程序(Application ,APP),建立与客户端的通信,实现图像信息的发送和控制信号的接收和处理。所编写的Web程序以Flask 路由功能为核心,建立与硬件脚本的联系,接收到客户端的命令后,通过相应的路由调用函数控制硬件来实现服务器与客户端的交互。核心程序控制框图如图10 所示。

图10 Web程序流程图

程序运行启动后,会一直询问8080 端口是否有局域网内的客户端访问。当Web 服务器与客户端建立连接后,服务器会发送数据包给浏览器客户端,浏览器把接收到的数据解析成图形界面给用户。同时服务器会启动摄像头模块的脚本,并不间断向客户端发送图像信息,客户端用户可以看到实时的流视频。客户端上服务器传回的页面中除了采集的图像信息,还有舵机的控制按钮和舵机位置显示的信息。用户通过操作舵机的控制按钮,向服务器发送请求,服务器在接收到舵机的控制请求时,启动控制舵机的脚本。脚本运行后控制舵机改变安装有摄像头的二自由度云台位置,通过无线网络控制摄像头云台。舵机控制脚本停止后,服务器将脚本返回的舵机位置参数打包成Java 脚本对象简谱(JavaScript Object Notation,JSON)数据格式推送给客户端。

3.4 Web前端开发

前端网页的开发集成超文本链接标示语言(Hypertext Markup Language,HTML)、层叠样式表(Cascading Style Sheets ,CSS)、Java 脚本以及Ajax 等语言,共同实现客户端与服务器交互过程中网页站点的搭建,利用Ajax异步刷新技术实现良好的网页动态刷新、实时图像信息和舵机当前时刻位置信息的显示。

4 功能测试

本系统在开发时接入了键盘、鼠标、显示器,可以直观地查看系统的信息,通过自发光24. 384 mm 的OLED显示屏显示系统的信息。利用Luma. oled 库编写驱动OLED的脚本,通过OLED 显示屏显示本系统服务器地址、随机存取存储器(Random Access Memory,RAM)使用情况和中央处理器(Central Processing Unit,CPU)温度信息。运行结果如图11所示。

根据整体功能需求,系统上电后,需要自启动的脚本程序是Flask服务器APP和OLED驱动脚本。本文采用配置桌面自启动脚本的方法实现脚本程序的自启动。

图11 OLED运行结果

在完成系统的设计后,对系统进行测试,测试的结果运行正常,所有功能均能正常实现。系统上电后,开机指示灯闪烁,正常运行后系统的OLED屏幕点亮,信息显示完整。并通过OLED显示屏上显示的网络之间互连的协议(Internet Protocol,IP)地址,使用同局域网内的客户端访问系统搭建的服务器:①流视频传输正常;②通过网页控制舵机转动,舵机响应正常,如图12 所示;③网页及时反馈舵机位置并正常显示,客户端的前端页面显示如图13 所示。通过对系统的测试,检验系统功能能够正常实现。

图12 摄像机试验演示机

图13 系统测试时前端页面显示

点击图13 所示页面中的按钮时,客户端向服务器发出POST 请求,请求的内容为对舵机控制的数据。当POST请求成功时,获取服务器返回舵机位置数据,对POST请求返回的数据解析,并将结果进行计算,得出二自由度舵机的位置,通过Java 脚本刷新显示舵机位置的状态条,在网页中直观的展示舵机的位置。

5 结 语

本设计实现了自由转动摄像头舵机控制系统,以微型计算机Raspberry Pi 为核心搭建Web 服务器,移动智能设备客户端通过访问该服务器,可以查看摄像机采集的实时画面,并实时控制摄像机的舵机云台二自由度转动摄像头,扩大摄像头的视野范围。

本设计通过局域网内的移动智能设备客户端连接本系统,用户在移动设备客户端收到系统传送的实时视频,并通过网页控制舵机,舵机能正确地响应客户端的控制,网页中舵机位置状态栏也能正确反映舵机的实际位置。本系统主控板板载的通信串口较多,硬件接口丰富,具有较强的扩展能力,可以实现与其他设备的组合或者本系统的拓展,具有较强的兼容性和较大的开发意义。

猜你喜欢

云台脚本舵机
酒驾
帮我买云台
安奇奇与小cool 龙(第二回)
Help me buy a…Tripod head帮我买云台
含齿隙弹载舵机的全局反步模糊自适应控制
基于STM32的无线FPV云台设计
基于dsPIC单片机的飞艇舵机控制实现
当液压遇上悬臂云台 捷信GHFG1液压悬臂云台试用
快乐假期
小编的新年愿望