Skip to content

Mobile Platform Sensing GPS IMU CAM

YoungHoYun edited this page Jul 3, 2021 · 6 revisions

GPS

$GNGGA,015442.01,3458.17997,N,12728.74791,E,1,04,6.67,39.9,M,21.1,M,,,*61

Field Value Comments
Sentence ID $GNGGA 데이터셋 식별자
UTC Time 015442.01 hhmmss.ss 세계 표준시
Latitude 3458.17997 위도 (도분, ddmm.mmmm)
N/S Indicator N 북위/남위
Longitude 12728.74791 경도 (도분, dddmm.mmmm)
E/W Indicator E 동경/서경
Position Fix 1 0=Invalid, 1=Valid GPS, 2=Valid DPGS
Satellites Used 04 수신되는 위성 개수
HDOP 6.67 Horizontial Dilution of Precision, 수평적 오차
Altitude 39.9 고도 (안테나의 높이)
Altitude Units M 고도의 단위
Geoid Seperation 21.1 MSL과 Geoid의 고도차
Seperation Unit M 단위
DPGS Age
DGPS Station ID
Checksum *61 체크섬

수신되는 데이터셋 종류와 주기는 "U-Center" 프로그램을 통해 설정 가능하다. (https://www.u-blox.com/en/product/u-center)

각 필드는 ',' 로 구분된다.

NMEA 메세지를 수신 후 ','를 기준으로 파싱하여 원하는 데이터만 추출한다.

DIVA2의 경우 Latitude, Longitude, HDOP를 사용한다.

IMU

수신되는 데이터 종류와 주기는 "MIP Monitor" 프로그램을 통해 설정 가능하다. (https://www.microstrain.com/software)

MSCL (Micro Strain Communication Library) 를 사용해 Serial 통신하여 MipDataPackets를 수신한다.

각 Packet내의 DataPoint에는 channel name과 이에 맞는 데이터값이 들어있다.

DIVA2는 x y z 축 Acceleration 값을 추출하여 사용한다.

CAMERA

VideoCapture *cap = new VideoCapture(CAP_DSHOW);
cap->open(2);
cap->set(cv::CAP_PROP_FOURCC, cv::VideoWriter::fourcc('M', 'J', 'P', 'G'));
cap->set(cv::CAP_PROP_FRAME_WIDTH, 1920);
cap->set(cv::CAP_PROP_FRAME_HEIGHT, 1080);
cap->set(CV_CAP_PROP_FPS, 15);

while(1){
	Mat frame, frame_org;
    cap->read(frame_org);
    
    //original
    cv::imwrite(cFn, frame_org);
    
    //downsize
    resize(frame_org, frame, Size(640, 360), 0, 0, CV_INTER_LINEAR);
    vector<uchar> buffer;
    imencode(".jpg", frame, buffer);
}

OpenCV의 VideoCapture클래스를 사용하여 카메라의 프레임을 취득하며, 해상도와 frame rate를 설정한다.

원본영상 (1920 x 1080)을 취득 후 로컬에 저장한다.

시각화를 위해 전송할 영상은 640x360 해상도로 downsize한 후 jpg인코딩하여 전송한다.