스트리밍 방식으로 센서 데이터 수집하기

mobiledev 객체 만들기

iOS 기기와 통신하고 센서에서 데이터를 수집하려면 mobiledev 객체를 만드십시오. MATLAB®에서 mobiledev 함수를 사용하여 이 객체를 만듭니다. 이 작업은 센서를 켜기 전 또는 후에 할 수 있습니다. 단, 객체를 만들기 전까지는 센서 데이터를 기록할 수 없습니다.

이 예제에서는 iOS 기기에 MATLAB Mobile™을 설치하여 설정한 후 MATLAB을 실행 중인 컴퓨터 또는 MathWorks Cloud에 연결했다고 가정합니다. 이 단계에 대한 자세한 내용은 iOS 센서 시작하기 (MATLAB Mobile for iOS) 항목을 참조하십시오.

  1. iOS 기기에서 MATLAB Mobile을 시작합니다.

  2. MATLAB Mobile센서 화면에서 데이터를 보내올 센서를 누릅니다. 기기에서 시작 버튼을 누르지 마십시오. MATLAB에서 데이터 기록을 시작할 수 있습니다.

  3. 센서 데이터를 얻으려는 곳에 기기를 둡니다.

  4. MATLAB을 실행 중인 컴퓨터에서 이 기기에 연결합니다.

    connector on

    또는 MathWorks Cloud를 사용하여 MATLAB을 실행하는 경우에는 클라우드에 로그인합니다.

  5. MATLAB에서 mobiledev 객체 m을 만듭니다.

    m = mobiledev
    mobiledev with properties:
    
                       Connected: 1
                         Logging: 0
                InitialTimestamp: ''
    
       AccelerationSensorEnabled: 1
    AngularVelocitySensorEnabled: 1
      MagneticFieldSensorEnabled: 1
        OrientationSensorEnabled: 1
           PositionSensorEnabled: 1
    
    Supported functions

    객체를 만들 때 표시되는 결과에서 값 1은 활성화됨 또는 켜짐을 의미하고 0은 비활성화됨 또는 꺼짐을 의미합니다. 이 예에서는 기기와 컴퓨터는 연결되어 있지만 데이터는 아직 기록되지 않은 것을 볼 수 있습니다. 이 기기에는 5개의 센서가 있습니다. 단, 사용자의 기기는 이와 다를 수 있습니다. 기기에 특정 센서가 없는 경우, 해당 센서는 항상 0으로 표시됩니다. InitialTimestamp 속성은 아직 기록된 데이터가 없기 때문에 비어 있습니다.

  6. Logging 속성을 활성화하여 선택한 센서의 데이터 기록을 시작할 수 있습니다.

    m.Logging = 1

    이 동작은 선택한 모든 센서에서 데이터 전송을 시작합니다.

데이터 기록을 시작한 후에 객체를 표시하면 현재 값이 보여집니다.

disp(m)
mobiledev with properties:

                   Connected: 1
                     Logging: 1
            InitialTimestamp: '06-08-2014 13:45:56.529'

   AccelerationSensorEnabled: 1
AngularVelocitySensorEnabled: 1
  MagneticFieldSensorEnabled: 1
    OrientationSensorEnabled: 1
       PositionSensorEnabled: 1

Current Sensor Values:
                Acceleration: [0.27 0.23 -10.19]  (m/s^2)
             AngularVelocity: [-0.22 0.07 0.06]   (rad/s)
               MagneticField: [3.56 1.56 -48.19]  (microtesla)
                 Orientation: [85.91 -27.1 0.35]  (degrees)

       Position Data: 
                    Latitude: 41.29  (degrees)
                   Longitude: -72.35  (degrees)
                       Speed: 25  (m/s)
                      Course: 83.6  (degrees)
                    Altitude: 200.1  (m)
          HorizontalAccuracy: 9.0  (m)
                                                                 
Supported functions

이 표시 결과에서 기기와 컴퓨터가 연결되어 있고 데이터가 기록되고 있음을 알 수 있습니다. 또한, InitialTimestamp 속성값과 센서 값이 표시되어 있습니다. 이는 객체를 만들었을 때의 현재 측정값을 나타냅니다.

센서를 제어하고 데이터 수집하기

이 예제에서는 iOS 기기에 MATLAB Mobile을 설치하여 설정한 후 MATLAB을 실행 중인 컴퓨터 또는 MathWorks Cloud에 연결했다고 가정합니다. 이 단계에 대한 자세한 내용은 iOS 센서 시작하기 (MATLAB Mobile for iOS) 항목을 참조하십시오.

  1. iOS 기기에서 MATLAB Mobile을 시작합니다.

  2. 센서 화면에서 데이터를 전송할 센서를 누릅니다.

  3. 센서 데이터를 얻으려는 곳에 기기를 둡니다.

  4. MATLAB을 실행 중인 컴퓨터에서 이 기기에 연결합니다.

    connector on

    또는 MathWorks Cloud를 사용하여 MATLAB을 실행하는 경우에는 클라우드에 로그인합니다.

  5. MATLAB에서 mobiledev 객체 m을 만듭니다.

    m = mobiledev
    mobiledev with properties:
    
                       Connected: 1
                         Logging: 0
                InitialTimestamp: ''
    
       AccelerationSensorEnabled: 1
    AngularVelocitySensorEnabled: 1
      MagneticFieldSensorEnabled: 1
        OrientationSensorEnabled: 1
           PositionSensorEnabled: 1
    
    Supported functions

    표시 결과에서 값 1은 활성화됨 또는 켜짐을 의미하고 0은 비활성화됨 또는 꺼짐을 의미합니다. 이 예에서는 기기와 컴퓨터는 연결되어 있지만 데이터는 아직 기록되지 않고 있는 것을 볼 수 있습니다. 이 기기에는 5개의 센서가 있습니다. 단, 사용자의 기기는 이와 다를 수 있습니다. 기기에 특정 센서가 없는 경우, 해당 센서는 항상 0으로 표시됩니다. 타임스탬프는 아직 기록된 데이터가 없기 때문에 비어 있습니다.

  6. Logging 속성을 활성화하여 선택한 센서의 데이터 기록을 시작합니다.

    m.Logging = 1

    이 동작은 선택한 모든 센서에서 데이터 전송을 시작합니다. MATLAB Mobile에서 시작 버튼을 눌러 전송을 시작할 수도 있습니다.

  7. 데이터 기록을 시작했으므로 이제 disp 함수를 사용하여 객체를 살펴봅니다.

    disp(m)
    mobiledev with properties:
    
                       Connected: 1
                         Logging: 1
                InitialTimestamp: '06-08-2014 13:45:56.529'
    
       AccelerationSensorEnabled: 1
    AngularVelocitySensorEnabled: 1
      MagneticFieldSensorEnabled: 1
        OrientationSensorEnabled: 1
           PositionSensorEnabled: 1
    
    Current Sensor Values:
                    Acceleration: [0.27 0.23 -10.19]  (m/s^2)
                 AngularVelocity: [-0.22 0.07 0.06]   (rad/s)
                   MagneticField: [3.56 1.56 -48.19]  (microtesla)
                     Orientation: [85.91 -27.1 0.35]  (degrees)
    
           Position Data: 
                        Latitude: 41.29  (degrees)
                       Longitude: -72.35  (degrees)
                           Speed: 25  (m/s)
                          Course: 83.6  (degrees)
                        Altitude: 200.1  (m)
              HorizontalAccuracy: 9.0  (m)
                                                                     
    Supported functions

    이 표시 결과에서 기기와 컴퓨터가 연결되어 있고 데이터가 기록되고 있음을 알 수 있습니다. 또한, InitialTimestamp 속성값과 센서 값이 표시되어 있습니다. 이는 객체를 만들었을 때의 현재 측정값을 나타냅니다.

  8. 데이터를 기록할 때는 센서 측정값 속성을 사용하여 모든 센서의 현재 값을 표시할 수 있습니다. Acceleration, AngularVelocity, Orientation, MagneticField 속성은 각 센서의 현재 측정값을 표시합니다. 위치 센서가 기록 중인 경우, Latitude, Longitude, HorizontalAccuracy, Altitude, Course, Speed 속성을 사용하여 개별 위치 측정값을 가져올 수 있습니다.

    센서의 현재 값을 가져오려면 <objectname>.<propertyname>을 사용하십시오. 예를 들어, 객체 m의 가속도 측정값을 가져오려면 다음을 입력하십시오.

    m.Acceleration
    ans =
    
        0.6945   -0.2579    9.9338                  

    위치 센서에서 경도 측정값을 가져오려면 다음을 입력하십시오.

    m.Longitude
    ans =
    
        -71.3517                  
  9. MATLAB의 센서 제어 속성을 사용하여 센서를 켜거나 끌 수 있습니다. 제어 속성을 사용하는 것은 MATLAB Mobile에서 센서 버튼을 선택하거나 선택 취소하는 것과 같습니다. 각 제어 속성에는 1(켜짐 또는 활성화됨)과 0(꺼짐 또는 비활성화됨), 두 개의 가능한 값이 있습니다. 예를 들어, MATLAB에서 가속도 센서를 끄려면 다음을 입력하십시오.

    m.AccelerationSensorEnabled = 0

    가속도 센서를 다시 켜려면 다음을 입력하십시오.

    m.AccelerationSensorEnabled = 1
  10. 센서 데이터 기록을 중지합니다.

    m.Logging = 0
  11. 7단계에서 봤듯이 데이터를 기록하는 중에 센서 측정값 속성을 사용하여 센서의 현재 값을 가져올 수 있습니다. 모든 측정값에 대한 전체 로그를 보려면 기록 함수를 사용하십시오. 이런 기록 함수는 데이터를 기록하는 중에, 또는 기록을 중지한 후에 사용할 수 있습니다. 센서 유형별로 기록 함수가 있습니다. 예를 들어, accellog는 가속도 센서에서 기록된 가속도 데이터를 반환합니다.

    객체 m에서 기록된 가속도 데이터를 가져오려면 기록된 가속도 데이터에 변수 a를 할당하고 타임스탬프에 t를 할당합니다.

    [a, t] = accellog(m);

    그런 다음 데이터를 플로팅하거나 다른 데이터 처리 작업을 수행할 수 있습니다.

  12. 세션을 마쳤으면 객체를 삭제합니다.

    clear m
  13. MATLAB과 iOS 기기 사이의 연결을 끊습니다.

    connector off

기기 방향

가속도, 각속도, 자기장 및 방향 센서는 모두 X, Y, Z축을 기준으로 데이터를 기록합니다. 이 도식은 기기를 기준으로 한 세 축을 보여줍니다.

기기를 평평한 표면 위에 둘 때 Z축이 양의 값임에 주의하십시오. 이는 그렇게 설계된 것으로, MATLAB 규칙과도 일치합니다. 기기를 평평한 표면 위에 둘 때 Z축의 가속도 값은 기기의 가속도(0m/s^2)에서 중력 가속도(-9.81m/s^2)를 뺀 +9.81입니다.