Main Content

MATLAB 객체 속성을 사용하여 센서 데이터 스트리밍하기

이 예제에서는 WiFi 또는 셀룰러 연결을 사용하여 MathWorks® Cloud나 컴퓨터에서 실행 중인 MATLAB®으로 모바일 기기 데이터를 스트리밍하는 방법을 보여줍니다. 모바일 기기와 통신하고 센서에서 데이터를 수집하려면 MATLAB에서 mobiledev 객체를 만드십시오. 객체를 만들기 전까지는 센서 데이터를 기록할 수 없습니다.

센서 데이터 스트리밍 활성화하기

메시지가 표시되면 MathWorks Cloud에 로그인합니다.

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

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

    m = mobiledev
    mobiledev with properties:
    
                       Connected: 1
               Available Cameras: {'back' 'front'}
                         Logging: 0
                InitialTimestamp: ''
    
       AccelerationSensorEnabled: 1
    AngularVelocitySensorEnabled: 1
           MagneticSensorEnabled: 1
        OrientationSensorEnabled: 1
           PositionSensorEnabled: 1
    
    Supported functions

    객체를 만들면 화면에 결과가 표시됩니다.

    • 0 - 활성화되지 않음, 꺼짐 또는 이 기기에서 센서를 사용할 수 없습니다.

    • 1 - 활성화됨 또는 켜짐.

    이 예에서는 기기와 mobiledev 객체가 연결되었지만 센서는 활성화되지 않았고(모든 센서 값이 0임) 데이터도 아직 기록되지 않았음(InitialTimestamp 속성이 비어 있음)을 알 수 있습니다. 기기에 특정 센서가 없는 경우, 해당 센서는 항상 0으로 표시됩니다.

    InitialTimestampmobiledev가 받은 첫 번째 데이터 점의 타임스탬프입니다. 모든 센서의 다른 모든 타임스탬프는 InitialTimestamp를 기준으로 합니다.

  3. 하나 이상의 센서를 활성화합니다.

    m.MagneticSensorEnabled=1

    위치 센서를 사용 중인 경우에는 기기의 설정에서 MATLAB의 위치 액세스를 켜십시오.

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

    m.Logging = 1

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

    데이터 기록을 시작하면 데이터 수집에 1초를 사용한 다음 객체를 표시하여 최신 센서 값을 확인할 수 있습니다.

    pause(1)
    m
    mobiledev with properties:
    
                       Connected: 1
               Available Cameras: {'back' 'front'}
                         Logging: 1
                InitialTimestamp: '06-08-2014 13:45:56.529'
    
       AccelerationSensorEnabled: 1
    AngularVelocitySensorEnabled: 1
           MagneticSensorEnabled: 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)
  5. 이 표시 결과에서 기기와 클라우드가 연결되어 있고 데이터가 기록되고 있음을 알 수 있습니다. 또한, InitialTimestamp 속성값과 센서 값이 표시되어 있습니다. 이는 객체를 만들었을 때의 현재 측정값을 나타냅니다.

  6. mobiledev 속성을 사용하여 기기 센서 데이터 수집을 제어합니다.

  7. 센서 데이터 스트리밍을 중지하려면 Logging 속성을 재설정하거나 mobiledev 객체를 삭제합니다.

    clear m

센서 수집 제어하기

MATLABMobile™은 현재 센서 값을 표시하고, 센서를 활성화 또는 비활성화하고, 기록 기능을 켜거나 끄고, 샘플 레이트를 설정하고, 연결 및 기록 상태를 표시하는 속성을 포함합니다.

mobiledev 객체에서 다음 속성을 사용할 수 있습니다.

속성설명 및 값
Connected

MATLAB Mobile과 MATLAB의 mobiledev 객체 사이의 연결 상태를 표시합니다. 읽기 전용입니다. 가능한 값은 0(연결되지 않음)과 1(연결됨)입니다. mobiledev 객체 m의 연결 상태를 표시하려면 다음을 입력하십시오.

m.Connected

Logging

기기에서 MATLAB으로의 데이터 전송 상태를 표시하고 제어합니다. 가능한 값은 0(기록 중이 아님)과 1(기록 중)입니다. mobiledev 객체 m의 기록 상태를 표시하려면 다음을 입력하십시오.

m.Logging

기록을 켜거나 끄려면 다음을 입력하십시오.

m.Logging = 1 또는 m.Logging = 0

InitialTimestamp

기기에서 mobiledev 객체로 첫 번째 데이터 점이 전송된 시간으로, dd-mm-yyyy HH:MM:SS.FFF 형식이며 단위는 밀리초입니다. mobiledev 객체 m의 초기 타임스탬프를 표시하려면 다음을 입력하십시오.

m.InitialTimestamp

SampleRate

기기에서 이루어지는 데이터 수집의 샘플 레이트로, 단위는 Hz입니다. 값은 double형이며 0~100Hz 범위 내에 있어야 합니다. 디폴트 샘플 레이트는 10Hz입니다. 구체적인 숫자형 값을 설정하는 것 외에도 다음과 같은 값을 갖는 문자형 벡터 'high', 'medium', 'low'를 사용할 수 있습니다.

high: 100Hz

medium: 10Hz

low: 1Hz

Acceleration

X, Y, Z 좌표로 나타낸 현재 가속도 측정값으로, 단위는 m/s^2(제곱 초당 미터)입니다.

가속도는 X, Y, Z축을 기준으로 정의됩니다. 테이블 위에 기기가 위를 향하도록 둔 경우, 양의 X축은 기기 우측으로 향하고 양의 Y축은 기기 상단으로 향하고 양의 Z축은 기기 전면으로 향합니다. 이는 기기가 향하는 방향과 독립적입니다.

AngularVelocity

X, Y, Z 회전에서의 현재 각속도 측정값으로, 단위는 초당 라디안입니다.

각속도는 X, Y, Z축을 기준으로 정의되며, 표준인 오른손 회전 벡터 표기법이 사용됩니다. 테이블 위에 기기가 위를 향하도록 둔 경우, 양의 X축은 기기 우측으로 향하고 양의 Y축은 기기 상단으로 향하고 양의 Z축은 기기 전면으로 향합니다. 이는 기기가 향하는 방향과 독립적입니다.

Orientation

방위각, 피치, 롤에 대한 X, Y, Z 좌표로 나타낸 현재 방향 측정값으로, 단위는 도입니다.

방향은 X, Y, Z축을 기준으로 정의됩니다. 테이블 위에 기기가 위를 향하도록 둔 경우, 양의 X축은 기기 우측으로 향하고 양의 Y축은 기기 상단으로 향하고 양의 Z축은 기기 전면으로 향합니다. 이는 기기가 향하는 방향과 독립적입니다.

방위각은 양의 Y축과 자북 사이의 각도이고, 범위는 -180도와 180도 사이입니다.

양의 롤은 표면 위에 기기를 평평하게 둔 상태에서 양의 Z축이 양의 X축을 향해 기울어진 정도로 정의되고, 범위는 -180도와 180도 사이입니다.

양의 피치는 표면 위에 기기를 평평하게 둔 상태에서 양의 Z축이 양의 Y축을 향해 기울어진 정도로 정의되고, 범위는 -90도와 90도 사이입니다.

MagneticField

X, Y, Z 좌표로 나타낸 현재 자기장 측정값으로, 단위는 마이크로테슬라입니다.

자기장은 X, Y, Z축을 기준으로 정의됩니다. 테이블 위에 기기가 위를 향하도록 둔 경우, 양의 X축은 기기 우측으로 향하고 양의 Y축은 기기 상단으로 향하고 양의 Z축은 기기 전면으로 향합니다. 이는 기기가 향하는 방향과 독립적입니다.

Latitude

적도를 기준으로 도 단위로 표현되는 현재 위도 측정값으로, 양의 값은 북위를 나타냅니다.

Longitude

본초 자오선을 기준으로 도 단위로 표현되는 현재 경도 측정값으로, 양의 값은 동경을 나타냅니다.

HorizontalAccuracy

위도와 경도를 둘러싸는 원으로 정의되는 미터 단위의 현재 수평 정확도입니다.

Altitude

해수면 위쪽으로의 거리로 표현되는 미터 단위의 현재 고도 측정값입니다.

Course

진북을 기준으로 도 단위로 표현되는 현재 침로 측정값입니다.

Speed

m/s(초당 미터)로 표현되는 현재 속력 측정값입니다.

AccelerationSensorEnabled

가속도 센서를 켜거나 끕니다.

센서를 켜거나 끄려면 다음을 입력하십시오.

m.AccelerationSensorEnabled = 1

m.AccelerationSensorEnabled = 0

AngularVelocitySensorEnabled

각속도 센서를 켜거나 끕니다.

센서를 켜거나 끄려면 다음을 입력하십시오.

m.AngularVelocitySensorEnabled = 1

m.AngularVelocitySensorEnabled = 0

MagneticSensorEnabled

자기장 센서를 켜거나 끕니다.

센서를 켜거나 끄려면 다음을 입력하십시오.

m.MagneticSensorEnabled = 1

m.MagneticSensorEnabled = 0

OrientationSensorEnabled

방향 센서를 켜거나 끕니다.

센서를 켜거나 끄려면 다음을 입력하십시오.

m.OrientationSensorEnabled = 1

m.OrientationSensorEnabled = 0

PositionSensorEnabled

위치 센서를 켜거나 끕니다.

센서를 켜거나 끄려면 다음을 입력하십시오.

m.PositionSensorEnabled = 1

m.PositionSensorEnabled = 0

객체 속성

Connected 속성은 읽기 전용이며, MATLAB Mobile과 MATLAB의 mobiledev 객체 사이의 연결 상태를 표시합니다. 가능한 값은 0(연결되지 않음)과 1(연결됨)입니다.

mobiledev 객체 m의 연결 상태를 표시하려면 다음을 입력하십시오.

m.Connected

Logging 속성은 기기에서 MATLAB으로의 데이터 전송 상태를 표시합니다. 가능한 값은 0(기록 중이 아님)과 1(기록 중)입니다.

mobiledev 객체 m의 기록 상태를 표시하려면 다음을 입력하십시오.

m.Logging

Logging 속성은 기록을 활성화 및 비활성화하는 데도 사용됩니다. 선택한 센서에서 데이터 기록을 시작하려면 속성을 활성화합니다.

m.Logging = 1

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

Logging 속성을 비활성화하여 선택한 센서의 데이터 기록을 중지합니다.

m.Logging = 0

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

센서 측정값 속성

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

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

m.Acceleration

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

m.Longitude

기기를 기준으로 한 X, Y, Z축을 보여주는 도식은 기기 방향 항목을 참조하십시오.

센서 제어 속성

MATLAB Mobile에는 센서를 제어하는 5가지 속성이 있습니다. MATLAB Mobile에서 센서 버튼을 선택하거나 선택 취소하여 동일한 작업을 수행할 수도 있습니다. 각 제어 속성에는 1(켜짐 또는 활성화됨)과 0(꺼짐 또는 비활성화됨), 두 개의 가능한 값이 있습니다.

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

m.AccelerationSensorEnabled = 1

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

m.AccelerationSensorEnabled = 0

샘플 레이트 속성

이 속성은 기기에서 이루어지는 데이터 수집 샘플 레이트로, 단위는 Hz입니다. 값은 double형이며 0~100Hz 범위 내에 있는 양수여야 합니다. 디폴트 샘플 레이트는 10Hz입니다.

구체적인 숫자형 값을 설정하는 것 외에도 문자형 벡터 'high', 'medium', 'low'를 사용할 수 있습니다. 이러한 설정은 다음 값을 사용합니다.

  • high: 100Hz

  • medium: 10Hz

  • low: 1Hz

데이터 기록을 시작한 후에도 샘플 레이트를 변경할 수 있습니다. 예를 들어, mobiledev 객체 m의 샘플 레이트를 Hz 단위의 특정 값으로 변경하려면 다음을 입력하십시오.

m.SampleRate = 100

샘플 레이트를 문자형 벡터 값 중 하나로 변경하려면 다음을 입력하십시오.

m.SampleRate = 'low'

R2016a부터는 문자형 벡터 값을 사용하거나 숫자형 값을 지정할 수 있습니다.

관련 항목