基于加速度传感器的老人跌倒检测系统.docx
- 文档编号:4026566
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:16
- 大小:45.12KB
基于加速度传感器的老人跌倒检测系统.docx
《基于加速度传感器的老人跌倒检测系统.docx》由会员分享,可在线阅读,更多相关《基于加速度传感器的老人跌倒检测系统.docx(16页珍藏版)》请在冰豆网上搜索。
基于加速度传感器的老人跌倒检测系统
高级操作系统期末论文
题 目基于加速度传感器的老人跌倒
检测报警系统
基于加速度传感器的老人跌倒检测报警系统
摘要:
在社会逐渐走向老龄化的今天,独自生活的老年人的行动安全已经成为社会的重要问题。
以前大多数的报警系统多采用按键式的报警方式,实际上,来年人摔倒时,常常失去自我意识,所以单纯依靠老年人摔倒后主动触发报警具备一定的风险。
随着开源的Android平台移动终端操作系统的推出,这一系统具备广泛的兼容性,为了减少老年人因跌倒造成的身心伤害,利用当前android手机集成的加速度传感器进行人体跌倒的检测,当检测到人体发生跌倒时对老人当前的位置进行定位并调用SMS将摔倒的信息和位置信息发送到预先设置的紧急联系人手机,可以提高老年人摔倒报警的准确性。
关键词:
加速度传感器;跌到检测;定位;SMS
Abstract:
Today,graduallyagingsociety,theelderlylivingalonesafetyhasbecomeanimportantproblemofsocialaction.Beforemostofthealarmsystemusetouch-tonephonesmorealarmway,infact,whenpeoplefallnextyear,oftenloseconsciousness,sorelyoninitiativetotriggerthealarmaftertheelderlyfallhaveacertainrisk.Asopen-sourceAndroidplatformofmobileterminaloperatingsystem,theintroductionofthesystemhaveawiderangeofcompatibility,inordertoreducethephysicalandmentaldamagecausedbythefallintheelderly,usingthecurrentAndroidintegrationaccelerationsensorfallsforhumandetection,whenthedetectedhumanbodyfalloccursonthecurrentpositionoftheoldmantolocateandinvoketheSMSwillfallinformationandlocationinformationsenttothepresetemergencycontactphone,canimprovetheaccuracyoftheelderlyfallalarm.
Keywords:
accelerationsensor;detect;location;SMS
1前言
1.1研究背景及意义
随着我国人口老龄化的趋势,如何照看老年人成为社会各界关注的问题。
再加上现在“空巢老人”的现象已经成为人口老龄化的一种社会问题,引起了社会各界的高度关注。
跌倒对于老年人来说是一项重大的威胁,如何准确检测出跌倒并及时发出报警求助信息,使老年人跌倒伤害降到最低,是人体健康监护领域中非常具有研究价值的问题。
因此,开发具有便携性、高精度性、实时性以及自动报警功能的无线跌倒检测系统,在人体发生跌倒行为时,第一时间检测出并发出警报信息进行求助,是整个社会的需要。
传统的跌倒检测技术在设备、场景等方面具有较大的局限性,随着人工智能、无线通信、微电子技术以及生理信号检测与处理等技术的发展,使得人体运动状态信息的检测获得帮助。
伴随着科技的进步,移动终端已经成为了每一个现代人生活中所必不可少的基本用品。
现阶段无线宽带网络的迅猛发展也悄然地改变着人们的生活方式。
目前的网络已经可以很好地满足用户对于高速移动数据的需求,从而促使手持设备向智能化、多媒体化发展。
另外Android的系统架构及开发原理使它成为当前手持设备中具有可移植的操作系统。
当然,更为重要的是Android的开源性降低了其开发成本,Android使用Java作为程序开发的语言,为用户所提供大量的程序组件,用户可以直接在这些组件基础上构建自己的开发程序。
现在的移动终端中也集成了多种传感设备,通过对外界变化的及时获取,计算出加速度、地理位置、身体情况等所需的信息。
本文利用加速度传感器,开发出基于Android的App,对老年人的活动信息进行检测,在检测到异常情况时做出报警处理,使得老年人能够得到及时有效的救助,避免严重后果的发生。
1.2国内外的研究现状
跌倒检测系统是一种个人远程监护系统,保护了老年人群的健康与安全,它可以有效检测老年人是否发生跌倒并及时报警。
所以,跌倒检测技术愈发受到社会各界的重视。
从现今国内外的研究成果来看,关于老年人摔倒时进行报警的方法种类繁多,根据各项产品在研发和使用中得到的摔倒信息的形式和来源不同,主要的方法可以分为以下几类:
1.老年人自主启动的摔倒报警系统
设备要求老年人摔倒时自主报警,所以使用者必须具备一定程度的自救能力和自主活动能力,并且只有在该用户摔倒时,保持清醒才能保证报警功能的顺利实施。
所以这也存在着很大的安全隐患:
如果使用者由于摔倒对身体机能造成损伤,失去了自我启动设备的行动能力,无法及时按下报警按钮,这种设备就将失去它的报警功能。
2.利用视频图像信息检测的摔倒报警系统
在使用时,可以设置在老年人易发生摔倒的地方,这种报警方式主要是利用视频图像检测设备实时捕捉老年人的活动,当老年人在图像信息中出现非正常情况下的身体移动或位置姿态变化时,检测摔倒行为的发生,实现自动报警。
它有利于老年人的身体自由活动,但是使用具有空间上的局限性。
并且这种摔倒报警系统的使用,还有可能侵犯老年人的隐私。
本文采用基于Android的App,只需要在老人的手机上安装上软件进行相应简单的设置,就可以实现检测和报警。
2软件设计及分析
2.1总体设计
基于Android平台开发的老人跌倒检测报警系统主要用来对人体跌倒进行识别和报警,主要功能包括,通过获取到的加速度值和角速度值进行判别跌倒是否发生并用折线图对加速度变化的实时信息进行动态显示,使用XX地图定位功能获取到老人跌倒时所处的位置,用户需要进行紧急联系人设置以便检测到跌倒发生时系统进行自动报警,检测到跌倒时将用户位置和摔倒的信息以短信发送到紧急联系人手机上。
该系统中跌倒的识别是一个难点,只进行加速度和角速度阈值设定的方式来判断摔倒是否发生测试结果会有一定的误差,要使测试结果更精确则需要使用识别数据库。
即将人体运动时可能发生的各种情况如正常行走、跑步、跌倒等的相关数据保存到数据库中,判别跌倒是否发生时只需要和数据库中的数据进行对比即可。
2.2设计环境
开发软件:
Eclipse
开发语言:
Java+SQLite
运行环境:
Android
加速度传感器是一种能够测量加速力的电子设备。
通过测量由于重力引起的加速度,你可以计算出设备相对于水平面的倾斜角度。
通过分析动态加速度,你可以分析出设备移动的方式。
加速度传感器是一种能够测量加速力的电子设备。
因此其的范围比重力感应器要大,但是一般在手机被提到的加速度感应器时,其实就是指重力感应器,因此两者可以看作是等价的。
加速度传感器应用于地震检波器设计、车祸报警、监测高压导线舞动、汽车安全、游戏控制、图像自动翻转、电子指南针倾斜校正、GPS导航系统死角的补偿、计步器功能、防手抖功能、设备或终端姿态检测等众多领域。
跌倒检测系统,其包括:
一个或多个传感器,所述传感器用于监测跌倒检测系统的用户的运动以及用于生成相应的信号;用于根据用户身体状况的一个或多个测量结果确定阈值的模块;处理器,所述处理器用于分析信号以识别用户的跌倒、分析信号以识别跌倒。
一般情况下,人体跌倒行为通常发生在2秒左右。
跌倒过程中身体重心的瞬间移动会产生一个加速度,身体的倾倒也会产生一个偏离竖直方向的角度。
在非跌倒状态如行走过程中,人体上躯干偏离Z轴的倾斜角处于一个相对安全的范围内,而跌倒后人体多处于俯卧、侧卧或仰卧的状态,躯干方向接近于水平,即偏离竖直方向的倾斜角接近90度。
因此我们选取加速度和身体的倾斜角这两个特征作为判别跌倒与其它日常活动的依据。
.2.2.3定位简介
现在人们能实现的定位的方式很多XX地图就是其中一个,XX提供的一项网络地图搜索服务,覆盖了国内近400个城市、数千个区县。
在XX地图里,用户可以查询街道、商场、楼盘的地理位置,也可以找到离您最近的所有餐馆、学校、银行、公园等等。
利用XX地图定位功能实时的知道用户所处的位置,要想到达目的地可以选择的路线信息等。
2.2.4SMS
短信服务是一种存储和转发服务。
也就是说,短消息并不是直接从发送人发送到接收人,而始终通过短信服务中心进行转发。
如果接收人处于未连接状态(可能电话已关闭),则消息将在接收人再次连接时发送。
SMS具有许多其他的重要功能。
它既是一个庞大的直接面对用户的服务部门,需要位于不同工作点的许多工作人员通过客户端同时对数据库进行操作
3系统需求分析与概要设计
3.1需求分析
本系统是一个基于安卓系统的人体跌倒检测报警系统软件,通过使用此软件能够快捷的识别出人体是否跌倒,利用XX地图对人所处的位置进行定位,并使用SMS将位置和摔倒的信息发送到家人的手机上,本系统包括的功能有紧急联系人信息添加,XX地图定位,跌倒识别的信息用折线图显示,短信的发送。
3.2系统概要设计
3.2.1系统功能模块介绍
(1)添加紧急联系人信息模块:
用户点击联系人按钮后可以通过点击添加按钮进入紧急联系人信息页面进行信息的添加也可以点击通讯录从手机通讯录中选择添加。
该模块中包含了两个子模块自主添加联系人模块和从通讯录选择添加联系人模块,模块界面如下图所示:
图3.1系统主界面图3.2紧急联系人信息模块界面
(2)XX地图定位模块:
当老人跌倒需要家人的帮助时就需要能知道老人当时所在的位置,所以利用XX地图里的定位功能实现实时定位。
模块界面如下:
图3.3XX地图模块界面
(3)跌倒识别模块:
现在的android手机中都已集成了加速度传感器,所以利用加速度传感器的和速度是否超过设定的阈值判定人体是否摔倒,并将信息用折线图显示。
该模块中包含了加速度显示和折线图显示加速度值两个子模块,界面如下图所示:
图3.4跌倒识别模块界面
(4)发送短信模块:
当检测到用户摔倒时将用户的当前的所在位置和摔倒的信息发送到指定的紧急联系人的手机上。
模块的界面如下图所示:
图3.5发送短息模块界面
3.2.2功能模块结构图
图3.6功能模块结构图
图3.7系统流程图
4系统详细设计
4.1联系人设置模块
4.1.1代码设计
紧急联系人设置的xml布局由两个Button和一个Textview组成,两个Button分别表示通过系统自己的添加界面添加紧急联系人和调用手机通讯录选择添加紧急联系人,Textview用来显示添加的紧急联系人信息(包括姓名,电话,地址)模块部分代码如下:
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(;
show=(TextView)findViewById(;
Intenti=getIntent();
/*
*实现紧急联系人的添加*/
findViewById(
newOnClickListener(){
//调用“添加联系人信息”页面
@Override
publicvoidonClick(Viewv){
IntentjIntent=newIntent(ContactInfoActivity.this,
AddContactActivity.class);
//jIntent.putExtra("familyInfo",newfamilyInfo("","",""));
startActivityForResult(jIntent,0);
}
});
/*
*实现通讯录中选取联系人
**/
findViewById(
newOnClickListener(){
@Override
publicvoidonClick(Viewv){
IntentbIntent=newIntent(ContactInfoActivity.this,
PhoneActivity.class);
startActivityForResult(bIntent,0);
}
});
}
//处理接收的数据
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
super.onActivityResult(requestCode,resultCode,data);
//接收数据:
采用Bundle传值
Bundlebundle=data.getExtras();
Stringname=bundle.getString("name");
Stringtelphone=bundle.getString("telphone");
Stringaddress=bundle.getString("address");
show.setText("联系人信息:
"+"\n姓名:
"+name+"\n电话:
"+telphone+"\n地址:
"+address);
show.setTextSize(20);
}
4.1.2界面设计
联系人设置模块界面如图
图4.1紧急联系人信息界面图
4.2自主添加联系人模块
4.2.1代码设计
自主添加联系人activity_add_contact.xml布局主要由三个TextView来分别显示用户需要添加的姓名、电话和地址信息、三个EditText分别由用户输入对应的信息、两个Button用来实现用户输入信息的存储并返回到另一个Activity将信息显示出来,取消按钮用来取消本次添加操作。
模块的部分代码如下:
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(;
//接收数据
IntentjIntent=getIntent();//实现“联系人信息页”到“添加联系人信息”页
name=(EditText)findViewById(;
telphone=(EditText)findViewById(;
address=(EditText)findViewById(;
//返回联系人信息页
findViewById(
newOnClickListener(){
@Override
publicvoidonClick(Viewv){
Bundlebundle=newBundle();
bundle.putString("name",
name.getText().toString());
bundle.putString("telphone",
telphone.getText().toString());
bundle.putString("address",
address.getText().toString());
Intentintent=newIntent(AddContactActivity.this,
ContactInfoActivity.class);
intent.putExtras(bundle);
setResult(1,intent);
finish();
}
});
4.2.2界面设计
自主添加联系人模块界面如图
图4.2添加联系人界面图4.3取消按钮信息提示界面
4.3通讯录获取联系人模块
4.3.1代码设计
通讯录获取联系人activity_phone.xml布局由ListView来显示从用户手机通讯录中读取出来的联系人信息,模块部分代码如下:
publicclassGetNumber{
publicstaticList
publicstaticStringgetNumber(Contextcontext){
Cursorcursor=context.getContentResolver().query(Phone.CONTENT_URI,
null,null,null,null);
StringphoneNumber;
StringphoneName;
while(cursor.moveToNext()){
phoneNumber=cursor.getString(cursor.getColumnIndex(Phone.NUMBER));//电话号码
phoneName=cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME));//姓名
PhoneInfoinfo=newPhoneInfo(phoneName,phoneNumber);
lists.add(info);
;
;
}
returnnull;
}
}
4.3.2界面设计
通讯录获取联系人模块界面如图
图4.4通讯录选择联系人信息界面
4.4XX地图定位模块
4.4.1代码设计
XX地图定位activity_locationss.xml布局由一个Button来驱动用户调用XX地图API实现XX地图的定位,在实现XX地图定位时需要根据所建项目的包和Eclipse中的SHA1fingerprint信息来申请对应的APIkey并在配置文件中配置响应信息,还需要导入baidumapapi的包。
模块的部分代码如下:
publicclassMyLocationListennerimplementsBDLocationListener{
@Override
publicvoidonReceiveLocation(BDLocationlocation){
//mapview销毁后不在处理新接收的位置
if(location==null||mMapView==null)
return;
MyLocationDatalocData=newMyLocationData.Builder()
.accuracy(location.getRadius())
//此处设置开发者获取到的方向信息,顺时针0-360
.direction(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
if(isFirstLoc){
isFirstLoc=false;
LatLngll=newLatLng(location.getLatitude(),
location.getLongitude());
MapStatusUpdateu=MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(u);
}
Stringaddr=location.getAddrStr();
if(addr!
=null){
Log.i("Test",addr);
}else{
Log.i("Test","error");
}
doublelongitude=location.getLongitude();
doublelatitude=location.getLatitude();
if(longitude>0&&latitude>0){
Log.i("Test",String.format("纬度:
%f经度:
%f",latitude,longitude));
LatLngptCenter=newLatLng(latitude,longitude);
//反Geo搜索
mSearch.reverseGeoCode(newReverseGeoCodeOption()
.location(ptCenter));
}
//停止定位
mLocClient.stop();
}
publicvoidonReceivePoi(BDLocationpoiLocation){
}
}
4.4.2界面设计
XX地图定位模块界面如图
图4.5XX地图定位信息界面
4.5加速度信息显示模块
4.5.1代码设计
加速度信息显示activity_sensor.xml布局由一个TextView显示通过手机中的加速度传感器获取到的人体运动加速度的数据,此处需要计算加速度的合速度并设定相应的阈值,若获取的合速度a超过了阈值则表示人摔倒否则属于正常情况。
模块部分代码如下:
/*功能:
采集加速度传感器,得到传感器从外界采集的数据*/
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(;
showTextView=(TextView)findViewById(;
sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
accelerometerSensor=sensorManager
.getDefaultSensor(Sensor.TYPE_ACCELEROME
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 加速度 传感器 老人 跌倒 检测 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)