




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
老年照护机器人中控系统开发摘要:伴随着人口老龄化的愈发严重,护理机器人已成为老龄化阶段解决养老问题的重要手段之一。快速进入老龄化社会的中国,由于长期的计划生育政策导致目前可以用于老年照顾的劳动力相对短缺,因此中国智能机器人从事老年照顾有着迫切的需求。本毕业设计运用树莓派,外接USB摄像头通过OpenCV和Tensorflow以及ssd_mobilenet_v1_coco的训练模型进行训练来实现对外界的检测以及人脸和物体识别,再通过PCA9685模块来驱动电机实现摄像头的近360度的旋转以及目标追踪,再通过百度语音API接口以及图灵机器人API接口,配合搭载在树莓派上的喇叭和麦克风实现语音对话及语音控制。关键词:物联网技术;养老;树莓派;opencv;tensorflow;语音技术
目录14428第一章绪论 113891.1研究的背景及意义 1154831.2老年护理机器人发展历史及现状 2168351.3研究内容及及系统介绍 225351第二章相关技术简介 368062.1软硬件主要技术及运行环境 3219562.2相关开发技术 389212.1.1RaspberryPi 349102.1.2Python 32872.1.3OpenCV 3269912.1.4TensorFlow 333992.1.5Spyder 4291452.1.6语音识别 4247062.1.7语音合成 422878第三章系统需求分析 547253.1设备功能需求分析 5260143.2系统功能需求分析 5298343.2.1安卓App功能需求 5254703.3总体性能需求分析 525774第四章系统设计 6213524.1网络拓扑图 6233064.2功能模块 722154.3系统核心功能流程设计 812921第五章老年照顾机器人中控系统设备设计与制作 9236715.1老年照顾机器人中控系统原理图分析 9270865.1.1电源电路 10232355.1.2PCA9685舵机控制电路 10194945.1.3主控模块驱动电路 11157845.1.4按键模块驱动电路 1284025.1.5蜂鸣器 13302595.1.640pin接口 13183435.2制作设备的电子元器件 14133035.2.1主控模块 1432505.2.2树莓派拓展板 15108625.2.3树莓派usb高清摄像头 1557935.2.4步进电机 1626265.2.5麦克风 16116185.2.6扬声器 1756115.3实物模型图 1717091第六章功能实现 18133926.1安卓App实现 18135996.1.1连接登入 18146586.1.2功能选择 1969296.1.3实时视频监控 19132216.1.4实时反向控制 20178066.1.5语音播报 20322956.1.6联系我们 214196.2人脸识别的实现 21107736.3物体识别的实现 24289936.4语音对话的实现 2537506.5关于功能流畅性的解决办法 25108第七章系统测试 277.1屏幕适配108测试 28495第八章结论 2923635参考文献 121407致谢 2第一章绪论物联网的本质是通过网络,对人们感兴趣的物体的状态进行实时了解,实时控制[1]。物联网是指将各种实时信息获取设备或设备集合体,通过各种接入网与互联网、广电网或电信网结合起来所形成的一个巨大的实时信息收集,信息传输,控制及信息服务的一体化的网络[2]。而物联网的产物——机器人具有独立性或辅助性,可以帮助照顾老年人,并成为提高老年人护理服务水平的重要途径。在大数据和云计算平台的支持下,互联网将成为老年人的“保姆”,机器人也将成为神奇的个人健康顾问。随着它们智力的提高,它们有一天将成为迪斯尼动画里的大白[3]。所以,老年照顾机器人的开发显的尤为重要。1.1研究的背景及意义随着人口老龄化的不断加剧,机器人已经成为解决老年人老龄化问题的重要手段之一,即使老年人的活动能力下降,机器人也可以用于活动身体和参与社会生活。护士可以减轻负担,为老年人提供更好的护理[4]。在中国,由于长期的计划生育政策,老年人的照顾工作岗位相对较少,因此在中国老年人的护理中迫切需要智能机器人[5]。不过,市场中专业的护士越来越少,专家表示,未来用工荒只会更加严重,随着机器自动化的逐步发展,一些人能做的事情,比如从仓库里找到特定的产品,都能够被机器人替代,这些机器人还将帮助老年人[6]。作为一个机器人爱好者,我认为人工智能不仅具有照顾老人的潜力,减少了他们的社会疏离感,增加了老人的独立性[7]。当然,政策法规的支持能加速机器人的发展。应鼓励企业以服务为宗旨,将生产,教育和研究结合起来。将来,利用人工智能的语音识别,深度学习,数据算法等技术人们可以根据自己的喜好定制它。如果有一个喜欢聊天的老人,则制作一个“很会说话的”的机器人;一些人关心国内外的时事,可以有一个可以实时播放世界重大事件的机器人;甚至还有书法,绘画和舞蹈机器人[8]。一项欧洲调查显示,有69%的人对机器人持积极态度,而长期独居的老人容易出现心理问题(孤独,沮丧,焦虑等),具有陪伴功能的护理机器人可以缓解老年人的心理问题。各国为此目的制定了诸如社会援助之类的支持政策,并在社区服务和管理方面具有相关经验[9]。所以,在这样一个大环境下,本设计就显得尤为重要。通过树莓派作为开发板,实现老年照护机器人中控系统的开发。可以检测到人脸,分辨已识别和未识别的人,还能通过机器人让家里人在外地也能实时看的到老人的状况,并通过机器人的视频直播实时监测老人的身体状况,实现目标追踪以及物体识别,和老人进行对话达到陪伴与检测共存的功能。而作为机器人最为重要的中控系统将完成机器人的大量工作,便显得尤为重要。1.2老年护理机器人发展历史及现状国内的护理机器人起步较晚且与国外研究存在很大差别。作为一个总人口超过14亿的国家,中国老年人数量也位居世界前茅。尽管近年来,随着经济的持续发展,我国国民经济收入实现了质的飞跃,但养老金制度的不完善发展已成为影响社会和谐的严重问题。因此,迫切需要开发人工智能的老年人护理服务产品,促进“人工智能+老年人护理”服务体系的全面建设,使得广大老年人的需求得到更好的满足[10]。同时,我们也在不断进步。2016年的《麻省理工学院技术评论》网站公布数据表明中国的机器人革命排名第一,这说明了中国目前正在进行“大胆的机器人革命”。由杭州的一家技术公司开发的“Artie”机器人,管理人员可以通过移动客户端或机器人机壳的触摸屏将机器人引导给老人提供服务[11]。智能老人机器人已经拥有各种智能老人护理服务,例如智能护理,家庭互动和远程医疗。它们也可以转变为移动电视,以缓解老年人的无聊感。《2012年机器人产业市场趋势》报告显示,在日本于2015年宣布的“新机器人战略”中,服务业和医疗保健占一半。可以观察到,机器人在这两个领域都有着广阔的前景。索尼的“人工智能机器狗”能够表达六种情绪通过改变尾巴和眼睛的颜色。以下举例一些外国案例。美国:IBM的“沃森”人工智能系统英国:BritishLifeTrust计划通过在地板和家用电器中植入电子芯片设备,来建造一栋完全智能的老年人公寓,以帮助老年人诊断疾病。日本制造商宣布,预计将在2016年10月推出价格约为990元的聊天机器人。未来,智能机器人技术将沿着自主性,大数据,智能通信和自适应发展三个方向发展[12]。但如今国内外还没有完整成型的老年护理机器人,虽各有成效,但尚未成型。这意味着老年护理机器人的市场将会很庞大。1.3研究内容及及系统介绍 本毕业设计主要包含硬件设计与制作,安卓App的设计与实现两个部分。老年照顾机器人中控系统开发:运用树莓派,外接USB摄像头通过OpenCV和Tensorflow以及ssd_mobilenet_v1_coco训练模型进行训练来实现对外界的检测以及人脸和物体识别,再通过两个PCA9685驱动电机来实现摄像头的接近360度的旋转以及目标追踪。再通过百度语音API和喇叭和麦克风实现语音识别和语音播报。运用了Python语言进行相关的技术编写。安卓APP开发:使用Androidstudio软件来编写,通过TCP、UDP的连接方式实现对安卓APP的功能开发。第二章相关技术简介2.1软硬件主要技术及运行环境开发工具运行的操作系统为Windows10专业版中文操作系统,树莓派3B+作为主要的开发工具载体,使用SD卡下载操作系统即可使用,由于设备的完整性,只需将相关的元件按照其信号输出组成就能实现,在树莓派上使用Spyder软件编写Python语言的开发。另外,本设计使用AndroidStudio软件来开发安卓APP。2.2相关开发技术2.1.1树莓派树莓派是世界上最小的台式机,虽然它体积很小但是,但是它的功能相当于一个电脑。中文名为“树莓派”。由于它是开源的,网上可以获取到很多配套的硬件模块、开源代码和开发教程。软硬件资源很完备,社区论坛支持广泛,在物联网应用中发挥着巨大的作用[13]。2.1.2PythonPython最初被设计主要是用来编写自动化脚本,随着版本的更新,新特性的增加,它所能做的事情有很多。Python语言非常的简洁,由于它的易读性让更多的不会编程的人能够很好的入门,开源也使它的生态很齐全,各种模块接口应有尽有。2.1.3OpenCVOpenCV的全称是:OpenSourceComputerVisionLibrary它是一个跨平台的计算机视觉库,可以运行在多种操作系统上。它轻量级而且高效,同时提供了多语言的接口,在图像处理和计算机视觉方面有着通用算法。同时它也是开发计算机视觉应用中最流行的库之一[14]。2.1.4TensorFlowTensorFlow是一个基于数据流编程的符号数学系统,被广泛应用于各类机器学习算法的编程实现,它是世界上最受欢迎的开源机器学习框架之一。在树莓派上可以通过它来实现一些基础的图像处理,比如在物体识别中核心算法就是它提供[15]。2.1.5SpyderSpyder是一个很方便并且功能强大的编译器,在使用Spyder时,可以直观的看到编译的结果,更方便的经行断点处理。可以像使用Pythonshell一样灵活。2.1.6语音识别在本系统中主要采用百度语音API的接口来实现语音识别。把声音类似于用帧的方式经行切割,变成很多小段,然后把波性转换,再做声学特征提取,切割它采用了类似神经网络的深度学习算法来取代了以往的识别模块,从而大幅提升了识别效率。之后把多维向量用矩阵来表示,绘制成向量图,根据矩阵的大小把其转换成对应的文本。这便是语音识别的基本原理2.1.7语音合成其原理主要是对要合成的文字经行分析,提取其波形信息,根据结果,通过一定的方法生成语音波性。再通过对文字上下文的联系建模,将波性合成的更符合声学模型,最后用声码器恢复语音波性[16]。本毕设采用的是百度语音API提供的接口来实现语音合成
第三章系统需求分析3.1设备功能需求分析本中控系统硬件运用树莓派,外接USB摄像头通过OpenCV和Tensorflow以及ssd_mobilenet_v1_coco训练模型进行训练来实现对外界的检测以及人脸和物体识别,再通过两个PCA9685驱动电机来实现摄像头的接近360度的旋转以及目标追踪。使得该中控系统能够识别家人和其他人,并通过物体识别配合老年护理机器人的其他部分帮助老人完成一些动作。通过百度语音API接口和扬声器及麦克风实现语音识别和语音播报。同时运用图灵机器人的接口来实现与老人的日常对话功能。由于Python语言的接口比较丰富且易于实现人工智能的便携性所以需运用Python语言进行相关的技术编写。3.2系统功能需求分析3.2.1安卓App功能需求安卓端App的功能:安卓APP是控制本设备的用户终端。用户通过App可以连接设备登入后,通过功能选择来实现实时视频监控、实时反向控制、联系我们等,使得子女在外也可也了解到老人在家里的状况。具体功能如下。(1)连接登入:通过Socket的连接方式来实现安卓App端和硬件端的连接。手机端通过输入树莓派IP、以及端口的地址进行连接登入。(2)功能选择:在首页下用户可选择跳转到控制界面、语音播报界面、联系我们等界面.(3)实时视频监控:用户可以实时的查看到硬件端的视频,通过UDP的连接传输,来实现将树莓派的视频在app端实时的显示,这样能够看到老人的状况。(4)实时反向控制:用户可以实时的反向控制硬件的运动,通过TCP的连接传输,实现对树莓派的云台舵机的控制。(5)联系我们:用户可在此界面查看我们的详细联系信息,通过此联系方式向我们咨询。3.3总体性能需求分析老年护理机器人中控系统设备的性能需求如下。(1)确保摄像头捕捉的景象清晰、延迟性低。(2)确保人脸识别准确率和物体识别精度高。(3)树莓派发送数据到服务器,安卓App端收据通过网络获取的及时性。(4)确保语音对话功能的智能性,能够与老人经行正常的交流对话。(5)设备低功耗、体积小且部署方便,能够安全稳定运行。(6)设备操作起来较为容易,界面简单并且能够更好的直接入手。
第四章系统设计4.1网络拓扑图树莓派硬件只需接上电源及网络,硬件便会自动进入工作模式,将摄像头采集到的图像传输到云服务器。而安卓App端可以通过查看到实时视频监控,第一次使用App需要进行IP和端口的输入绑定,进入后即可通过该App反向控制,语音播报等功能。网络拓扑图如图4-1所示,图4-1中控系统拓扑图4.2功能模块本设备的功能模块主要是安卓App,如图4-2所示。安卓App功能模块主要功能有:连接登入、功能选择、实时监控、实时反向控制、语音播报、联系我们。图4-2功能模块图4.3系统核心功能流程设计系统的核心功能是在实现人脸识别以及物体识别的基础上,通过与语音对话的相结合使得用户可以通过与设备的语音对话来让老年护理机器人执行相应的操作。在实现人脸、物体识别的基础上对其调用方式经行优化,使得能够通过语音对话来执行。同时再配合安卓App端的实时视频监控以及反向控制功能,使得该系统更加完善。
第五章老年照顾机器人中控系统设备设计与制作5.1老年照顾机器人中控系统原理图分析本设备的硬件核心使用的是树莓派3B+,它体积不大,仅有校园卡左右的大小但是功能强大,具备电脑的大部分功能且价格相对不高。作为硬件可以更好的支持老年照顾机器人中控系统。如图5-1所示。图5-1整体电路设计5.1.1电源电路拓展板集成了5V稳压电路输出,提供了多种电源管理方案:防反接保护,电池低电压保护,可以有效保护电源和拓展板。电路如图5-2所示。图5-2电源供电模块5.1.2PCA9685舵机控制电路通常来说舵机由三个引脚控制,一个VCC,一个GND以及一个SINGAL,树莓派只有29个GPIO引脚,每个舵机需要一个SINGAL引脚,这样下来是浪费资源。通过PCA9685来控制电路就显得合适很多,它通过内置的IIC即PWM驱动和一个时钟协议便可以控制16个舵机。电路如图5-3所示。图5-3PCA9685舵机控制模块5.1.3主控模块驱动电路树莓派3B+的主控模块为BCM2839,电路如图5-4所示。图5-4主控模块5.1.4按键模块驱动电路按键模块通过引脚GPIO检测按键左侧来电平实现,通过其高低电平来判断是按下还是松开状态,电路如图5-5所示。图5-5按键模块5.1.5蜂鸣器蜂鸣器需要较大电流,采用三极管驱动,判断其GPIO的高低电平来判断是出于发声状态还是关闭状态,其电路如图5-6所示。图5-6蜂鸣器模块5.1.640pin接口树莓派3B+40pin引脚可以用作外接各种不同的元器件,但是接口也有限,可以使用面包板的插口作为扩展插口。功能图如图5-7所示。图5-740pin外设接口5.2制作设备的电子元器件5.2.1主控模块树莓派的主控模块主要采用1.2GHz四核64位ARMv8处理器,在其中有蓝牙模块和WiFi无线模块,有着4个USB2.0端口,40针的扩展GPIO引脚等,可以通过微型SD端口装载内存卡扩展内存,如图5-8所示。图5-8主控模块5.2.2树莓派拓展板该树莓派拓展版是为了拓展树莓派的IO引脚接口做准备,上面搭载了6路舵机接口,以及2路直流电机接口,并提供了更安全的供电系统。示意图如图5-9所示。图5-9树莓派拓展版5.2.3树莓派usb高清摄像头在本设计中,树莓派通过摄像头采集到的画面经行处理,来实现图像识别的功能。采用的是免驱的usb高清摄像头,也可采用类似的夜视高清摄像头。示意图如图5-10所示。图5-10usb高清摄像头5.2.4步进电机通过金属舵机接到拓展板的接口,使用PCA9685模块来实现对电机的精确控制,达到云台的近360的旋转。示意图如图5-11所示。图5-11金属舵机5.2.5麦克风本设计采用麦克风作为语音对话时的声音采集口,用这种免驱的usb麦克风,不用安装驱动便可以直接使用。示意图如图5-12所示。图5-12麦克风5.2.6扬声器本设计通过PAM8403模块外接8Ω2W的2pin扬声器,来实现语音对话时的语音播报的功能。示意图如图5-13所示。图5-13扬声器5.3实物模型图实物图模型示意如图5-14所示.图5-14实物图第六章功能实现6.1安卓App实现安卓App是用户使用本设备的控制终端,通过连接后可以在App上实时视频监控,实时反向控制,并进行语音播报。6.1.1连接登入App连接登入界面,如图6-1所示,输入对应的网络地址和通信端口完成App端与硬件端的TCP连接与UDP连接。图6-1连接登入6.1.2功能选择App首页如图6-2所示,在首页下用户可跳转到控制界面、语音播报界面、联系我们等界面。图6-2功能选择6.1.3实时视频监控监控界面如图6-3所示,用户可以通过此界面实时查看到硬件端实时传输的画面。图6-3监控界面6.1.4实时反向控制控制界面如图6-4所示,用户可以通过此界面实时控制硬件端云台的近360度的旋转控制,运动舵机采用步进电接,通过编程设置,每点击一下舵机旋转15度,超过预先测试好设置的极限蜂鸣器会报警提醒。图6-4控制界面6.1.5语音播报用户可以输入要播报的内容,点击发送,硬件端会通过扬声器语音播报内容,比如:提醒老人用药之类的提醒。界面如图6-5所示。图6-5语音播报界面6.1.6联系我们联系我们的界面如图6-6所示,用户可在此界面查看我们的详细联系信息,通过此联系方式向我们咨询。图6-6联系我们界面6.2人脸识别的实现人脸识别,是基于人的脸部特征信息进行身份识别的一种识别技术。本设计中的人脸识别基于人脸识别框架Dlib,了解过国产的Face++,功能挺强大,可以返回106个高精度关键点,但是其不开源,于是唯有退而求次。选择了Dlib,不仅开源,而且提供多个平台,多种语言版本。在树莓派端安装好所需的环境:Dlib、Numpy、Lscikit-image、opencv以及python的3.6版本。通过三个步骤实现人脸识别;分别时是摄像头的人脸录入,提取特征建立人脸数据库,最后调用摄像头进行人脸识别。(1).摄像头的人脸录入;通过调用Dlib库的的正向人脸检测器dlib.get_frontal_face_detector()、68点特征预测器shape_predictor_5_face_landmarks.dat将检测到的人脸信息采集录入,将其灰度化后把人脸图像数据存储到以人名命名的文件夹,用于第二步的人脸数据库建立。示意图如图6-7所示。图6-7人脸图像信息采集(2).建立人脸数据库:将第一步采集到的人脸信息中提取人脸特征存入csv,这一步是将人脸图像的128D特征通过Dlib的人脸识别模型face_recognition_model_v来提取出来,得到每张图片中人脸的128D特征,取得所有特征的均值,写入对应的人脸数据特征csv中用于之后的人脸比对。人脸特征均值提取示意图如下图6-8所示。图6-8人脸特征均值提取(3).调用摄像头实时视频流进行实时人脸检测,通过人脸识别模型face_recognition_model_v1提取出摄像头中人脸的128D特征,存储到features_cap_arr,遍历捕获到的图像中所有的人脸特征features_known_arr和实时捕获的人脸特征features_cap_arr对比,计算两个128D向量间的欧式距离。依据预先设置的阈值0.4来判断,若欧式距离大于0.4,则和预设人脸数据库的特征差异比较大,判定摄像头中的人是未知unknow;若欧式距离小于等于0.4,则在预设的人脸数据库中找到欧式距离小的,判定摄像头中的人是数据库中的person_X。示意图如图6-9所示。图6-9实时人脸识别(4)通过python写一个脚本调用这三个文件实现快速的人脸录入以及训练。脚本运行如图6-10所示图6-10人脸识别程序运行6.3物体识别的实现在树莓派上实现物体识别是通过Tensorflow+OpenCV+摄像头来实现实时物体检测。首先要安装matplotlib库,下载Tensorflow提供的modelsAPI,再下载用COCO训练集预训练的模型,使用的是ssd_mobilenet_v1_coco(SSD是专门为速度优化过最快的网络)。做物体检测的网络有很多种,如fasterrcnn,ssd,yolo等等,通过比较不同的网络规模,每个网络都有自己的优势。由于树莓派计算能力有限,在这里,我选择了SSD和faster-rcnn模型经行对比。加载SSD模型时间:约9s(相当于开机需要9秒的时间),识别精准度还不错,能够识别日常生活中的常见物体。并能够给出相应的判断百分比。faster-rcnn模型,加载需要两分钟,由于内存不足,跑不动。由于树莓派的CPU局限性,并且没有能力GPU优化,所以无法用Tensorflow-GPU来做测试。因此SSD模型最为适合本应用的需求。物体识别程序运行如图6-11所示。图6-11物体识别程序运行6.4语音对话的实现智能语音对话的实现主要分为以下三部分:语音信号的采集:采集语音信号,以wav文件保存,通过以下命令启动树莓派录制功能:arecord-D"plughw:1"-fS16_LE-r16000-d3wav。语音信号的识别:在本设计中我用BaiduAI的语音接口向BaiduAI平台申请了一个语音识别账号,得到了API的密钥,之后需要在Python代码中填写这两个密钥,通过Python调用百度语音接口识别采集到的语音信号,并将识别出的语音信号以wav文件的形式存储在树莓派中。语音机器人的回复:读取存储识别信号的wav文件,调用Turingrobot接口,得到智能响应。智能语音识别提交的数据格式如下:Data={“format”:“wav”,“rate”:16000,“channel”:1,“cuid”:“”,“token”:tok,“speech”:wav_data,“len”:wav_length}。在语音识别的基础上,增加了一个Turingrobot接口。请求的数据格式如下所示:body={"key":Tuling_API_KEY,"info":words.encode("utf-8")}。其中,key填写的就是所申请到的机器人的apikey,info就是通过百度语音接口识别后的语音数据。r=requests.post(url,data=body,verify=True),其中的url为图灵机器人接口的路径,r为图灵机器人返回的语音数据。6.5关于功能流畅性的解决办法由于openCV、Tensorflow需要巨大的运算量,对树莓派cpu而言运算压力过大,不足以完全运行而本设计基本都是对实时视频经行的运用,所以会出现卡顿的现象。因此用了另外一种方式,即树莓派端作为视频传输的媒介,将实时视频传输到PC端,通过PC来处理视觉运算。实现方式如下:首先在PC端搭建运算所需环境,Python、OpenCV、numpy、scikit-image、Dlib、scipy、pandas、Tensorflow。安装好PC端的环境之后就是将树莓派上的视频流传输到PC上,即树莓派直播推流有多种实现方式,在此举例三种:(1)使用raspivid工具推流。该工具已经默认集成到了树莓派之中,raspivid-t0-w1280-h720-fps20-o-|nc-k-l8090。该命令执行玩后不会出现任何打印信息即可。把mplayer工具安装在局域网内的电脑上,然后执行命令,mplayer-fps200-demuxerh264esffmpeg://tcp://9:8080。将出现一个窗口,显示实时的树莓派视频流,延迟约200毫秒。虽然该种传输方式延迟较低,但是要树莓派专属接口得摄像头,且接收方式单一,不能灵活的调用。(2).调用v4l2接口捕获视频+live555实现rtsp服务。首先安装live555,安装其库文件,再编译执行工具。利用vlc类似的工具播放rtsp流:rtsp://树莓派IP:9554/webcam。测试效果:良好,延时和图像都可以,但很难实现,会出现不同的缺包,并且很难检查错误位置。该种实现方式同样需要树莓派专用摄像头来实现传输,且接收方式必须要用stsp视频工具来播放,不方便灵活调用(3).采用MJPEG流媒体模式进行视频监控,配置过程简单快速,但MJPEG流媒体不支持树莓派CSI接口的摄像头,,所以只能使用USB摄像头。首先在树莓派上安装MJPG-streamer,在github上下载mjpeg-streamer安装,在树莓派上开启传输服务:cdmjpg-streamercdmjpg-streamer-experimentalcdmjpg_streamer-i",cdinput_uvc.so"-o",cdoutput_http.so-w./www"。在PC端可通过浏览器查看传输是否成功:http://IP:8080/?action=stream。经过测试,该种传输方式的延时大约在220ms,基本上可以满足要求。通过以上的三种视频转播方式的对比,本设计使用了最后一种:mjpeg-streamer
的方式,理由是本设计使用的是usb高清摄像头作为视频采集,且该方式能够较为灵活的在代码中调用,较为贴合本设计。接下来是设置MJPG-streamer的开机自启动:在系统的主目录,创建一个新的可执行sh文件,输入打开指令并退出保存,最后授予可执行权限:sudoChmod+X/home/pi/videostart.sh。然后创建另一个目录并输入以下命令:sudomkdir.config/autostart。再新建一个文件,文件内容如下:
[DesktopEntry]
Type=shell
Exec=/home/pi/videoStart.sh。最后保存退出,这样便可以每次开机自启动。成功之后,在Python文件里创建摄像头对象:video_stream_path="9:8080/?action=stream"
cap=cv2.VideoCapture(video_stream_path)这两行代码的目的是将OpenCV的调用本地摄像头中的0端口改为video_stream_path,并对video_stream_path给与视频接收地址的赋值。通过这样的方式便能够实现将树莓派端的视频实时传输到PC,通过PC更为强大的CPU来做复杂的运算。第七章系统测试由于App端的使用客户各不相同,系统和屏幕的大小以及屏幕密度碎片化的出现,就容易产生在不同手机上显示的内容不一样,为了给用户带来一致的体验效果,所以需要对不同屏幕进行UI适配。首先就是对图片资源的适配,在AndroidStudio的资源目录res目录下,把不同分辨的的图片放置于不同分辨率的的图片文件夹下。以便于对图片更好的适配。其次便是布局方式的选择,为了布局方便选择了能够根据屏幕大小来适配UI的LinearLayout线性布局,当两个或者更多的的布局占满屏幕时,子布局使用了权重适配,以便于达到适配UI的目的。同时在多元素的界面采用了RelativeLayout的相对布局,不采用绝对布局,因为绝对布局的适配性很差。相对布局的子控件之间使用相对的方式来排列,因为其各个视图之间的位置不会随着屏幕的大小而产生改变,而线性布局在复杂的元素中无法准确的把握好各个子视图的位置,会导致其紧贴排列。同时采用尺寸限定符layout-large创建一个文件来完成让屏幕在尺寸大于7英寸时采用适配平板的双面板布局,小于时采用适配手机的单面板布局。内容如图7-1所示。图7-1小于7英寸屏幕适配 适配尺寸大于7寸平板的双面板布局如图7-2所示。图7-2大于7英寸屏幕适配具体采用了dp+自适应布局+weight比例布局直接适配,这是一种最原始的Android适配方案。这能保证写出来的界面适配绝大部分手机,但部分手机仍然需要单独适配,因为不是所有的1080P的手机dpi都是480这样会导致相同分辨率的手机中有可能是300px。接下来是实例测试,通过对华为荣耀20、红米note5、小米9、华为mate30的4个机型进行功能性测试。如表7-1所示是APP客户端在不同型号和不同尺寸大小的手机进行登陆、反向控制、语音播报等一些操作的测试数据,测量结果显示各项适配正常。表7-1APP客户端测试手机型号屏幕大小连接登入功能选择反向控制语音播报华为荣耀206.26英寸正常登入正常正常正常红米note55.99英寸正常登入正常正常正常小米96.39英寸正常登入正常正常正常华为mate306.62英寸正常登入正常正常正常第八章结论本次毕业设计本人通过坚持不懈的努力与学习,克服了种种难题,完成了老年护理机器人中控系统的设计与开发。本次毕业设计的制作让我对物联网工程专业知识有了更深入的了解,专业技术得到了很大的提高,独立完成一个项目,对我今后在工作中的影响颇深。本次的毕业设计的制作也是我大学中难得的一次项目经历,在此之前安卓知识我学得不是很好,但是通过本次毕业设计的制作,对我的安卓知识有了很大提高,例如:TCP、UDP的传输。硬件知识,在大二实习培训的时候有学过Stm32单片机,但是没有接触过树莓派,本次毕业设计硬件用的是树莓派,需要用Python语言编写,通过网络上的教程自己学习了一下,对Python语言有了些了解,语言格式非常严格,总之毕设制作的过程让我对物联网专业有了更深的了解,是一次不可多得的经历黄思坦:老年照护机器人中控系统开发2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 味精购货合同范本
- 包干合同和单价合同范例
- 合同范本排版
- 个人档案合同范本
- 养殖黄鱼购买合同范本
- 个人贷款业务合同范本
- 与用工单位合同范例
- 原料水泥供货合同范本
- 企业简易合同范本
- 买方 土地居间合同范本
- 养老院院感管理与应急预案
- 通站(2017)8012 铁路站场排水构筑物
- 2024-2025学年上学期上海初中英语七年级期末模拟试卷2
- 2024-2025学年上学期河北初中英语八年级期末试卷
- 极端天气下的新能源电力系统电力电量平衡体系
- 成人重症患者人工气道湿化护理专家共识解读教学课件
- 建设工程项目质量控制实务
- 教育技术学导论 黄荣怀(第2版)学习通超星期末考试答案章节答案2024年
- 英语课件音标教学课件
- 2024年湖北省中考语文真题(学生版+解析版)
- 装维服务年终总结
评论
0/150
提交评论