自跟随拍摄机器人的研究

2021-05-21 08:41西北民族大学电气工程学院刘宇辰张佳慧
电子世界 2021年8期
关键词:树莓舵机手势

西北民族大学电气工程学院 刘宇辰 陈 杰 姚 奥 张佳慧

随着嵌入式控制技术的飞速发展,机器人的使用已经渗透到了各个方面,移动机器人成为其中重要的一部分。尤其是在生活中,机器人的智能应用已经越来越有利于生活。但市场上目前很少有自动跟拍机器人这一方面的研究。目前的拍摄设备无论是手持拍摄还是固定点摄像机拍摄,由于拍摄目标位置不佳或拍摄目标移动而导致拍摄不清或者拍摄效果不佳,其存在的缺点就是耗费了大量的人力和物力,也浪费了时间。特别是在军事、医学等记录方面,传统的拍摄记录方法制作的视频可能因为偏转、调焦等问题,对捕捉、记录的对象不能做到准确的记录,出现记录的目标不在视频中心或者拍摄模糊等问题。

为了解决这个问题,本课题拟设计一种可以自动捕捉识别拍摄目标且可以跟随目标移动的机器人,它还可以根据目标的手势进行拍照、暂停等功能,达到更加自由拍摄的目的。该机器人是一种新型的智能拍照机器人,可以尝试以此开辟新的商业市场需求领域,其可以运用到医学拍摄、课堂记录、会议记录、军事捕捉等多个场所。

1 控制系统总体设计方案

基于树莓派和OpenCV的自跟随手势调焦拍摄机器人主要包括如下几部分:视频传输模块、手势识别模块、拍摄控制模块、智能控制模块等,其核心模块是智能控制模块。树莓派是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100 以太网接口,可连接键盘、鼠标和网线;同时,其拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,其实现了图像处理和计算机视觉方面的很多通用算法。

1.1 视频传输模块

使用Raspberry pi开发板连接USB摄像头和USB无线网卡组成的视频监控系统的硬件平台,并进行交叉编译环境的安装和设置以及测试环境的配置;采用了Video for Linux two技术进行视频图像的采集;将采集到的视频图像的格式统一转换为YUV420格式,使用H.264编码技术对采集到的视频数据进行编码;采取了基于IP/UDP/RTP协议的视频传输技术,通过WIFI无线网络搭建了Raspberry pi开发平台与PC机之间的Socket通信,确保视频采集平台和PC端在同一个局域网络中,实现了两者之间视频的实时传输;在PC端通过VLC流媒体播放器来实时接收和播放开发平台上所获取到的视频图像信息,实现了无线网络视频传输的系统模型。

1.2 手势识别模块

视频录制可以根据录制人的手势进行拍照特写、暂停录制、固定点特写录制等功能,给使用者以良好的使用体验。其中,其主要运用OpenCV来采集图像,进而基于肤色对手势记性分割,继而用卡尔曼滤波算法对采集到的图像进行处理,提取手势特征后将信息反馈给系统。

1.3 拍摄控制模块

拍摄设备位置的微调控制主要包括:摄影机左、右、上、下旋转、摄影机前后伸缩。这些调控都属于小范围动作,所以驱动电机选择舵机。其功能的变化主要依据于图像处理得到的信息,转动方向由系统I/O口传输而来的PWM波控制。

1.4 智能控制模块

智能控制模块是整个跟拍系统的核心部分,它有两个功能:一方面通过传感和运算实现识别拍摄对象的移动,从而控制拍摄设备移动实现跟随;另一方面通过控制拍摄功能实现自动缩放、自动定焦、超越拍摄范围自动调节以及拍照特写图片等相关动作,其采用的基础是视觉识别。视觉识别是最近才兴起的新技术,它在智能时代可称得上是机器的眼睛,其可以代替传统传感器的应用,实现类似人脑及眼睛的功能,它被科学家称为智能化时代以及工业4.0时代最具备时代标志的创新技术。这种识别技术早已普遍运用在各行各业,这些年形状和颜色等方面的视觉识别在精度要求不高的场所也得到了推广和应用。其无需要高精度小尺度的识别效果,只需要识别展示过程中的指定形状、颜色或固定姿态。采用视觉识别无需安装任何传感器,只需要一个摄像头就可以实现,其安装和调试要求大大降低;并且,其编程语言为Python,图像处理部分为C++,这样可使其具有变通性、灵活性,更具适用性。

图1 硬件结构及信号流程

对硬件进行搭建并进行各种环境的测评分析、对软件构写并测试多种环境鲁棒性硬件设计参照图1。本项目为了达到可自由调焦的目的,使用opencv类似的可自动调焦摄像头,并在此基础上进行提取达到图像处理以及应对反应的目的。对于连接的树莓派进行编程,使其达到录制的目的并将处理结果反馈给舵机和摄像头。由于舵机会根据目标而转动,摄像头的底盘要足够重而不会对拍摄造成抖动,并且质量要在便于携带的范围之内。本项目中使用到了很多模块,不同模块用到了不同的通讯协议,所以在电路设计上要根据不同IO口所具有的硬件资源将不同模块接在合适的IO口上,以实现硬件资源的合理使用。

摄像头、树莓派、舵机等要对应输入不同的电压,所以要引入多种稳压模块达到电路正常运行的目的。

对软件及程序设计,本项目编程的计算机语言主要是C++和python,先对视屏画面分析之后再使用树莓派控制舵机转向。软件设计是本项目的核心,要通过编程对图像进行最大程度的抖动消除。目前所采用的处理方式要考虑到所捕捉物体的运动状态、形状而采取更灵敏的追踪方式,在追踪的同时也要时刻检测是否有所期望的手势出现,并及时作出反应。其中,图像处理部分为了达到更好的识别和反映效果,查阅资料后将用卡尔曼滤波算法以及粒子处理对图像进行处理,将得到的信息整合之后以PWM波的形式传送给舵机转动。程序编写时使用模块化编程,把不同模块的初始化及驱动过程封装在不同的文件中,在main文件中只实现调用的过程,不同文件中函数的调用通过对相应.h文件的引用来实现。模块化编程最大的好处就是程序的可阅读力比较强,编程思路更加清晰,对于程序的分模块调试以及程序修改也非常方便。

2 项目研究中遇到的部分问题及应对措施

由于舵机的驱动电压有明确的要求,在USB供电状态下只能为芯片供电使其正常运行,无法驱动舵机运作。使用USB进行对代码的调试,在调试完毕之后,接入11.1V的电池查看调试情况,在11.1V电池供电状态下就可以完成对舵机的供电。在调试过程中,由于有项目组成员对芯片并不是很熟悉,误删了很多库文件和已经调试好的源文件,导致了项目制作进度的缓慢,后期及时进行了调整。让项目组成员去学习一些树莓派和TensorFlow的相关入门书籍,对芯片有更深层次的了解,在之后的调试和磨合中会更加容易。

总结与展望:随着科技的不断进步,自动与智能的应用越来越受到大家的关注,如无人飞机、智能音箱、无人酒店等。因此,本项目采用基于树莓派和OpenCV设计的自动跟随拍照机器人来为大众提供更方便的拍照方式,提升大家的拍照体验。本设计打破传统的人工手机拍照和相机拍照,为大家提供更方便的拍照方式。

猜你喜欢
树莓舵机手势
挑战!神秘手势
含齿隙弹载舵机的全局反步模糊自适应控制
基于树莓派的骑行智能头盔设计
V字手势的由来
基于dsPIC单片机的飞艇舵机控制实现
基于树莓派的远程家居控制系统的设计
胜利的手势
基于高速同步485总线通信的多通道舵机控制器设计
响应面法优化红树莓酒发酵工艺
基于云模型的舵机同步控制