请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

52matlab技术论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 231|回复: 4

采集手机内置传感器数据到MATLAB进行实时算法设计的方法

[复制链接]
  • TA的每日心情
    开心
    2015-3-12 11:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    63

    主题

    116

    帖子

    904

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    904
    发表于 2017-12-27 12:50:23 | 显示全部楼层 |阅读模式
    本帖最后由 matlab的旋律 于 2017-12-27 16:49 编辑

    本文介绍的方法能够实现将手机内置的加速度传感器、磁力计角速度传感器陀螺仪及GPS数据采集到MATLAB。这里也部分参考了http://www.ilovematlab.cn/thread-505864-1-1.html,非常感谢贴主inumo

    1、硬件准备:手机(本文示例iphone7plus),电脑,且在同一局域网中;

    2、软件准备:安卓/ios手机安装MATLABmobile(以下简称mobile);
                          电脑安装MATLAB(R2014a以上版本,以下简称MATLAB),且需安装MATLAB Support Package for Android Sensors in MATLAB/MATLAB Support Package for Apple iOS  Sensors in MATLAB,直接在MATLAB的help文档可以搜索下载
    3、具体步骤:
        ①   在MATLAB中建立与mobile连接,MATLAB命令行输入connector on ,首次建立联系需要输入密码。

    MATLAB输入输出如下:
    >> connector on 123456
    DNS name: SMD-1688
    IP address: 192.125.107.68
    Use this link to test the MATLAB Connector:
    http://SMD-1688:31414/

    If the test is successful, but MATLAB Mobile cannot connect,
    your computer might have multiple IP addresses.  To determine
    the correct one, see Determining the DNS Name or IP Address of a Computer.

    DNS name为主机名,IPaddressIP地址,但连接时应使用局域网中地址,如192.168.1.xxx,端口号默认为31415,但是也可能为其他的数字。

      打开Mobile,点击右下侧的More,在点击选择setting,,然后点击Add a computer如图1



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-3-12 11:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    63

    主题

    116

    帖子

    904

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    904
     楼主| 发表于 2017-12-27 15:18:52 | 显示全部楼层
    输入IP地址(电脑的局域网地址)及密码,端口,DNS ,然后点击Connect连接至电脑。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-3-12 11:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    63

    主题

    116

    帖子

    904

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    904
     楼主| 发表于 2017-12-27 16:15:17 | 显示全部楼层
    ③   连接成功后,在MATLAB中创建一个mobiledev对象,MATLAB命令行输入m=mobiledev后,命令窗口显示:
    >> m=mobiledev

    m =

    mobiledev with properties:

                       Connected: 1
                         Logging: 0
                InitialTimestamp: ''

       AccelerationSensorEnabled: 1
    AngularVelocitySensorEnabled: 0
           MagneticSensorEnabled: 0
        OrientationSensorEnabled: 0
           PositionSensorEnabled: 0

    Supported functions

    其中 Connectd 只读,表示连接状态,1 连接,0未连接;InitialTimestamp只读,表示采集数据的起始时间信息,为空字符串时候表示采集还没开始。
       AccelerationSensorEnabled: 加速度传感器 1:表示采集 0:表示不采集
    AngularVelocitySensorEnabled: 陀螺仪 1:表示采集 0:表示不采集
           MagneticSensorEnabled: 磁力计 1:表示采集 0:表示不采集
        OrientationSensorEnabled: 方向传感器 1:表示采集 0:表示不采集
           PositionSensorEnabled: GPS 1:表示采集 0:表示不采集

    还有一个非常重要的参数,就是采集信号的采样率m.SampleRate,默认是10Hz,最高值为100Hz,可以设置的范围为0-100Hz。

    ④  开始/结束数据采集及传感器数值获取。
         控制采集过程的方法有两种,分布在pc端和mobile端:
          ● pc MATLAB:m.Logging = 1,开始采集,m.Logging = 0 结束采集,这里也为编程实现自动控制提供了便捷;
          ● mobile MATLAB:点击Start Sending开始采集,点击Stop Sending结束采集。

    获取当前加速度传感器数值,可在命令行输入m. Acceleration来获得,其他传感器如AngularVelocity、Orientation、MagneticField等类似
          具体可用properties(m)查看mobiledev的所有属性,或查看帮助文档中的介绍
    下图中给出连接时mobile 端传感器的选项图,点亮的图标为选中采集传感器数据,否则不采集对应传感器的数据。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-3-12 11:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    63

    主题

    116

    帖子

    904

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    904
     楼主| 发表于 2017-12-27 16:24:58 | 显示全部楼层
    ⑤  获取整个采集过程中的所有值(即m.Logging = 1时开始)。在采集结束后,可以通过
    [acc,tacc] = accellog(m);%获取整个采集过程中加速度传感器的值,以及从0开始,单位为秒的时间信息tacc
    [av, tav] = angvellog(m);%获取整个采集过程中陀螺仪的值,以及从0开始,单位为秒的时间信息tacc
    [mg,tmg] = magfieldlog(m);%获取整个采集过程中磁力计的值,以及从0开始,单位为秒的时间信息tacc
    [oi, toi] = orientlog(m);%获取整个采集过程中方向传感器的值,以及从0开始,单位为秒的时间信息tacc
    [ps,tps] = poslog(m);%获取整个采集过程中GPS的值,以及从0开始,单位为秒的时间信息tacc
    然后可以进行数据处理操作。
    discardlogs(m);%清楚各对应传感器的历史数据,时间轴设定当前时刻为0.

    ⑥  采集过程结束后,清除变量并断开连接,在命令行输入:
    clear m
    connector off

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-3-12 11:57
  • 签到天数: 1 天

    [LV.1]初来乍到

    63

    主题

    116

    帖子

    904

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    904
     楼主| 发表于 2017-12-27 16:45:40 | 显示全部楼层
    本帖最后由 matlab的旋律 于 2017-12-27 17:00 编辑

    说了这么多,直接上实时采集加速度传感器数据的gui程序,之前用加速度数据测试了一下计步算法,GUI上面的统计步数的窗口也保留下来了,可以忽略。其中示例程序采用了定时器,采样率为25Hz,不过也有一个比较困惑的问题,数据采集时,数据长度为45和50(25Hz采样率每两秒的长度应为50)交替,理论上来说应该每次都丢失了5组数据,即5/25=0.2秒=200毫秒。有这方面兴趣的朋友可以一起研究这个问题。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|52matlab技术论坛    

    GMT+8, 2018-2-26 09:51 , Processed in 0.415437 second(s), 28 queries .

    Powered by Discuz! X3.2 Licensed

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表