§공간 data 저장, 검색을 지원하는 R tree  

 

 

 

§R tree 구성요소 및 검색관련 주요 제공기능
R tree 기본 구성 요소 

 

 

         - MBR : Minimum Bounding Rectangle

 Tip) 중요한 키워드의 경우 표 아래 한 줄 쓰기로 약어를 풀어 주는 것은
답안의 품질을 세련되게 하고 채점자를 배려한다는 인상을 줄 수 있다.

 

R tree 검색 관련 주요 제공 기능 

 

 

 

§R tree와 다른 자료구조 비교
R tree와 다른 자료구조와의 비교 

 

 

 

활용분야 : GIS, Navigation, CAD 설계, 3D 설계

 Tip) 1교시에도 3단락에 위 활용분야처럼 한 줄이라도 더 쓰는 것이
고득점을 받을 수 있는 방법이다.

 

 

 

반응형

'Topic > 데이터베이스' 카테고리의 다른 글

Index 구조  (0) 2014.11.11
Index  (0) 2014.11.05
ER Modeling  (0) 2014.11.05
Data Modeling  (0) 2014.11.02
Data 독립성  (0) 2014.10.31

 

"해당 내용은 Visual Studio 2010 Express를 대상으로 했으나 2010 이상 버전에 모두 동일하게 적용가능합니다.

 돈도 없고 PC도 구리고 ... 쿨럭 ... 무료에다 상대적으로 가벼운 2010을 선택했습니다."

 

□ OpenCV Visual Studio 2010  Express 설치 가이드

- 설치에 앞서 Visual Studio 2010 Express 버전은 이미 설치가 되어 있어야 합니다.

- OpenCV 다운로드

http://opencv.org/downloads.html

 

- OpenCV for Windows 선택~

  이중 Alpha나 Beta는 불안정할 수 있으므로 Lastest 버전 중 정식 배포판을 선택~

  ( 현재 opencv-2.4.10 이 최신이므로 여기에서는 2.4.10 버전으로 진행합니다. )

 

다운로드 시 약 350MB 정도 크기가 됩니다.

참고로 위 사이트 opencv.org는 항상 기억하고 계세요. 레퍼런스나 가이드 이용을 위해 수시로 드나들어야 할 겁니다.

 

□ OpenCV 설치 (OpenCV Setup)

설치는 참 간단합니다. 클릭 몇 번으로 가능하죠.

2.4.10에서는 Setup과 동시에 아래처럼 생성할 디렉토리를 물어봅니다.

oencv 디렉토리는 자동으로 생성되므로 설치할 디렉토리만 지정하면 됩니다.


1. 설치 시작 ... 압축 풀기

 

 

 

2. 진행화면 ... ^^;

 

 

 

 

□ Path 설정 ( Windows Path Setting )

진행 후 반드시 Path 지정을 하는 것을 권합니다.

OpenCV를 사용하며 필요한 dll을 매번 실행파일이 있는 디렉토리로 복사할 수는 없겠지요.

아래부터는 Path 설정에 대한 지리한 화면들입니다.


3. Path 설정

 

 

 

 

 

 

 

Path 설정시 주의사항!!! 이 있는데요.


PATH 세팅. x64가 아닌 x86선택~


아직까지는 32bit, 64bit 운영체제 사용을 떠나서 x86으로 사용해야 자잘한 버그가 없습니다.

OpenCV가 설치된 디렉토리를 찾아서 아래처럼


C:\...\opencv\build\x86\vc10\bin


bin 디렉토리까지 정확히 Path 경로로 정해 주어야 합니다.

아래는 Path 설정 창의 예시 그림입니다. 변수값 뒤에 추가해 주세요.


4. Path 설정시 주의사항과 경로 지정

 

 

 

□ Compiler 환경 구성 ( OpenCV 개발 환경 구성 )

OpenCV 개발환경 구성과 제대로 설치되었는지 확인을 위해 솔루션과 Project를 하나 생성합니다.

다음에 아래와 같이 솔루션 탐색기에서 해당 프로젝트명에서 마우스 오른쪽 메뉴의 속성을 지정합니다.

( 솔루션 탐색기가 안보인다고요? GG ^^; 상단 보기 메뉴에서 솔루션 탐색기를 나타나게 할 수 있습니다. )


5. Compiler 환경 구성

 

 

 

C/C++ 환경 구성도 수행합니다.

속성 페이지에서

C/C++ - 일반  - 추가 포함 디렉토리 ( C/C++  - General  - Additional Include directory )

를 선택합니다.

추가 포함 디렉토리.. 번역이 참 다가오지 않습니다. 표준 include 디렉토링 외에 

지정이 필요한 별도 include 파일 위치를 지정하는  것인데, OpenCV include 파일들의 위치를 지정해 주어야   합니다.

UNIX 등 Console 환경에서 C 컴파일러 -I 옵션과 같은 역할을 해줍니다.


6. C/C++ 환경 구성

 

 

 

추가 버튼을 누르고 openCV가 설치된 디엑토리의 bulid/include 디렉토리를 정해 주세요.

아래처럼 

C:\...\opencv\build\include 


OpenCV가 설치된 디렉토리 내에서 include까지 정확히 선택해 주세요.


7. include 환경 구성 

 

 

 

 

Linker 환경 구성 ( OpenCV 개발 환경 구성 )


컴파일러 환경 구성이 끝나면 링커 환경 구성을 합니다.

우선 사용할 라이브러리들이 위치하는 디렉토리 정보부터 설정합니다.

링커 - 일반 - 추가 라이브러리


의미는 include의 경우와 동일합니다. 실제 라이브러리 위치를 지정해서 사용할 수 있도록 해주는 것이죠.

단, 위치를 알려주는 것으로 필요한 실제 라이브러리의 연결은 추가 종속성에서 설정해 주어야 합니다.

2010 이후 설정이 필요한 것으로 2008 이하 버전에서는 자동으로 설정되던 부분입니다.


8. Linker 환경 구성

 

 

 

include에서와 같이 추가버튼을 누르고 openCV 설치 디렉토리 밑에 build/x86/vc10\lib 디렉토리를 선택합니다.

역시 OpenCV가 설치된 디렉토리에서 lib까지 선택해 줍니다.


C:\...\opencv\build\x86\vc10\lib


9. 추가 라이브러리 디렉토리 환경 구성

 

 

 

실제 중요한 추가 종속성 설정입니다.

사용되는 외부 라이브러리들을 지정하는 곳으로 실제 사용하려는 라이브러리들을 지정합니다.

추가 종속성에서 지정된 라이브러리들은 추가 라이브러리 디렉토리에서 설정된 디렉토리 밑에 존재하는 라이브러리들입니다.

둘은 일치하여야 합니다.

2008 이하 버전에서는 추가 종속성을 지정하면 추가 라이브러리 디렉토리 설정은 필요없었습니다.

2010 버전 이후 두 가지를 모두 정확히 설정해 주도록 변경되었네요.


10. 추가 종속성 환경 구성

 

 

 

OpenCV 이용을 위해 필요한 추가 라이브러리들은

C:\...\opencv\build\x86\vc10\lib 에서 파일명 끝에 d가 붙은 것들

입니다.

단, 추가 등록해야하는 라이브러리는 OpenCV에서는 버전별로 이름이 다 틀립니다.


한 예로, calib3d 라이브러리의 경우  

2.4.09 : opencv_calib3d2409d.lib

2.4.10 : opencv_calib3d2410d.lib


와 같이 이름이 버전명으로 붙어있는 것을 볼 수 있습니다. 따라서, 아래와 같이 해당 디렉토리에서 확인 작업이 필요합니다.

 

참고) 명령프롬프트에서 penCV 라이브러리 디렉토리 이동 후 d로 끝나는 라이브러리 추출 ^^;

dir *d.lib



11. 추가 라이브러리 리스트 확인

 

 

 

해당 명령으로 구해진 라이브러리 목록을 추가합니다.

OpenCV 2.4.10 버전의 경우 아래와 같습니다. 버전이 바뀌지 않는 한 기록했다가 늘 복사해서 쓰면 됩니다.

 

opencv_calib3d2410d.lib
opencv_contrib2410d.lib
opencv_core2410d.lib
opencv_features2d2410d.lib
opencv_flann2410d.lib
opencv_gpu2410d.lib
opencv_highgui2410d.lib
opencv_imgproc2410d.lib
opencv_legacy2410d.lib
opencv_ml2410d.lib
opencv_nonfree2410d.lib
opencv_objdetect2410d.lib
opencv_ocl2410d.lib
opencv_photo2410d.lib
opencv_stitching2410d.lib
opencv_superres2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
opencv_videostab2410d.lib

 

11. 추가 종속성 환경 구성 상세

 

 

 

 

정상적으로 끝났다면 이제 테스트를 해 봅니다.


 

#include <stdio.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>


int main() {
    IplImage * img = cvLoadImage( "D:\\Temp\\test..png" );

    cvShowImage( "Test Image!", img );
    cvWaitKey( 0 );
    cvReleaseImage( &img );
    cvDestroyAllWindows();

    return 0;
}
 

 

 

 

  

Ctrl + F5 를 눌러 실행시키면 아래와 같이 결과를 볼 수 있습니다. 물론 이미지가 경로에 제대로 있어야 겠죠.

 

 

 

 

□ 기타

참고로, 환경 구성이 잘못 되었을 경우  빌드 시 링크 수행 시점에서 반드시 Error LINK2019 발생합니다.

(특히, 종송성과 라이브러리 디렉토리가 서로 다를 경우)

 

예) error LNK2019: "int __cdecl cv::_interlockedExchangeAdd(int *,int) 등

 

컴파일 시 위와 유사한 오류 메세지가 나오면 다시 한번 환경 설정을 확인하시기 바랍니다.

 

□ 참고

- OPENCV.ORG How To : Click

 

 

반응형

- If you can try to use sprintf() to convert from a float to a string on Arduino, it doesn't work.

  The function sprintf() return a "?" instead of float format.

  The alternative to solve the problem is to use dtostrf(), the function in the avr-libc library.

 

아두이노에서 부동소수값 출력을 위해

 

sprintf( buf, "%f", 1.1f );

Srial.println( buf );

 

      → output : ?  

 

위와 같이 sprintf() 함수를 사용한 경우 1.1이 아닌 "?" 가 출력된다.

정확한 결과를 위해 

 

dtostrf() 함수를 사용

 

하여 해결 가능하다.

 

□ dtostrf()  개요

  - dtostrf() 함수는 부동소수(double, float) 변수를 주어진 형식에 따른 문자열을 출력

  - The dtostrf() function converts the double value passed in val into an ASCII representation that will be

    stored under s.

 

char* dtostrf

(

double 

__val,

signed char 

__width,

unsigned char 

__prec,

char * 

__s 

)

 

□ 매개변수 정의 

 매개변수

내용

 

 double __val

 - 변경할 부동소수

 - floatvar

   Float variable

 

 signed char __width

 - 음수부호(-)와 소수점을 포함한 전체 자리수

 - StringLengthIncDecimalPoint

   It is the length of the string will be created

 소수점 포함, 음수는 (-)포함

 unsigned char__ prec

 - 소수점을 제외한 소수점 자릿수

 - numVarsAfterDecimal

   The number of digits after the dicimal point 

 소수점 제외 

 char * __s

 - 문자열 버퍼 ( char buffer )

 - charbuf

   The char array to store the result

 

 

 

□ dtostrf() 사례 ( Sample )

#include    <stdio.h>
 
void    setup() {
    Serial.begin( 9600 );
}
 
void    loop() {
    char    CAa [20] = "";
    char    CAb [20] = "";
    char    CAc [ 3] = "";
    char    CAd [ 5] = "0000";
 
    char buf[128];    
 
    dtostrf( 123.123    ,  6, 2, CAa );
    dtostrf( 456.456     , 1, 3, CAb );
    sprintf(buf, "dtostrf( 123.123     ,  6, 2, CAa ) -> %15s\n"
                 "dtostrf( 456.456     ,  1, 3, CAb ) -> %15s"
                 , CAa
                 , CAb          );
    Serial.println(buf);
 
    dtostrf( 123.123    ,  6, 2, CAa );
    dtostrf( 456.4567    , 6, 2, CAb );
    sprintf(buf, "dtostrf( 123.123     ,  6, 2, CAa ) -> %15s\n"
                 "dtostrf( 456.4567    ,  6, 2, CAb ) -> %15s"
                 , CAa
                 , CAb          );
    Serial.println(buf);
 
    dtostrf( 12312.123   , 3, 2, CAa );
    dtostrf( 456.4567789 , 2, 5, CAb );
    sprintf(buf, "dtostrf( 12312.123   ,  3, 2, CAa ) -> %15s\n"
                 "dtostrf( 456.45674444,  2, 5, CAb ) -> %15s"
                 , CAa
                 , CAb          );
    Serial.println(buf);
 
    dtostrf( 123.12345678, 10, 3, CAa );
    dtostrf( 456456.4567 , 11, 4, CAb );
    sprintf(buf, "dtostrf( 123.12345678, 10, 3, CAa ) -> %15s\n"
                 "dtostrf( 456456.4567 , 11, 4, CAb ) -> %15s"
                 , CAa
                 , CAb          );
    Serial.println(buf);
 
    dtostrf( 123.123     , 10, 3, CAa );
    dtostrf( 456456.45   , 10, 4, CAb );
    sprintf(buf, "dtostrf( 123.123     , 10, 3, CAa ) -> %15s\n"
                 "dtostrf( 456456.45   , 10, 4, CAb ) -> %15s"
                 , CAa
                 , CAb          );
    Serial.println(buf); 
 
    dtostrf( 789.789    ,  3, 3, CAc );
    sprintf(buf, "dtostrf( 789.789     ,  3, 3, CAc ) -> %15s\n"
                 "CAd is 0000                         -> %15s"
                 , CAc         
                 , CAd );
    Serial.println(buf);
       
   delay( 2000 );
}       

 

 

□ 결과 (Result)

dtostrf( 123.123     ,  6, 2, CAa ) ->          123.12      // Normal. 정상
dtostrf( 456.456     ,  1, 3, CAb ) ->         456.456      // Error. 전체자리수 무시됨
dtostrf( 123.123     ,  6, 2, CAa ) ->          123.12      // Normal. 정상
dtostrf( 456.4567    ,  6, 2, CAb ) ->          456.46      // Normal. 정상. 소수점 끝자리 반올림됨
dtostrf( 12312.123   ,  3, 2, CAa ) ->        12312.12      // Error. 전체자리수 무시됨
dtostrf( 456.45674444,  2, 5, CAb ) ->       456.45679      // Error. 부동소수 오류(끝자리 4가 아님)
dtostrf( 123.12345678, 10, 3, CAa ) ->         123.123      // Normal. 정상
dtostrf( 456456.4567 , 11, 4, CAb ) ->     456456.4700      // Error. 부동소수 오류 발생
dtostrf( 123.123     , 10, 3, CAa ) ->         123.123      // Normal. 정상
dtostrf( 456456.45   , 10, 4, CAb ) ->     456456.4400      // Error. 소수점 끝자리 오류발생
dtostrf( 789.789     ,  3, 3, CAc ) ->         789.789      // Error. sizeof(CAc)→3, Buffer Over Flow 발생
CAd is 0000                         ->            .789      // Error. CAc의 BoF로 원래 값이 지워짐

 

결과에서 알 수 있듯이 dtostrf()도 정확한 연산이 되는 것은 아니다.

그러나, dtostrf()를 sprintf() 대신 충분히 사용가능하다.

 

As the result, dtostrf () also is not working exactly.
But, however , the dtostrf () is fully available instead of sprintf().

 

반응형

'아두이노 > 일반' 카테고리의 다른 글

[브리핑] 아두이노 강좌  (0) 2016.02.03
Arduino Nano USB to Serial Port 설치-WCH CH340G  (0) 2014.12.31
I2C 통신  (0) 2014.11.21
Arduino 사용자 라이브러리 작성법  (0) 2014.11.16

 

 

 

 

 

GENERAL SPECIFICATIONS 

 
CIRCUIT:SPST
CURRENT RATING:12mA
VOLTAGE RATING:24VDC
CONTACT RESISTANCE:50mΩ Max.(inital)
INSULATION RESISTANCE:100MΩ Min
OPERATING FORCE:170gf±50g
TOTAL TRAVEL:2.8mm±0.4mm
OPERATING LIFE:50,000 CYCLES Min
SOLDER SPECIFICATIONS:256°C for 3 seconds
FUNCTION:Momentary
OPERATING TEMPERATURE:+10°C ~ +60°C
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'아두이노 > 센서' 카테고리의 다른 글

Sharp 2Y0A21 : 적외선 거리센서  (0) 2014.12.24
GP2Y0A41SK0F : 적외선 거리센서  (0) 2014.12.24
스위치 : 푸시형 NON-LOCK DJP2213  (0) 2014.11.26
HC-SR04 : 초음파 거리측정 센서  (0) 2014.11.24
I2C Address  (0) 2014.11.21

 

 

 

 

 

 

 * Typical Specifications
 
1.Rating : DC30V 0.1A
 2.Circuit : 2C - 2P
 3.Contact Resistance : 30mΩMax.
 4.Operating Force : 200±80gf, 300±100gf
 5.Operating Life : 10,000cycles
 6.KNOB 사이즈 : 10 X 10 X 6.5mm 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'아두이노 > 센서' 카테고리의 다른 글

GP2Y0A41SK0F : 적외선 거리센서  (0) 2014.12.24
스위치 : 푸시형 NON-LOCK PB86-A1  (0) 2014.11.26
HC-SR04 : 초음파 거리측정 센서  (0) 2014.11.24
I2C Address  (0) 2014.11.21
801s : 진동센서  (0) 2014.11.20

 

§IPv6 전환 필요성과 주요이슈
IPv6 전환 필요성
-’11IPv4 기고갈  : IPv4 소진, IPv6 전환
-All-IP Needs 증가  : 유무선 N/W융합, 모바일 확산

 

IPv6 전환 관련 주요 이슈
-IPv6 호환성 부족  : IPv4 장비, S/W, 변경대책 필요
-넓은 파급 효과  : 망사업자, 서비스제공자, 사용자 전체 영향

 

 

§IPv6 전환절차 및 점검사항
IPv6 전환절차 

 

 

IPv6 전환 시 점검사항 

 

 

 

 

반응형

'Topic > 네트워크' 카테고리의 다른 글

OSI 7계층과 TCP/IP  (0) 2015.01.20
OSI 7 계층  (0) 2015.01.20
IPv6 구성 및 IPv6와 IPv4 비교  (0) 2014.11.26
IPv6 변환기술  (0) 2014.10.31
IPv6  (0) 2014.10.04

 

§IPv6 구성 : 16bit, 8부문, 콜론(:)으로 분리, 16진수 표기 

 

 Tip) IPv6, IPv4 비교문제가 나오면 공격적으로 비교해 줄 것
      모든 비교는 공격적 접근이 유리

 

 

§IPv6IPv4 프로토콜 비교 

 

 

§IPv6IPv4 주소대응체계 비교

 

 

 

 

반응형

'Topic > 네트워크' 카테고리의 다른 글

OSI 7 계층  (0) 2015.01.20
IPv6 전환절차 및 점검사항  (0) 2014.11.26
IPv6 변환기술  (0) 2014.10.31
IPv6  (0) 2014.10.04
SON  (0) 2014.10.03

 

□ HC-SR04

 

 

 

 

□ HC-SR04 특징(Specification)

 항목 

 내용 

 동작 전압(Working Voltage)

 5V

 동작 전류(Working Current)

 15mA

 동작 주파수(Working Frequency)

 40KHz

 측정 거리(Min, Max Range)

 2 cm ~ 4 m

 측정 각도(Measuring Angle)

 15도 (degree)

 트리거 입력 신호(Trigger Input Signal)

 10㎲ TTL Pulse

 응답 출력 신호(Echo Output Signal)

 거리에 비례하는 TTL Pulse

 크기(Dimension)

 45 * 20 * 15 mm

 라인 구성

 Vcc, Trig, Echo, GND 

 

 

□ HC-SR04 아두이노 회로 구성도( HC-SR04 Arduino circuit diagram )

 

 

 

 

□ HC-SR04 와 아두이노 Pin 배열 

 HC-SR04 

 Arduino 

 비고

 VCC

 5V

 

 TRIG

Digital pin 12

 

 ECHO

Digital pin 11

 

 GND

 GND

 

* TRIG와 ECHO는 Digital INPUT 중 어떤 것을 사용해도 무방함

 

 

□ HC-SR04 Sample Source 

#define DEFN_TRIGGER 12
#define DEFN_ECHO    11
#define DEFN_DELAY   1000
#define DEFN_BIT_RATE 9600
 
void setup(){
 pinMode(DEFN_TRIGGER, OUTPUT);
 pinMode(DEFN_ECHO   , INPUT );
 Serial.begin(DEFN_BIT_RATE);    
}
 
void loop() {
 digitalWrite(DEFN_TRIGGER, LOW);                  
 DEFN_DELAYMicroseconds(2);
 digitalWrite(DEFN_TRIGGER, HIGH);
 DEFN_DELAYMicroseconds(10);
 digitalWrite(DEFN_TRIGGER, LOW);
 
 long time_us = pulseIn(DEFN_ECHO, HIGH);  // Get DEFN_ECHO time in microsecs
 long dist_mm = time_us * 0.17;            // 0.34 / 2
 
 Serial.print("Time(us) : ");        Serial.print(time_us); 
 Serial.print("\tDistance(mm) : ");  Serial.print(dist_mm);
 Serial.println("");
 
 DEFN_DELAY(DEFN_DELAY);
}

 

 

□ HC-SR04 참고자료

HC-SR04 001 datasheet.pdf

 

 

 

 

 

반응형

'아두이노 > 센서' 카테고리의 다른 글

스위치 : 푸시형 NON-LOCK PB86-A1  (0) 2014.11.26
스위치 : 푸시형 NON-LOCK DJP2213  (0) 2014.11.26
I2C Address  (0) 2014.11.21
801s : 진동센서  (0) 2014.11.20
BMP180 : 고도센서, 기압센서, 온도센서  (0) 2014.11.20

아두이노에서 I2C 통신을 구현하기에 앞 서서 I2C 통신의 기본원리를 살펴 보면 아래와 같다.

 

□ 동기식 통신방식, I2C 개요

- 기존 1:1 통신방식인 시리얼(RS232C) 통신의 단점을 개선하여 Master/Slave 기반 1:N 통신이 가능하도록 고안된
  프로토콜

- Philips에서 개발

 

 

 

 

 

 

□ RS232C 대비 I2C 통신 특성

I2C 통신 방식은 RS232C의 단점을 개선한 것으로 두 방식의 특성을 비교하면 아래와 같다. 

 

 I2C

 RS232C 

 통신 방식

 1:N

 1:1

 통신 구조

 - SCL(클록), SDA(데이터) 이용 

 - RX, TX 이용  

 타이밍 처리

 - 클록신호를 이용한 동기식 통신

 - 유연한 타이밍 관리가 가능 

 - 보레이트(전송속도) 엄수 필요 

 

□ I2C통신 구성 시 주의 사항

I2C 통신은 오픈 컬렉터 구성이므로 구성 시 반드시 풀업 저항이 필요하다.

 

 

 

 

 

□ 아두이노 I2C통신

 

 

 

반응형

 

 

 

 

 

 

 MPU6050

 0x68 

 

 

 BMP180

 0x77

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'아두이노 > 센서' 카테고리의 다른 글

스위치 : 푸시형 NON-LOCK DJP2213  (0) 2014.11.26
HC-SR04 : 초음파 거리측정 센서  (0) 2014.11.24
801s : 진동센서  (0) 2014.11.20
BMP180 : 고도센서, 기압센서, 온도센서  (0) 2014.11.20
복합 센서  (0) 2014.11.19

+ Recent posts