<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NTREXGO - 디바이스마트, 엔티렉스 컨텐츠 통합 사이트 &#187; 컬럼</title>
	<atom:link href="http://www.ntrexgo.com/archives/tag/%ec%bb%ac%eb%9f%bc/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ntrexgo.com</link>
	<description>엔티렉스, 디바이스마트 컨텐츠 통합 사이트</description>
	<lastBuildDate>Thu, 03 Mar 2022 06:47:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>[14호]FB155BC 소개 및 실무, 사용방법 교육 무료강좌 기술 자료!</title>
		<link>http://www.ntrexgo.com/archives/1911</link>
		<comments>http://www.ntrexgo.com/archives/1911#comments</comments>
		<pubDate>Sat, 25 Aug 2012 09:43:19 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[스페셜 컬럼]]></category>
		<category><![CDATA[14호]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[블루투스]]></category>
		<category><![CDATA[스페셜]]></category>
		<category><![CDATA[컬럼]]></category>
		<category><![CDATA[펌테크]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=1911</guid>
		<description><![CDATA[디바이스마트 매거진 14호 &#124; 블루투스 기술이 지속적으로 발전하고 있는 가운데 차세대 무선 핵심기술인 UWB와 통합이 확정된 상태이며, 사용처는 여러 분야로 더욱 더 확대 될 것으로 보여지고 있습니다.]]></description>
				<content:encoded><![CDATA[<h5><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm038.jpg" rel="lightbox[1911]"><img class="alignnone size-large wp-image-1988" alt="14scfirm038" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm038-620x285.jpg" width="620" height="285" /></a></h5>
<h4><span style="color: #666699;font-size: 0.83em">스마트폰, 스마트 패드와의 블루투스 통신을 쉽고 빠르게!!</span></h4>
<h2><span style="color: #808080"><strong>FB155BC(SPP 기반 블루투스 모듈) 소개 및 실무, </strong></span></h2>
<h2><span style="color: #808080"><strong></strong><strong>사용방법 교육 무료 강좌 기술!</strong><strong style="color: #000080;font-size: 1.5em"></strong></span></h2>
<p style="padding-left: 420px">자료제공 | ㈜펌테크 기술연구소</p>
<p>2012년 7월 14일에 진행된 무료 강좌의 기술자료를 디바이스마트 매거진 독자들을 위해 간단히 소개하고자 합니다.</p>
<p>&nbsp;</p>
<p><strong><span style="color: #0000ff">1. 주요 기술 내용</span></strong></p>
<p><strong></strong><br />
최근 들어 블루투스 기능이 내장된 스마트기기(스마트폰, 스마트패드)의 폭발적인 증가로 국내, 외적으로 블루투스 기술을 이용한 제품 개발, 생산 등 새롭고 다양한 제품들이 전세계적으로 크게 확대 되고 있습니다.<br />
이렇게 블루투스가 활성화된 이유는 블루투스가 내장된 제품 상호간에 무선상 손쉽게 연결이 항시 가능하도록 구성 되어있으며, 비교대상이 되는 타 근거리 무선네트워크에 비해 철저한 표준화를 바탕으로 제품간 강력한 호환성, 데이터의 신뢰성, 지속적인 스팩 개선 향상 등 발전을 거듭하고 있기 때문입니다.<br />
이에 따라 초창기 Headset, Hand free, Car kit 등의 대중화된 제품으로 시작하여 현재 산업용 시장에서 장기간 검증을 거쳐 충분히 안정성을 검증 받아 대부분의 산업현장에서 데이터 교환을 목적으로 하는 제품에 광범위하게 사용되고 있습니다.<br />
최근 들어 핸드폰, 노트북, 가전제품, PDA, 무선 프린터, MP3, 자동차 진단시스템, 네비게이션, 지하철 스크린도어 제어, 스테레오 헤드셋, 핸즈프리, 무선 결제시스템, 다양한 로봇, 각종 센서 데이터 시스템, 의료솔루션, 자동차 및 선박 조립라인, 반도체 생산라인, POS, 무선바코드, 공장자동화, 무선전광판(금융권 무선 환율표시기 등), GPS, 보안솔루션, 웹패드, 산업용 크레인, 주차 시스템, 기타 응용 분야 등 산업 전반에 걸쳐 널리 사용되고 있습니다.<br />
이는 바로 블루투스 기술이 완전한 상용화가 되었음을 의미하며, 또한 무선 통신체계로서의 안정성에 대한 검증이 끝났음을 의미합니다.<br />
블루투스 기술이 지속적으로 발전하고 있는 가운데 차세대 무선 핵심기술인 UWB와 통합이 확정된 상태이며, 사용처는 여러 분야로 더욱 더 확대 될 것으로 보여지고 있습니다.<br />
이러한 블루투스 기술을 이용해 현재 제품화 되어 전세계적으로 가장 광범위하게 사용되는 산업용 제품으로는 유선상의 RS232케이블을 무선으로 대체한 소형 임베디드 타입의 Serial Adapter 제품들입니다.<br />
FB155BC는 타 업체의 다양한 블루투스 제품과 호환하여, 무선연결이 가능하도록 구성된 제품으로서 손쉽게 스마트폰 및 스마트패드와 무선네트워크를 구성할 수 있는 것이 최대 장점이라고 말할 수 있습니다.<br />
FB155BC는 다양한 산업용 제품군에 내장이 가능하며 무선 네트워크 환경을 필요로 하는 산업 현장과 높은 보안이 요구되는 시설, 기존 유선 네트워크 환경 구성이 어려운 곳에 편리한 무선 네트워크 환경으로 교체가 이루어질 수 있습니다.</p>
<p><strong><span style="color: #0000ff">2. 블루투스 개요</span></strong></p>
<p><strong></strong><br />
<span style="color: #3366ff">1. 블루투스란 ?</span></p>
<p style="padding-left: 30px">1) 블루투스 목표 : 단거리, 저전력, 고 신뢰성, 저가의 무선통신 구현<br />
2) 사용 주파수 : 허가 없이 사용 할 수 있는 ISM(Industrial, Scientific, Medical) 대역사용<br />
2.400 &#8211; 2.4835 GHz, 79 channels<br />
2.465 &#8211; 2.4835 GHz, 23 channels(프랑스)<br />
3) 전송 속도 : 1Mbps ~ 3Mbps<br />
4) 송출 출력 : 1mW(10m, Class2), 100mW(100m Class1)<br />
5) 네트워크 구성 : Master, Slave 형태의 주종 관계로 구성되며, 한 대의 블루투스 장치에 동시접속이 가능한 최대 장치의 수는 7대(ACL기준)이다.<br />
6) 신뢰성 : 주파수 호핑(FHSS: Frequency Hopping Spread Spectrum)기법을 사용하여 Noise가 많은 환경에서도 안정된 무선 연결을 보장한다.</p>
<p><span style="color: #3366ff">2. 제품 소개</span></p>
<p style="padding-left: 30px">FB155BC는 기존의 유선 RS232 케이블 방식을 무선으로 대체 하여 사용할 수 있도록 만들어졌습니다.</p>
<p style="padding-left: 30px"><strong><span style="color: #33cccc">■ FB155BC 주요특징 ■</span></strong></p>
<p style="padding-left: 30px">1) Bluetooth Specification 2.0 Support<br />
2) 8 Pins Header type로 되어 있어 제품에 쉽게 적용 가능<br />
3) AT 명령어를 지원하며, AT 명령어를 이용하여 FB155BC 제어 가능<br />
4) Bluetooth PDA, Bluetooth USB Dongle 등과 원활하게 연결 하여 사용 가능<br />
5) Class2 EDR중에 가장 Compact size 제공<br />
6) 간단하게 블루투스 펌웨어 update 기능 지원<br />
7) 안정적인 데이터 송수신</p>
<p><span style="color: #3366ff">3. 통신거리</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm001.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1947" alt="14scfirm001" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm001-300x183.jpg" width="300" height="183" /></a></p>
<p><strong style="color: #0000ff">3. FB155BC 제품 소개</strong></p>
<p><span style="color: #3366ff">1. 제품 외형</span></p>
<p><span style="color: #00ccff">1.1 FB155BC Dimension</span></p>
<div id="attachment_1948" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm002.jpg" rel="lightbox[1911]"><img class="size-medium wp-image-1948" alt="FB155BC Dimension" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm002-300x225.jpg" width="300" height="225" /></a><p class="wp-caption-text">FB155BC Dimension</p></div>
<p><span style="color: #00ccff">1.2 FB155BC PIN Assign</span></p>
<div id="attachment_1949" class="wp-caption alignnone" style="width: 289px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm003.jpg" rel="lightbox[1911]"><img class="size-medium wp-image-1949" alt="FB155BC PIN Assign과 신호선 및 기능" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm003-279x300.jpg" width="279" height="300" /></a><p class="wp-caption-text">FB155BC PIN Assign과 신호선 및 기능</p></div>
<p style="padding-left: 30px"><strong>·Hard Reset(Factory Reset)</strong><br />
공장 초기값으로 변경하고자 하면 모듈에 전원을 인가한 후 2초 이상 LOW signal(0V)을 FA SET(4번핀)에 입력하면 모든 설정 값이 최초 구입한 상태로 변경됩니다.<br />
<strong>·STATUS port</strong><br />
FB155BC의 상태를 모니터링 하기 위해서 사용됩니다. 블루투스 무선 구간의 연결이 원활하게 이루어져 두 디바이스가 통신이 가능한 상태일 때 LOW(0V)를 유지 합니다. 블루투스 연결을 대기 하거나 연결 시도 및 주변의 블루투스 장치를 검색할 때는 LOW, HIGH를 반복하게 됩니다.<br />
<strong>·UART_CTS, UART_RTS</strong><br />
흐름제어를 사용하지 않을 시에는 연결하지 않아도 FB155BC가 동작하는데 영향을 주지 않습니다.</p>
<p><span style="color: #3366ff">2 인터페이스(핀 연결)</span></p>
<p style="padding-left: 30px"><span style="color: #00ccff">2.1 흐름제어를 사용하지 않을 때</span></p>
<div id="attachment_1950" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm004.jpg" rel="lightbox[1911]"><img class="size-medium wp-image-1950" alt="흐름제어 사용하지 않을 때의 핀 연결도" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm004-300x169.jpg" width="300" height="169" /></a><p class="wp-caption-text">흐름제어 사용하지 않을 때의 핀 연결도</p></div>
<p style="padding-left: 30px"><span style="color: #00ccff">2.2 흐름제어를 사용할 때</span></p>
<div id="attachment_1978" class="wp-caption alignnone" style="width: 310px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm0045.jpg" rel="lightbox[1911]"><img class="size-medium wp-image-1978" alt="흐름제어를 사용할 때의핀 연결도" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm0045-300x169.jpg" width="300" height="169" /></a><p class="wp-caption-text">흐름제어를 사용할 때의핀 연결도</p></div>
<p><span style="color: #3366ff">3. FB155BC 한마디로 표현하자면<strong> “블루투스 SPP프로화일 적용된 무선통신 모듈”</strong></span></p>
<p style="padding-left: 30px">SPP란? SERIAL PORT PROFILE의 약자로 PC 등과의 사용자 인터페이스에 관련된 장치에서 물리적인 시리얼 포트를 블루투스 통신을 사용해 무선상으로 대체하는 방식의 지원에 관련된 블루투스 프로화일을 의미합니다.</p>
<p style="padding-left: 30px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm005.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1951" alt="14scfirm005" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm005-277x300.jpg" width="277" height="300" /></a></p>
<p><span style="color: #3366ff">4. FB155BS &amp;amp; FB155BC 특징</span></p>
<table>
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm006.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1952" alt="14scfirm006" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm006-300x117.jpg" width="300" height="117" /></a></td>
</tr>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm007.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1953" alt="14scfirm007" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm007-300x182.jpg" width="300" height="182" /></a></td>
</tr>
</tbody>
</table>
<p><span style="color: #3366ff">5. FB155 Pin Description</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm008.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1954" alt="14scfirm008" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm008-388x620.jpg" width="310" height="496" /></a></p>
<p><strong style="color: #0000ff"><strong>4. FB155BC 와 스마트폰 연결하기</strong></strong></p>
<p><span style="color: #3366ff">1. Smart_Phone을 사용하기 위한 기본 사항</span></p>
<p style="padding-left: 30px">·Smart_Phone을 PHONE(galaxy-S2)을 사용합니다.<br />
운영체제 : Android(ICS 4.0.3)<br />
·FB155BC(SPP)는 SPP가 운영되고 있어야 합니다.<br />
·FB155BC(SPP)가 SPP Interface Board에 장착되어 Scan상태로 운영되고 있어야 합니다.</p>
<p style="padding-left: 30px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm014.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1959" alt="14scfirm014" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm014-300x191.jpg" width="300" height="191" /></a></p>
<p> <span style="color: #3366ff">2. FB155BC(SPP) 구성핀 설명</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm015.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1960" alt="14scfirm015" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm015-300x103.jpg" width="300" height="103" /></a></p>
<p style="padding-left: 30px">·FB155BC(SPP)는 시리얼 DATA를 UART로 입력 받아 무선으로 송신하는 BLUETOOTH 장치입니다.<br />
·FB155BC(SPP)는 연결하고자 하는 블루투스 장치에서 Serial Port가 지원되어야 무선 구간 연결이 이루어지며 이후 데이터 송신이 가능합니다.</p>
<p style="padding-left: 30px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm016.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1961" alt="14scfirm016" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm016-300x153.jpg" width="300" height="153" /></a><br />
FB155BC는 FB155BC(HID)와 호환이 되지 않습니다.<br />
FB155BC : Serial Port Profile 운영<br />
FB155BC(HID) : Hid Device Profile 운영</p>
<p><span style="color: #3366ff">3. FB155BC(SPP) 사용시 Serial Data가 스마트폰으로 전달되는 과정</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm017.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1962" alt="14scfirm017" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm017-300x260.jpg" width="300" height="260" /></a><br />
<span style="color: #3366ff">4. FB155BC(SPP)설정 값 변경</span></p>
<p><span style="color: #33cccc">(1) AT command를 이용한 FB155BC(SPP) 제어</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm018.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1963" alt="14scfirm018" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm018-386x620.jpg" width="309" height="496" /></a></p>
<p style="padding-left: 30px">FB155BC(SPP)의 설정 값을 변경하는 방법은 AT Command를 이용하여 변경하는 것과 BT Configuration Tool을 이용하는 것, 두가지가 있습니다. FB155BC(SPP)는 어떤 방법을 사용하여 설정 값을 변경하여도 동일하게 적용이 됩니다.</p>
<p><span style="color: #33cccc">(2) AT command를 이용한 FB155BC(SPP) 제어</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm009.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1955" alt="14scfirm009" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm009-449x620.jpg" width="323" height="446" /></a></p>
<p><span style="color: #33cccc">(3) BT Configuration Tool을 이용한 FB155BC(SPP)제어</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm010.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1956" alt="14scfirm010" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm010-300x201.jpg" width="300" height="201" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm011.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1957" alt="14scfirm011" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm011-370x620.jpg" width="296" height="496" /></a></p>
<div class="symple-box yellow none" style="text-align:left; width:100%;"> 
<p><em id="__mceDel">※ 하이퍼 터미널과 BT Configuration Tool은 Serial Port를 이용하기 때문에 동시에 프로그램을 실행할 수 없습니다. 반드시 하나의 프로그램만을 실행하여 FB155BC(SPP)의 설정을 변경하여야 합니다.<br />
</div></em></p>
<p><span style="color: #33cccc">(4) BT Configuration Tool을 이용한 FB155BC(SPP) 제어</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm013.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1958" alt="14scfirm013" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm013-300x203.jpg" width="300" height="203" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm019.jpg" rel="lightbox[1911]"><img alt="14scfirm019" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm019-364x620.jpg" width="291" height="496" /></a></p>
<p><span style="color: #33cccc">(5) BT Configuration Tool을 이용한 FB155BC(SPP) 제어</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm020.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1980" alt="14scfirm020" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm020-300x281.jpg" width="300" height="281" /></a></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm021.jpg" rel="lightbox[1911]"><img class="alignnone size-medium wp-image-1981" alt="14scfirm021" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm021-300x209.jpg" width="300" height="209" /></a></p>
<p><span style="color: #33cccc">(6) BT Configuration Tool을 이용한 FB155BC(SPP) 제어</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm022.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1946" alt="14scfirm022" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm022-344x620.jpg" width="310" height="558" /></a><br />
<span style="color: #3366ff">5. Galaxy-S “메인메뉴” 선택</span></p>
<p>Galaxy-S 화면상에서 메인메뉴 아이콘을 클릭합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm023.jpg" rel="lightbox[1911]"><img class="alignnone size-full wp-image-1964" alt="14scfirm023" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm023.jpg" width="287" height="255" /></a><br />
<span style="color: #3366ff">6. Galaxy-S “환경설정” 선택</span><br />
메인메뉴 중 환경설정 아이콘을 클릭합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2012/08/14scfirm039.jpg" rel="lightbox[1911]"><img class="alignnone size-large wp-image-1997" alt="14scfirm039" src="http://www.ntrexgo.com/wp-content/uploads/2012/08/14scfirm039.jpg" width="272" height="254" /></a><br />
<span style="color: #3366ff">7. Galaxy-S “무선 및 네트워크” 선택</span><br />
환경설정 메뉴 중 무선 및 네트워크 아이콘을 클릭합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm025.jpg" rel="lightbox[1911]"><img class="alignnone size-full wp-image-1965" alt="14scfirm025" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm025.jpg" width="274" height="252" /></a><br />
<span style="color: #3366ff">8. Galaxy-S “블루투스 설정” 선택</span><br />
무선 및 네트워크 메뉴 중 블루투스 설정 아이콘을 클릭합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm026.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1966" alt="14scfirm026" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm026.jpg" width="266" height="212" /></a></p>
<p><span style="color: #3366ff">9. Galaxy-S Bluetooth “ON”</span><br />
Bluetooth 기능을 ON 시킵니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm027.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1967" alt="14scfirm027" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm027.jpg" width="257" height="153" /></a><br />
<span style="color: #3366ff">10. Galaxy-S Bluetooth 검색 진행</span><br />
Bluetooth 기능이 ON되면 자동으로 주변의 Bluetooth 장치를 검색합니다. “기기 검색”을 클릭하면 수동으로 주변의 Bluetooth장치를 검색합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm028.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1968" alt="14scfirm028" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm028-286x300.jpg" width="257" height="270" /></a><br />
<span style="color: #3366ff">11 Galaxy-S Blue Term 실행</span><br />
검색된 “FB155V2.2.1” 장치는 Smart Phone의 블루투스 설정에서 연결 시도는 하지 않습니다. Smart Phone에서 SPP에 대한 지원 가능한 App이 없기 때문에 SPP를 지원하는 Bluetooth App을 App Store에서 다운로드 하여 SPP연결을 진행 합니다.<br />
<span style="color: #800000">해당 Guide에서는 Blueterm이라는 App을 이용하여 SPP연결을 진행합니다.</span></p>
<p>메인 메뉴에서 Blue Term을 실행 합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm029.jpg" rel="lightbox[1911]"><img class="alignnone size-full wp-image-1969" alt="14scfirm029" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm029.jpg" width="261" height="227" /></a></p>
<p><span style="color: #3366ff">12. Galaxy-S Blue Term 검색 진행</span><br />
Blue Term이 실행 되면 메뉴 버튼을 눌러 메뉴 바를 실행 시킵니다. 메뉴 바가 생성되면 “Connect device”를 눌러 주변 블루투스 기기에 대한 정보를 가져 옵니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm030.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1970" alt="14scfirm030" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm030-300x174.jpg" width="270" height="157" /></a><br />
<span style="color: #3366ff">13.Galaxy-S Blue Term 검색 진행</span><br />
기존에 연결된 장치가 있으면 장치 이름이 나타나고 연결된 장치가 없으면 “No Devices Have Been Paired” 라는 메시지를 확인 할 수 있습니다. “Scan For Devices” 버튼을 눌러 주변 기기에 대한 검색을 진행합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm031.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1971" alt="14scfirm031" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm031-300x181.jpg" width="270" height="163" /></a><br />
<span style="color: #3366ff">14. FB155BC(SPP)와 연결 진행</span><br />
주변에 블루투스 장치가 검색되면 장치 이름과 블루투스 주소를 나타냅니다. 검색된 “FB155V2.2.1”을 눌러 연결을 진행 합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm032.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1972" alt="14scfirm032" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm032.jpg" width="238" height="231" /></a><br />
<span style="color: #3366ff">15. FB155BC(SPP)와 연결 진행 &#8211; Pin Code</span><br />
연결 진행 과정에서 Pin Code묻는 창이 나타나면 “0000”을 입력하고 확인을 클릭합니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm033.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1973" alt="14scfirm033" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm033.jpg" width="235" height="212" /></a><br />
<span style="color: #3366ff">16. FB155BC(SPP)와 연결 완료</span><br />
“FB155V2.2.1”과 연결이 이루어지면 Connect 완료 메시지를 확인 할 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm034.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1974" alt="14scfirm034" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm034-300x84.jpg" width="270" height="76" /></a><br />
<span style="color: #3366ff">17. SPP Interface Board 연결 후 상태</span><br />
“Connect xxxxxxxxxxxx”라는 메시지는 Bluetooth 장치가 연결 된 것을 나타냅니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm035.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1975" alt="14scfirm035" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm035-300x203.jpg" width="270" height="183" /></a><br />
<span style="color: #3366ff">18. SPP Interface Board 연결 후 Serial Data 수신</span><br />
Smart Phone에서 Blue Term을 통해 “Firmtech”라는 문자를 입렵하면 하이퍼터미널 창에서 “Firmtech”라는 문자가 수신되는 것을 확인 할 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm036.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1976" alt="14scfirm036" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm036-300x200.jpg" width="270" height="180" /></a></p>
<p><span style="color: #3366ff">19. Galaxy-S Blue Term 연결 후 Serial Data 수신</span><br />
하이퍼터미널 창에서 “Firmtech”라는 문자를 입력하면 Smart Phone의 Blue Term 창에 “Firmtech”라는 문자가 수신되는 것을 확인 할 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm037.jpg" rel="lightbox[1911]"><img class="alignnone  wp-image-1977" alt="14scfirm037" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/14scfirm037.jpg" width="266" height="122" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/1911/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[13호]스테레오 영상을 처리하는데 있어 발생하는 이슈</title>
		<link>http://www.ntrexgo.com/archives/2280</link>
		<comments>http://www.ntrexgo.com/archives/2280#comments</comments>
		<pubDate>Mon, 25 Jun 2012 10:40:23 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[스페셜 컬럼]]></category>
		<category><![CDATA[13호]]></category>
		<category><![CDATA[강좌]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[스페셜]]></category>
		<category><![CDATA[위드로봇]]></category>
		<category><![CDATA[컬럼]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=2280</guid>
		<description><![CDATA[디바이스마트 매거진 13호 &#124; "같은 물체에 대해 서로 다른 장소에서 촬영한 여러 이미지에서 물체의 3차원 정보를 계산하는 학문 분야"가 바로 스테레오 비전입니다. 각각은 다시 여러 제한 조건들에 따라 카메라 캘리브레이션이 되어 있는지 아닌지(calibrated or uncalibrated), 카메라를 하나를 사용하고 이를 움직여가며 촬영하는 방식인지, 아니면 여러 대의 카메라를 사용하는 것인지(isolated camera or video sequence), 이미지가 단순히 두 장인지 아니면 수 십, 수 백장을 처리하는 시스템인지에 따라 다양한 연구가 진행됩니다. 하지만 좁은 의미에서는 서로 다른 장소에서 촬영한 두 장의 이미지에서 거리 정보를 추출해 내는 분야로 이해되기도 합니다.]]></description>
				<content:encoded><![CDATA[<table width="620">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths.jpg" rel="lightbox[2280]"><img class=" wp-image-2293 alignleft" alt="13SCwiths" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths-300x171.jpg" width="240" height="137" /></a></p>
<h3>스테레오 영상을 처리하는데 있어</h3>
<h3>발생하는 이슈</h3>
<p style="text-align: right">글 | 위드로봇(주) 김도윤</p>
<p><span style="color: #008000"><strong>■ 스테레오 비전이란?</strong></span></p>
<p>영화관에서 3D나 4D라는 표현이 자주 쓰이게 되면서 입체감 있는 영상에 대한 이해는 예전보다는 훨씬 쉬워졌습니다. 일반 카메라로 찍은 사진은 3차원(3D) 물체의 반사광을 2차원(2D) 필름 또는 2차원 센서에 투영(projection) 시킨 것이기에 3차원 정보 중 카메라에서부터 물체까지의 거리 정보는 사라지게 됩니다. 즉 3D가 2D로 바뀌게 되고 이러한 과정을 projection 이라고 하는 것이죠. 따라서 한 장의 사진으로는 이러한 거리 정보는 알아낼 수가 없습니다. 이건 간단한 실험으로도 확인해 볼 수 있습니다. 공을 던졌다 잡을 때 한 쪽 눈을 감고 던졌다 잡으려고 해 보면 공과 거리감이 사라져 잡기가 매우 어렵다는 것을 경험할 수 있습니다.</p>
<p>사라진 거리 정보를 복원하기 위해서는 또 다른 위치에서 찍은 다른 사진이 필요하게 되죠. 이 때문에 사람의 눈도 두 개가 있어 같은 물체를 서로 다른 장소(양쪽 각각의 눈 위치)에서 보고 그 영상의 차이를 이용해 거리를 복원하고 있습니다. 따라서 영상을 통해 거리 정보를 파악하고 카메라는 한 대가 아닌 두 대 이상이 되어야만 합니다. 이처럼 &#8220;같은 물체에 대해 서로 다른 장소에서 촬영한 여러 이미지에서 물체의 3차원 정보를 계산하는 학문 분야&#8221;가 바로 스테레오 비전입니다. 각각은 다시 여러 제한 조건들에 따라 카메라 캘리브레이션이 되어 있는지 아닌지(calibrated or uncalibrated), 카메라를 하나를 사용하고 이를 움직여가며 촬영하는 방식인지, 아니면 여러 대의 카메라를 사용하는 것인지(isolated camera or video sequence), 이미지가 단순히 두 장인지 아니면 수 십, 수 백장을 처리하는 시스템인지에 따라 다양한 연구가 진행됩니다. 하지만 좁은 의미에서는 서로 다른 장소에서 촬영한 두 장의 이미지에서 거리 정보를 추출해 내는 분야로 이해되기도 합니다.</p>
<p><strong><span style="color: #008000">■ 거리 정보란?</span></strong></p>
<table>
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths9.jpg" rel="lightbox[2280]"><img class="alignnone size-medium wp-image-2289" alt="13SCwiths9" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths9-300x219.jpg" width="300" height="219" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths10.jpg" rel="lightbox[2280]"><img class="alignnone size-medium wp-image-2290" alt="13SCwiths10" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths10-300x220.jpg" width="300" height="220" /></a></td>
</tr>
</tbody>
</table>
<p>위 사진은 특정 건물을 위치를 조금 달리해서 찍은 두 장의 사진입니다. 얼핏 보면 같아 보이지만 자세히 보면 조금 틀리다는 것을 알 수 있습니다. 가까이 있는 좌측 건물 지붕에 비해 뒤에 있는 더 멀리있는 나무의 위치는 두 장의 이미지에서는 확연히 차이가 나는 부분입니다. 이처럼 동일한 물체에 대한 두 장의 사진 사이에서 나타나는 차이점을 이용하면 이미지 중에서 어느 부분이 카메라를 기준으로 더 가까운지를 알아낼 수 있습니다. 이를 이미지나 거리값으로 계산한 결과를 거리 정보라고 합니다. 2차원 이미지 형태로 나타내는 것이 직관적으로 파악되기에 위 그림에 대한 거리 정보는 아래 그림처럼 가까운 곳은 밝은 색으로 먼 곳은 어두운 색으로 표시하는 것이 일반적입니다. 자세히 보시면, 건물 앞에 있는 도로는 카메라 기준으로 가깝기에 밝은 색으로 표시되어 있고, 건물은 뒤쪽으로 갈수록 어두운 색으로 표시된 것을 확인할 수 있습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths8.jpg" rel="lightbox[2280]"><img class="size-medium wp-image-2288 aligncenter" alt="13SCwiths8" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths8-300x219.jpg" width="300" height="219" /></a></p>
<p><strong style="font-size: 11px;line-height: 19px"><span style="color: #008000">■ 거리 정보와 디스패리티(Disparity)의 관계</span></strong></p>
<p>앞서 살펴본 바와 같이 거리 정보를 파악하기 위해서는 양쪽 이미지 사이에 대응되는 점이 얼마나 차이가 나야 하는지를 파악했어야 했습니다. 이를 그림으로 그려보면 아래 그림처럼 3차원 공간 상의 한 점은 왼쪽, 오른쪽 눈에 각각 투영이 되는데 그 점의 거리에 따라 위치가 서로 다르게 됩니다. 가까이에 있는 물체는 그 차이가 크고, 멀리 있는 물체는 그 차이가 적게 되죠.</p>
<table align="center">
<tbody>
<tr>
<td style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths7.jpg" rel="lightbox[2280]"><img class="alignnone  wp-image-2287" alt="13SCwiths7" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths7.jpg" width="190" height="233" /></a></td>
<td style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths6.jpg" rel="lightbox[2280]"><img class="alignnone  wp-image-2286" alt="13SCwiths6" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths6-300x272.jpg" width="240" height="218" /></a></td>
</tr>
</tbody>
</table>
<p>극단적으로 매우 멀리에 있는 물체는 차이가 나지 않게 됩니다. 이처럼 왼쪽 영상의 한 점의 위치에 비해 오른쪽 영상의 대응점 위치의 차이를 디스패리티(disparity)라 부르며, 그 관계식은 아래와 같습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths5.jpg" rel="lightbox[2280]"><img class="size-full wp-image-2285 aligncenter" alt="13SCwiths5" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths5.jpg" width="225" height="58" /></a></p>
<p>풀어서 설명해 보면 &#8216;왼쪽 영상 한 점의 위치에서 대응되는 오른쪽 영상 한 점의 위치 차이는 그 점의 3차원 공간 상의 거리 z에 반비례하며, 촛점 거리 f와 두 영상을 촬영할 때 거리차 B(베이스라인)에 비례한다&#8217; 입니다. 예를 들어볼까요. 스테레오 카메라로 어떤 물체를 촬영해 보면, 가까이에 있는 물체는 왼쪽 영상과 오른쪽 영상에 그 차이가 두드러지게 나타나고, 멀리 있는 물체는 차이가 상대적으로 작게 나타나게 됩니다. 왼쪽 카메라와 오른쪽 카메라의 거리가 멀면 디스패리티가 크게 나타나기에 거리 정보를 보다 정밀하게 파악할 수 있습니다. 따라서 특정 스테레오 카메라로 거리 정보를 추출했는데 해상도가 불만족스럽고 더 높은 정밀도가 필요하다면 카메라와 카메라 사이를 넓히는 것도 한 가지 해결 방법이 됩니다. 또 다른 방법으로는 카메라 렌즈를 촛점 거리가 긴 모델로 바꾸는 것도 한 가지 방법이 되겠죠. 대신 베이스라인이 길어지거나 촛점 거리가 긴 모델로 바꾸면 한 번에 거리 정보를 계산할 수 있는 3차원 공간 상의 영역은 줄어들게 됩니다. 따라서 스테레오 비전을 연구하는 사람은 베이스라인이나 렌즈의 촛점 거리를 바꾸어 가며 자신의 실험에 가장 적절한 범위를 찾아야 할 필요가 있습니다.</p>
<p><strong><span style="color: #008000">■ 문제는 매칭(matching)이야!</span></strong></p>
<p>지금까지 진행한 내용을 정리해볼까요? 한 대의 카메라로 찍은 한 장의 영상으로는 거리 정보를 알 수가 없었습니다. 그래서 두 대의 카메라(stereo camera)로 찍은 두 장의 영상에서 거리 정보를 추출해야하고, 거리 정보는 두 영상에서 대응되는 점의 위치가 서로 다르게 나타나며(disparity) 그 정도는 거리에 반비례해서 나타났었습니다. 디스패리티를 계산하면 거리 정보는 나오는 셈인데, 그럼 왼쪽 이미지의 한 점이 오른쪽 이미지 상 어디에 존재하는지를 찾아야 합니다. 이를 스테레오 비전에서는 매칭(matching) 또는 코레스펀던스(correspondence)라고 부릅니다. 얼핏 생각하면 매칭은 간단해 보이지만, 640&#215;480 해상도를 가지는 VGA급 영상에서 예를 들어보면 다음과 같이 어마어마한 연산량을 필요로 합니다.</p>
<p>(1) 왼쪽 이미지에서 한 점을 선택합니다.</p>
<p>(2) 이 이미지와 같은 점은 오른쪽 이미지에서 640 x 480 loop를 돌려 찾습니다.</p>
<p>(3) 다시 왼쪽 이미지에서 또 한 점을 선택하고 (2)를 반복합니다. 이러한 반복은 640&#215;480번 반복됩니다.</p>
<p>어떻습니까? VGA급 영상은 최근 수M ~ 수 십M급 카메라에 비하면 매우 열악한 낮은 해상도임에도 불구하고, 매칭하는데 (640&#215;480)x(640&#215;480) 루프를 반복해야만 합니다. 당연히 시간이 많이 소요되고 실시간으로 계산이 안되게 됩니다. 또한 왼쪽 영상과 오른쪽 영상의 매칭을 하기 위해서는 한 점의 정보만으로는 부족한 경우가 태반이기에 매칭을 할 때는 일정 블록(block)을 이용하게 되며, 이 또한 연산 시간을 더욱 늘리게 됩니다.</p>
<p>따라서 스테레오 비전 분야의 연구 중에서 가장 중요한 부분은 바로 매칭 부분이며, 역설적이게도 많은 연구자들이 연구를 진행하고 있지만 아직까지 상업적으로 사용하기에는 많은 부분이 부족하기도 합니다.</p>
<p><strong style="font-size: 11px;line-height: 19px"><span style="color: #008000">■ 매칭 시간을 줄여주는 에피폴라 제한조건 (epipolar constraint)</span></strong></p>
<p><span style="font-size: 11px;line-height: 19px">VGA급 해상도의 영상에서 거리를 추출하는데 1~2분씩 소요된다면 멈춰있는 물체의 경우에는 상관이 없을 수도 있지만 움직이는 로봇이라던지 자동차라면 전혀 사용할 수 없게 됩니다. 위 매칭 문제를 잘 살펴보면 왼쪽 영상에서 한 점에 대응되는 점을 찾기 위해 오른쪽 영상을 모두 뒤지고 있는 것을 발견할 수 있습니다. 물론 오른쪽 영상에 어디에 있는지는 미리 알 수 없기에 뒤져야 하는 것은 맞는데, 오른쪽 영상을 모두 뒤질 필요가 있을까요? 영상을 촬영할 때 카메라가 어떻게 배치되어 있는지 정보를 사전에 알 수 있다면 위 질문에 대한 답을 할 수가 있습니다. 이러한 내용이 담겨져 있는 수학적 정리가 에피폴라 제한조건입니다. 따라서 스테레오 매칭 문제에서 연산 속도를 증가시키기 위해서는 에피폴라 제한조건을 이해해서 이를 적용해야 하며, 이를 적용하면 2D 공간를 뒤져야 하는 일에서 1D 공간을 뒤지는 문제로 바꿀 수 있습니다. 에피폴라 제한조건은 Project Space에서 수학적으로 유도하면 깔끔하게 나오는 수식입니다만, 본고에서는 수식을 사용하지 않고 그림을 통해 물리적 의미를 전달해 보도록 하겠습니다.</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths4.jpg" rel="lightbox[2280]"><img class="size-medium wp-image-2297 aligncenter" alt="13SCwiths4" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths4-300x125.jpg" width="300" height="125" /></a></p>
<p>자, 위 그림을 찬찬히 잘 살펴보겠습니다. 3차원 공간 상에 X라는 점이 있습니다. 이 점은 왼쪽 카메라에서는 렌즈 촛점 O와 연결하는 레이(ray)상에 놓이게 되므로 x로 투영됩니다. 위 그림에서 x를 확인하셨나요? 자, 그럼 이 부분이 매우 중요한데요, 이미지 상에서 본 x라는 점은 3차원 공간 상에 위치한 X이기도 하지만 xX 선분 상에 있는 어떠한 점도 영상에서는 x로 보이게 됩니다. 이게 앞서 설명한 &#8220;투영(projection)이 되기 때문에 영상에서 거리 정보는 없어진다&#8221;와 일맥상통한 부분이죠. 따라서 영상에서 x라는 점은 3차원 공간 상에서는 xX 라인에 있는 어떠한 점도 x가 될 수 있기에, x에 대응되는 오른쪽 카메라에서의 후보군은 선분으로 나타나게 됩니다. 이 때 이 선분들이 하나로 만나는 점이 생기는데요, 그 점은 재미있게도 왼쪽 카메라와 오른쪽 카메라의 중심(OO&#8217;)을 서로 연결한 직선이 이미지를 관통하는 점 e와 e&#8217; 으로 나타납니다. 이 때 파악된 e를 에피폴(epipole)이라고 부르고 에피폴을 지나는 후보군 선분을 에피폴라 라인(epipolar line)이라고 부릅니다. 그리고 이러한 일련의 조건들을 에피폴라 제한조건이라고 합니다. 이 부분은 매우 중요하니 설명과 그림을 보면서 충분히 숙지하시기 바랍니다.</p>
<p>우리가 매칭에 활용한 부분은 에피폴라 라인입니다. 다시 거슬러올라가 볼까요? (a)거리 정보를 알기 위해서는 디스패리티 파악이 필요했습니다. (b)디스패리티를 알기 위해서는 매칭을 해야 하는데, 매칭은 영상 전체를 모두 뒤져야 하기 때문에 매우 연산량이 많았습니다. (c)그런데 앞서 본 바에 의하면 왼쪽 영상에서 한 점은 3차원 공간 상에서 후보군이 한 직선으로 나타나고 이는 오른쪽 카메라에서 특정한 라인으로 표시가 되는데, 그 라인은 항상 에피폴을 지나갔었습니다. (d)에피폴은 카메라 배치에 따라 정해지는 것이므로 미리 알 수가 있으니 이를 이용하면 오른쪽 영상 전체를 뒤질 필요없이 에피폴라 라인만 뒤지면 됩니다. (e) 그럼 이제 에피폴을 어떻게 찾아내는가 문제로 바뀝니다.</p>
<p><strong style="font-size: 11px;line-height: 19px"><span style="color: #008000">■ 스테레오 카메라 캘리브레이션</span></strong></p>
<p><span style="font-size: 11px;line-height: 19px">에피폴은 각각의 카메라 중심을 연결한 선이기에 카메라 중심을 정확하게 알아야 할 필요가 있습니다. 이는 다시 카메라 캘리브레이션으로 해결하는 문제로 바뀝니다. 카메라 캘리브레이션은 그 자체만으로도 또 하나의 중요한 학문 분야여서 원론부터 설명하면 매우 길어집니다. 본고는 스테레오 카메라에서 발생하는 문제에만 관심을 집중해 보겠습니다. 다행히도 스테레오 카메라의 캘리브레이션을 위한 기법들은 오픈 소스로 많이 공개되어 있으며, 라이브러리로도 공급이 됩니다. 대표적으로 유명한 라이브러리는 OpenCV이며, 이 안에는 Jang이 만든 캘리브레이션 기법이 구현되어 있습니다. 미리 준비된 체크 무늬 PDF 문서를 프린터로 출력하여 카메라 앞에서 이 출력 문서를 움직여가며 촬영한 이미지를 캘리브레이션 프로그램에 넣어주면 스테레오 카메라 캘리브레이션 결과값인 펀더맨털 행렬(Fundamental matrix)를 결과값으로 반환합니다. 이 값을 이용하면 2D 공간을 모두 뒤지던 매칭 문제를 1D 공간 문제로 바꿀 수 있으며, 이 또한 OpenCV에 이러한 기법으로 구현된 함수와 예제 코드가 있습니다.</span></p>
<p><strong style="font-size: 11px;line-height: 19px"><span style="color: #008000">■ 에피폴라 라인을 일치시키는 렉티피케이션(rectification)</span></strong></p>
<p><span style="font-size: 11px;line-height: 19px">스테레오 카메라 캘리브레이션이 완료되면 에피폴의 위치를 알 수 있고 왼쪽 카메라 한 점에 대응되는 오른쪽 카메라 영상의 에피폴라 라인을 알 수 있습니다. 일반적인 스테레오 카메라에서는 아래 그림처럼 에피폴라 라인이 사선으로 나타나게 됩니다. 이제 이 에피폴라 라인만 뒤지면 매칭 문제는 해결할 수 있는데, 문제는 이 라인을 뒤지는 것도 일입니다. X 축으로 평행한 평행선이 아니기에 일일히 다음 점의 위치를 찾아 이미지 값을 확인해야 하는 식으로 프로그래밍이 됩니다.</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths3.jpg" rel="lightbox[2280]"><img class="size-full wp-image-2296 aligncenter" alt="13SCwiths3" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths3.jpg" width="300" height="127" /></a><br />
이 문제를 좀 더 단순화하기 위해 에피폴라 라인을 평행하도록 이미지를 변환하는 과정을 이미지 렉티피케이션(image rectification)이라고 합니다. 위 이미지에서 캘리브레이션된 데이터를 이용해 렉티피케이션한 결과는 아래와 같습니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths2.jpg" rel="lightbox[2280]"><img class="size-medium wp-image-2295 aligncenter" alt="13SCwiths2" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths2-300x128.jpg" width="300" height="128" /></a></p>
<p>이렇게 변환해 놓으면, 왼쪽 영상의 한 점은 오른쪽에서 한 줄만 처음에서부터 끝까지 쭉 찾으면 되기에 프로그램 코드가 무척 간결해 집니다. 물론 이렇게 렉티피케이션하는데 시간은 추가로 소요되지만 매칭에 줄어드는 시간까지 함께 생각해 보면 렉티피케이션을 수행하는 쪽이 더 빠르기에 스테레오 매칭에 있어서 렉티피케이션은 필요한 과정으로 인식되고 있습니다. 스테레오 카메라에 따라서 이러한 렉티피케이션까지 수행한 결과를 출력하는 스테레오 카메라도 있습니다. 이러한 카메라를 사용하면 프로그램에서는 알고리즘에 사용할 수 있는 시간이 더 많이 확보되기에 고급 알고리즘을 구현하는데 부담을 덜 수 있다는 장점이 생기죠.</p>
<p><strong style="font-size: 11px;line-height: 19px"><span style="color: #008000">■ 이슈 정리</span></strong></p>
<p><span style="font-size: 11px;line-height: 19px">스테레오 영상을 처리하는데 발생하는 이슈들을 시간 순으로 열거해 보았고 각각은 어떻게 해결해야 하는지를 설명했습니다. 간략히 표로 정리하면 다음과 같습니다.</span></p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths12.jpg" rel="lightbox[2280]"><img class="alignnone size-medium wp-image-2292" alt="13SCwiths12" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths12-300x249.jpg" width="300" height="249" /></a></p>
<p><strong><span style="color: #008000">■ 스테레오 카메라 OjOcamStereo-VGA30</span></strong></p>
<p>&nbsp;</p>
<p>위에 언급했듯이 영상으로 3차원 정보를 찾아내는 문제는 많은 응용 분야가 있기에 위드로봇 연구소에서는 스테레오 영상에 관련된 많은 용역을 수행했었습니다. 일부는 스테레오 카메라를 만드는 일도 있었고, 일부는 스테레오 카메라는 기존 상용품을 사용하되 처리 알고리즘을 개발하는 업무이기도 했습니다. 후자의 경우 대표적인 상용품이 몇 가지 있는데 무척 고가(5백만원 ~ 수 천만원)에 판매되고 있습니다. 위드로봇 연구소에서도 연구에 활용하기 위해 구매하여 사용하고 있습니다만 매우 비싸기에 여러 명이 돌려가며 사용하고 있는 형국입니다. 그래서 스테레오 카메라 제작 및 영상 처리 알고리즘 기술은 확보되었기에 위드로봇 연구소 내부에서 쓸 목적으로 처음에는 제작이 시작되었습니다. 그 덕분에 케이스나 외관은 상대적으로 덜 신경쓴 티가 납니다. 내부에서 이런저런 용도로 쓰고 있던 중 한 번 보신 분들이 구매하고 싶다는 의견을 주셔서 디바이스마트를 통해 판매까지 이어지게 되었습니다.</p>
<p style="text-align: center"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths1.jpg" rel="lightbox[2280]"><img class=" wp-image-2294 aligncenter" alt="13SCwiths1" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths1-257x300.jpg" width="206" height="240" /></a></p>
<p>내부 센서는 CMOS 1.3M급을 사용했으며, 전송은 640&#215;480 해상도로 왼쪽, 오른쪽 각각 30 프레임씩 동기가 맞은 영상이 USB 2.0 포트를 통해 전달됩니다. 베이스라인은 물리적인 배치는 116mm이며, 제품마다 부착할 때 조금씩 편차는 발생하게 됩니다. 이는 캘리브레이션을 통해 보상할 수 있습니다. 보드는 밑 부분에 일반 카메라 삼각대를 부착할 수 있는 기구물이 있어 이를 부착하면 삼각대에 바로 연결할 수 있습니다. 삼각대가 아닌 다른 곳에 장착을 하는 용도로는 보드 네 귀퉁이에 M3 홀이 뚫려 있으므로 이를 활용하시면 됩니다.</p>
<p>USB 포트에 연결하고 설치 프로그램을 설치하면, 바로 화면에 영상이 나옵니다. 렌즈는 M12 렌즈를 사용하며 촛점거리가 서로 다른 세 종류의 렌즈를 기본 제공하여 필요에 따라 선택할 수 있도록 하였습니다. 지원하는 OS는 Windows XP/Vista, win7 32bit/64bit를 지원하며, OpenCV와 연결하는 예제 코드도 제공하여 빠르게 원하시는 결과를 볼 수 있도록 하였습니다. 각각의 카메라는 노출 시간, 화이트 밸런스를 설정할 수 있으며, 그 결과들은 아래 링크에서 동영상으로 확인해 보실 수 있습니다.</p>
<p><a href="http://withrobot.com/category/Camera">http://withrobot.com/category/Camera</a></p>
<p><strong style="font-size: 11px;line-height: 19px"><span style="color: #008000">■ OjOcam Roadmap</span></strong></p>
<p>위드로봇(주)에서는 고성능, 고해상도 스테레오 카메라와 다채널 카메라를 지속적으로 출시할 예정입니다. 현재는 VGA급 해상도를 30프레임으로 전송하고 있습니다만, VGA급 해상도에 글로벌 셧터를 내장하고, 60프레임의 속도로 USB 3.0 인터페이스를 갖춘 OjOcamStereo-VGA60이 개발되고 있으며, 속도보다는 해상도에 중점을 둔 OjOcamStereo-QXGA15도 개발 중입니다.</p>
<p><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths11.jpg" rel="lightbox[2280]"><img class="alignnone size-medium wp-image-2291" alt="13SCwiths11" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/13SCwiths11-300x158.jpg" width="300" height="158" /></a></p>
<p><strong style="font-size: 11px;line-height: 19px"><span style="color: #008000">■ 무료 강좌 공지</span></strong></p>
<p>원래는 글을 통해 스테레오 이미지 처리의 기초를 잘 풀어보려고 했으나 역시나 지면을 통해 지식을 전달하는 데에 한계를 느낍니다. 직접 만지면서 영상을 보면서 작업하면 금방 이해될 것을 글로 설명하려다보니 비효율적이라는 생각이 드네요. 8월 11일 토요일 오전 10시 ~ 12시, 8월 18일 토요일 오전 10시 ~ 12시에 위드로봇(주)에서 디바이스마트 협조를 받아 OjOcamStereo-VGA30을 이용한 스테레오 영상 처리에 대한 세미나와 실습을 진행합니다. 노트북을 지참하고 오시는 분들은 OjOcamStereo-VGA30을 직접 연결하여 영상을 확인해 보실 수 있으며, 캘리브레이션 및 거리 영상을 추출하는 코드를 직접 돌려보며 스테레오 영상 처리 분야에서 이슈가 되는 부분을 직접 경험하실 수 있을 것입니다. 공간은 한정되어 있어 10명만 참석하실 수 있는데, 참석을 요청하시는 분이 많으시면 추후 추가 세미나 일정을 잡도록 하겠습니다.</p>
<p>&nbsp;</p>
<p>&nbsp;</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/2280/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[11호]왜 두 개의 센서를 융합하는가?</title>
		<link>http://www.ntrexgo.com/archives/3930</link>
		<comments>http://www.ntrexgo.com/archives/3930#comments</comments>
		<pubDate>Sat, 25 Feb 2012 07:17:05 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[스페셜 컬럼]]></category>
		<category><![CDATA[11호]]></category>
		<category><![CDATA[pinkwink]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[상보필터]]></category>
		<category><![CDATA[융합]]></category>
		<category><![CDATA[컬럼]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=3930</guid>
		<description><![CDATA[디바이스마트 매거진 11호 &#124; 이번 기획은 두 센서를 융합해서 자세를 측정하는 방법 중 상보필터라는 것을 소개하고, 그 첫번째 시간대로 도대체 왜 센서를 융합할 수 밖에 없었는가에 대한 글을 적고자 한다. 각도를 측정하는 일반적인 방법과 센서들을 몇 개 나열하고  센서를 하나만 사용했을 때의 어려움에 대해 이야기하고자 한다.]]></description>
				<content:encoded><![CDATA[<h3><span style="color: #008000">상보필터 Part 1. </span></h3>
<h2><span style="color: #008000">왜 두 개의 센서를 융합하는가?</span></h2>
<p style="text-align: left">저자약력 : PinkWink.<br />
로봇의 실제 구현에 관련된 모든 것에 관심이 많으며, pinkwink.kr이라는 개인 블로그를 운영중.<br />
2011년부터 은둔 생활을 청산하고 (주)엔티렉스 로봇연구소의 연구소장으로 재직중.<br />
연재와 관련된 질문은 devicezine.co.kr에서 문의바랍니다.</p>
<p><span style="color: #008000"><strong>1. 들어가며</strong></span></p>
<p>저가의 MEMS형 센서를 사용해서 각도를 측정하는 많은 방법들이 소개되어있다. 실제로 인터넷을 조금만 찾아도 정말 많은 방법들이 소개되어 있음을 알 수 있다. 그 방법들에는 단순히 자이로 센서만 사용하는 방법에서부터 자이로 센서와 가속도 센서를 융합해서 사용하는 방법에까지 다양하게 나와있으며, 심지어 학습용으로 몇몇 대표적인 융합방법들을 예제로 제공하는 학습용 보드들도 디바이스마트(devicemart.co.kr)에 등록되어 있다.</p>
<p>자세 측정 자체에 관심이 없는 경우에는 이런 방법들을 그냥 가져다 쓰는 것이 당장의 문제를 해결하는 것에는 도움이 되겠으나, 만약 관련 부분에 대한 공부를 하는 경우에는 문제가 있다. 도대체 왜 각도 하나를 측정하자고 센서를 두 개나 사용해서 융합해야 하는가? 또, 왜 하필 그게 자이로 센서와 가속도 센서가 융합의 주류인가? 라는 의문을 자세 측정분야에 관심이 있다면 가져야 하지 않을까 생각한다.<br />
하긴 그렇다고 하더라도, 사실 어떻게 융합하는가에 대한 설명은 참으로 많지만, 왜? 융합하는가에 대한 설명은 상대적으로 그 분량이 작다. 그래서, 이번 기획은 두 센서를 융합해서 자세를 측정하는 방법 중 상보필터라는 것을 소개하고, 그 첫번째 시간대로 도대체 왜 센서를 융합할 수 밖에 없었는가에 대한 글을 적고자 한다. 각도를 측정하는 일반적인 방법과 센서들을 몇 개 나열하고 센서를 하나만 사용했을 때의 어려움에 대해 이야기하고자 한다.</p>
<p><strong><span style="color: #008000">2. 엔코더나 포텐셔미터를 이용한 자세 측정의 문제점</span></strong></p>
<p>엔코더나 포텐셔미터는 아마 가장 일반적으로 사용되는 각도 측정 장치일 것이다. 그러나 이와 같은 센서들은 고정점 대비 상대적인 각도를 측정한다. 그로 인해 공중에 떠 있거나, 혹은 고정빔을 설치할 수 없는 곳에서는 자세를 측정하는데 문제가 있다.</p>
<table align="center">
<tbody>
<tr>
<td>
<div id="attachment_3969" class="wp-caption alignnone" style="width: 375px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang001.jpg" rel="lightbox[3930]"><img class=" wp-image-3969   " alt="그림1. 포텐셔미터(좌)와 엔코더(우)" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang001-620x254.jpg" width="365" height="150" /></a><p class="wp-caption-text">그림1. 포텐셔미터(좌)와 엔코더(우)</p></div></td>
<td>
<div id="attachment_3960" class="wp-caption alignnone" style="width: 168px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang003.jpg" rel="lightbox[3930]"><img class=" wp-image-3960    " alt="그림2. 엔코더나 포텐셔미터의 자세측정에서의 한계" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang003.jpg" width="158" height="144" /></a><p class="wp-caption-text">그림2. 엔코더나 포텐셔미터의 자세측정에서의 한계</p></div></td>
</tr>
</tbody>
</table>
<p>그림2에서 보다시피 좌측의 그림처럼 엔코더 자체를 고정하고, 엔코더의 축을 회전해야만 각도가 측정되는 것이기 때문에, 그림2의 우측처럼 고정점이 없으면, 정확한 각도를 측정하기 어려워진다.</p>
<p><span style="color: #008000"><strong>3. 자이로 센서를 이용한 방법의 한계</strong></span></p>
<p>자이로 센서 또한 자세 측정에 많이 사용된다. 그러나 여기서 다루는 것은 실제 항공기나 선박에 장착되는 고가의 장비가 아니라 겨우 몇 만원대의 MEMS형 저가 자이로 센서이다. 이런 저가의 자이로 센서는 역시 한계를 가지게 된다.</p>
<div id="attachment_3961" class="wp-caption aligncenter" style="width: 385px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang004.jpg" rel="lightbox[3930]"><img class=" wp-image-3961  " alt="그림3. 실험장비" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang004.jpg" width="375" height="241" /></a><p class="wp-caption-text">그림3. 실험장비</p></div>
<p>먼저 기억해야 할 것은 자이로 센서는 각도를 출력으로 가지지 않는다는 것이다. 자이로 센서는 그 구현 원리상 각속도를 출력으로 가진다. 그래서 각도를 구하기 위해서는 당연히 자이로의 출력인 각속도를 적분해서 각도로 변환할 필요가 있다. 여기서 바로 문제가 생기게 된다.<br />
먼저 본 글 전체에 사용될 실험을 위한 장비가 그림3에 나타나있다. 흔히 진자시스템(Pendulum System)이라고 부르는 장비로 본래 목적은 아니지만, 이번 실험에는 아주 적합한 장비이다. 여기에 자이로센서와 다음 장에서 다룰 가속도 센서를 미리 연결하고, 참값과의 비교를 위해 엔코더 또한 장착했다. 센서들의 부착위치는 암(Arm)과 진자(Pendulum)가 만나는 곳이다.<br />
먼저 자이로 센서의 정확도를 확인하기 위해 자이로의 출력값인 각속도와 그래도 참값이라고 믿을 수 있는 엔코더의 각도를 차분한 각속도를 비교해 본다.</p>
<div id="attachment_3962" class="wp-caption aligncenter" style="width: 444px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang005.jpg" rel="lightbox[3930]"><img class=" wp-image-3962 " alt="그림4. 자이로의 출력(각속도)과 엔코더의 출력을 차분한 값과의 비교" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang005-620x397.jpg" width="434" height="278" /></a><p class="wp-caption-text">그림4. 자이로의 출력(각속도)과 엔코더의 출력을 차분한 값과의 비교</p></div>
<p>그림4에서 보듯이 완전히 일치시킬 수는 없지만, 어느 정도는 자이로의 출력과 엔코더의 차분치를 일치 시켰다. 이제 이 상태에서 자이로의 출력인 각속도를 적분해서 각도를 확인해보자.</p>
<div id="attachment_3963" class="wp-caption aligncenter" style="width: 444px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang006.jpg" rel="lightbox[3930]"><img class=" wp-image-3963 " alt="그림 5. 자이로센서의 출력을 적분한 각도와 엔코더와의 비교" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang006-620x397.jpg" width="434" height="278" /></a><p class="wp-caption-text">그림 5. 자이로센서의 출력을 적분한 각도와 엔코더와의 비교</p></div>
<p>참값이라고 가정할 수 있는 엔코더의 차분치(물론 오차는 있지만)와 일치시키는 작업을 하고 난 후의 적분치이지만, 역시 한쪽으로 흐르는 현상이 있다. 이 드리프트(Drift)라고 부르는 적분 과정에서 생기는 오차는 적분이라는 과정을 수행하는 경우 항상 존재할 수 있는 상황이다. 아무리 온도보정을 많이 하고, 또 정교한 필터링을 한다고 해도, 결국 자이로 센서만 사용하는 경우는 어쩔 수 없이 나타나는 현상이다.<br />
자이로 센서의 출력이 각속도이고, 그래서 각도를 얻기 위해서는 어쩔 수 없이 적분이라는 과정을 거쳐야 한다. 그리고, 그림5에서 보듯이 자이로의 출력에서 미세한 오차가 있다면, 결국 그것이 누적되고 또 누적되면서 적분한 결과인 각도는 한 쪽으로 흐르게 되는 현상이 발생하고, 이것이 자이로 센서 하나만 사용해서 자세를 측정할 수 없는 한계가 된다.</p>
<p><strong><span style="color: #008000">4. 기울기 센서를 이용한 방법의 한계</span></strong></p>
<p>MEMS형 센서는 아니지만, 기울기 센서라는 것도 엄연히 존재한다. 너무 많은 종류의 기울기 센서들이 있기 때문에 역시 MEMS형 자이로 센서와 비슷한 가격대의 기울기 센서라고 한정짓도록 하자. 기울기 센서는 그럼 왜 안되는 걸까. 역시 그림3의 장비에서 자이로와 같은 위치에 기울기 센서를 장착하고 측정한 결과를 보자.</p>
<div id="attachment_3964" class="wp-caption aligncenter" style="width: 444px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang007.jpg" rel="lightbox[3930]"><img class=" wp-image-3964 " alt="그림6. 기울기센서의 결과" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang007-620x395.jpg" width="434" height="277" /></a><p class="wp-caption-text">그림6. 기울기센서의 결과</p></div>
<p>그림6에서 보이듯이 기울기센서도 이름처럼 그렇게 좋은 결과를 가져오지는 못한다. 기울기 센서는 일반적으로 유체성분이 센서 안에 밀폐되어있고, 적절한 점도를 가진 그 유체의 기울어지는 정도를 전압으로 환산해서 기울어진 각도를 측정하게 된다. 그런데 그릇에 물을 채워놓고 빠르게 기울이면, 유체는 신기하게도 가장 변화속도가 빠른 지점에서 물 자신이 기울어지는 속도보다 더 기울게 되는 현상이 있다. 이 현상이 기울기 센서에서도 발생하게 되는데, 그것이 그림6에 잘 나타나 있다.<br />
그래서 기울기 센서는 내부의 유체가 안정화되는 시간이 필요하다. 이게 바로 기울기 센서의 응답속도를 느리게 만드는 요인이 되며, 대략 몇 백 ms정도의 시간이 필요하다. 센서와 같은 장비를 처음 만지는 학생들의 경우 이 응답속도라는 단어를 혼돈하게 되는데, 응답속도가 100ms라는 것이 참 값이 100ms후에 나온다는 의미가 아님을 알아야한다. 저렇게 유체가 안정화되는데 시간이 필요한 경우 빠르게 움직여야하는 시스템이라면 제대로 된 자세 측정은 어렵다고 봐야한다.</p>
<p><span style="color: #008000"><strong>5. 가속도 센서를 이용한 방법의 한계</strong></span></p>
<p>이제 마지막으로 또 각도를 측정하는 센서 중에서 많이 사용되는 것 중에 가속도 센서가 있다. 가속도를 측정한다는 의미의 이름이 붙은 이 센서로 어떻게 각도를 측정하는가? 정답은 간단한 삼각함수에 있다.</p>
<div id="attachment_3965" class="wp-caption aligncenter" style="width: 282px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang008.jpg" rel="lightbox[3930]"><img class=" wp-image-3965 " alt="그림7. 가속도 센서에서 각도를 구하는 원리" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang008.jpg" width="272" height="295" /></a><p class="wp-caption-text">그림7. 가속도 센서에서 각도를 구하는 원리</p></div>
<p>한 면만 놓고 쉽게 설명을 하면, 그림7에서 보듯이 가속도 센서의 두 축의 값을 읽어서 간단히 Arctan를 이용하면,<br />
<a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang011.jpg" rel="lightbox[3930]"><img class="size-full wp-image-3968 aligncenter" alt="11scsang011" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang011.jpg" width="159" height="84" /></a><br />
이렇게 각도를 구할 수 있다.<br />
이 간단한 방법은 사실 정말 편하고 유용하다. 자이로 센서처럼 적분으로 인한 오차의 누적현상이 없고, 기울기 센서처럼 느린 응답속도로 인한 문제도 없다. 그림3의 장비에서 암(Arm)을 고정하고 진자(Pendulum)만 움직여서 얻은 결과를 보자.</p>
<div id="attachment_3966" class="wp-caption aligncenter" style="width: 444px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang009.jpg" rel="lightbox[3930]"><img class=" wp-image-3966 " alt="그림8. 가속도 센서를 이용한 각도 측정" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang009-620x397.jpg" width="434" height="278" /></a><p class="wp-caption-text">그림8. 가속도 센서를 이용한 각도 측정</p></div>
<p>그림 8을 보면 정말 결과가 좋다는 것을 알 수 있다. 그럼 아주 손쉽게 각도- 즉 자세를 측정할 수 있을 것 같지만, 사실 그렇지 않다. 그림8의 결과를 얻은 실험은 암(Arm)을 고정했다. 이것이 가속도 센서의 한계인데,</p>
<div id="attachment_3967" class="wp-caption aligncenter" style="width: 369px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang010.jpg" rel="lightbox[3930]"><img class=" wp-image-3967 " alt="그림 9. 가속도 센서를 이용해 각도를 측정할 때의 문제점" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang010.jpg" width="359" height="317" /></a><p class="wp-caption-text">그림 9. 가속도 센서를 이용해 각도를 측정할 때의 문제점</p></div>
<p>바로 그림7처럼 회전 각도가 발생하는 그 중심에 가속도센서가 위치하지 못하고, 그림9처럼 회전 중심축에서 멀어져서 회전하는 경우 문제가 발생한다. 센서의 이름이 가속도 센서라는 사실에 주목해야 하는데, 그림9와 같은 상황에서는 접선, 법선 방향의 가속도 성분이 가속도 센서에 같이 인가가 되면서, 그림8과 같은 실험을 수행하게 되면 결과가 이상해진다.</p>
<div id="attachment_3959" class="wp-caption aligncenter" style="width: 444px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang002.jpg" rel="lightbox[3930]"><img class=" wp-image-3959 " alt="그림 10. 가속도 센서를 이용한 각도측정의 한계" src="http://www.ntrexgo.com/wp-content/uploads/2013/03/11scsang002-620x381.jpg" width="434" height="267" /></a><p class="wp-caption-text">그림 10. 가속도 센서를 이용한 각도측정의 한계</p></div>
<p>바로 그림10처럼 그 결과가 안좋아지게 된다. 이는 가속도 센서에 회전 각도를 검출하는데 필요한 성분에 더해서 접선, 법선 방향의 가속도 성분이 인가되면서 그렇게 된 것이다.</p>
<p><span style="color: #008000"><strong>6. 결론</strong></span></p>
<p>본 글에서 단일 센서만 사용했을 때, 자세 측정에서 어떤 문제가 발생하는지 확인해 보았다. 엔코더와 같은 센서들은 고정점이 필요하고, 자이로 센서는 적분에서의 오차가, 기울기 센서는 느린 응답특성이, 가속도 센서는 회전 중심축과 센서의 중심이 맞아야한다는 문제가 있음을 확인했다.<br />
이제 다음에는 이와 같은 문제들로 인해 많이들 사용하는 센서의 융합에서 상보필터를 소개하고, 그 원리와 사용방법에 대해 다루고자 한다.</p>
<p><font style="font-size:8pt"><br />
■ 본 글은 2011년 2월 필자의 학위논문 중 일부를 발췌 후 잡지의 의도에 맞게 재정리한 것임을 미리 밝힙니다.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/3930/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[7호]CANTUS 개발 및 실습 무료 세미나 기술자료</title>
		<link>http://www.ntrexgo.com/archives/8616</link>
		<comments>http://www.ntrexgo.com/archives/8616#comments</comments>
		<pubDate>Wed, 25 May 2011 08:40:14 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[스페셜 컬럼]]></category>
		<category><![CDATA[7호]]></category>
		<category><![CDATA[CANTUS]]></category>
		<category><![CDATA[기술]]></category>
		<category><![CDATA[세미나]]></category>
		<category><![CDATA[스페셜]]></category>
		<category><![CDATA[에이디칩스]]></category>
		<category><![CDATA[자료]]></category>
		<category><![CDATA[컬럼]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=8616</guid>
		<description><![CDATA[디바이스마트 매거진 7호 &#124; CANTUS는 고성능 32bit MCU로써 8bit MCU에 비해 최대 96MIPS의 빠른 속도와 고성능의 다양한 기능을 내장하면서 저렴한 가격으로 출시되어 개발자들에게는 8bit MCU의 한계를 넘어 다양하고 고성능화 되고 있는 시스템의 구현을 가능하게 하였다. ]]></description>
				<content:encoded><![CDATA[<h2><a href="http://www.ntrexgo.com/wp-content/uploads/2011/05/07SCADC020.jpg" rel="lightbox[8616]"><img class=" wp-image-8845 alignleft" alt="07SCADC020" src="http://www.ntrexgo.com/wp-content/uploads/2011/05/07SCADC020-300x225.jpg" width="240" height="180" /></a><strong><span style="color: #333399">CANTUS 개발 및 실습 </span></strong></h2>
<h2><span style="color: #333399"><strong>무료 세미나 기술자료</strong></span></h2>
<p>&nbsp;</p>
<p style="text-align: right">자료제공 | (주)에이디칩스 기술 연구소</p>
<p>■ 2011년 4월 30일에 진행된 무료 세미나의 기술자료를 참석하지 못한 디바이스마트 매거진 구독자들을 위해 간단히 소개하고자 합니다.</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;color: #ff6600"><strong>1부 High Performance &amp; Low Cost 32bit Microcontroller &#8211; CANTUS</strong></span></p>
<p><span style="color: #ff9900"><strong>1. 소개</strong></span><br />
(주)에이디칩스에서 개발한 CANTUS는 시스템의 다양화와 고성능화에 맞춰 8bit를 대체할 저가의 고성능 32bit 마이크로컨트롤러이다.<br />
CANTUS는 고성능 32bit MCU로써 8bit MCU에 비해 최대 96MIPS의 빠른 속도와 고성능의 다양한 기능을 내장하면서 저렴한 가격으로 출시되어 개발자들에게는 8bit MCU의 한계를 넘어 다양하고 고성능화 되고 있는 시스템의 구현을 가능하게 하였다. 특징으로는 8채널의 넉넉한 UART와 Full-Speed USB2.0, SPI, TWI등의 다양한 통신 수단을 제공하므로 다른 주변 기기와의 통신에 강점을 지닌 동시에 음성이나 사운드(ADPCM 녹음/재생, MP3 재생) 지원이 가능한 제품이다.</p>
<p>또한, 내장 메모리를 128KBytes, 512KBytes 선택적으로 사용할 수 있어 사용자가 원하는 사양에 따라 시스템을 구성할 수 있으며 SRAM은 80Kbytes를 내장하여 큰 용량의 어플리케이션을 전혀 문제없이 동작시킬 수 있다. 또한 대용량의 메모리가 필요한 경우 외부에 노어플래시나 낸드플래시, SD카드등의 다양한 메모리를 지원하여 다양한 응용이 가능하다.</p>
<p>LCD가 필요로 하는 시스템에서는 2인치대(128&#215;160해상도)의 TFT-LCD에 하나의 이미지파일을 디스플레이하는 시간에 30ms 이하의 속도를 낼 수 있어 Character LCD 또는 7-sement를 사용하던 시스템도 소형 TFT-LCD 적용이 가능하여 고급화, 차별화가 가능하다.(최대 220&#215;176) 이 외에 CANTUS에는 8채널 32bit Timer / PWM / Capture가 내장되어 모터 구동, 배터리 체크, 적외선 리모콘 신호 입력 등의 용도로 사용할 수 있고 14bit Voice Codec은 음성 또는 사운드를 내보낼 수 있는 1채널 DAC와 센서 또는 아날로그 신호들의 입력을 위한 4채널 ADC로 구성되어 있으며 1채널 DMA는 빠른 메모리 액세스로 인해 데이터를 효율적으로 출력할 수 있다.</p>
<p>이러한 CANTUS는 하이패스단말기, GPS단말기, MP3 어학학습기, LED 컨트롤러, 경보시스템, 완구 로봇, 출입통제시스템, 디지털 가전, 로봇 청소기, 의료기기, 속도감지기, 산업용 컨트롤러 등 다양한 응용 제품에 적용할 수 있다.<br />
이미 다양한 시스템에 적용되어 필드에서 검증되어 사용되어 지고 있으며 ㈜에이디칩스에서는 제품의 성능 뿐만 아니라 적극적인 기술지원과 안정적인 제품 공급 또한 강점으로 내세우고 있다.</p>
<p><span style="color: #ff9900"><strong>2. 기능</strong></span><br />
· 32bit General Micro-Controller<br />
- 96MHz, Internal Flash Memory &amp; SRAM<br />
· USB, UART, SDCard, Voice Codec, MP3 decoder(s/w)<br />
· Operating Temp : -40oC to +85oC Industrial<br />
· Power : 3.0V ~ 3.6V<br />
· Package : 100pin TQFP</p>
<p>&nbsp;</p>
<p><span style="color: #ff6600"><strong><span style="font-size: medium">2부 CANTUS 개발 환경 소개</span></strong></span></p>
<p><span style="color: #ff9900"><strong>1. Development Flow Chart</strong></span><br />
CANTUS 개발환경은 다음과 같이 EISC Studio 3, E-CON, Target(EVM, Trip)으로 구성되어 있다. EISC Studio 3에서 Compile한 Binary는 E-CON을 통해 Target에 Download 되며, Target에 Download 된 Binary는 E-CON을 통해 EISC Studio 3에서 Debugging할 수 있다.</p>
<div id="attachment_8766" class="wp-caption alignnone" style="width: 568px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC020.jpg" rel="lightbox[8616]"><img class=" wp-image-8766" alt="07SCADC020" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC020-620x329.jpg" width="558" height="296" /></a><p class="wp-caption-text">그림1. Development Flow Chart</p></div>
<p><span style="color: #ff9900"><strong>2. Download Page</strong></span><br />
EISC Studio 3와 같은 SW 자료 및 회로도와 메뉴얼은 (주)에이디칩스 홈페이지(www.adc.co.kr)의 자료실에서 다운받을 수 있다.</p>
<div id="attachment_8735" class="wp-caption alignnone" style="width: 506px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC001.jpg" rel="lightbox[8616]"><img class=" wp-image-8735 " alt="그림2. Download Page" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC001-620x481.jpg" width="496" height="385" /></a><p class="wp-caption-text">그림2. Download Page</p></div>
<p><span style="color: #ff9900"><strong>3. IDE : EISC Studio 3</strong></span><br />
EISC Studio 3는 통합개발환경(IDE)으로, Compiler, Editor, Debugger의 기능을 갖고 있다. 부가적으로 JTAG인 E-CON을 통해 손쉽게 Target에 Download가 가능하다.<br />
현재 배포되는 Version은 3.2.2이다. Windows XP이상, 7 32bit, 7 64bit까지 사용 할 수 있다.</p>
<div id="attachment_8734" class="wp-caption alignnone" style="width: 506px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC002.jpg" rel="lightbox[8616]"><img class=" wp-image-8734 " alt="그림3. EISC Studio3" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC002-620x425.jpg" width="496" height="340" /></a><p class="wp-caption-text">그림3. EISC Studio3</p></div>
<p><span style="color: #ff9900"><strong>4. E-CON (JTAG I/F)</strong></span><br />
E-CON은 JTAG인터페이스로, Downloader와 Debugger의 기능을 갖고 있다. E-CON은 Console Program EConMan을 사용하여 제어된다. E-CON의 Driver와 Console Program인 EConMan은 EISC Studio 3를 설치 하면 기본 옵션을 통해 EISC Studio가 설치된 경로에 설치 된다.* (* 경로 : C:\Program Files\ADChips\EISC Studio 3\econ)</p>
<div id="attachment_8733" class="wp-caption alignnone" style="width: 407px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC003.jpg" rel="lightbox[8616]"><img class=" wp-image-8733  " alt="그림4. E-CON" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC003-620x485.jpg" width="397" height="310" /></a><p class="wp-caption-text">그림4. E-CON</p></div>
<p><span style="color: #ff9900"><strong>5. EVM</strong></span><br />
CANTUS EVM은 시스템 개발에 있어 검증을 위한 여러 Device로 구성 되어있다. Memory 관련하여 NAND Flash, SRAM, SPI Flash, TWI EEPROM, SD CARD로 구성되어 있으며, I2S Interface를 통해 외부 Audio Board로 재생, 녹음이 가능하다. 또한 Internal Voice Codec을 통한 재생, 녹음을 위한 회로가 구성되어 있다. 그리고 TFT LCD 및 USB, RS-232C와 확장 Pin이 있어 개발을 하려는 시스템에 근접하도록 구성 할 수 있다.</p>
<div id="attachment_8732" class="wp-caption alignnone" style="width: 506px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC004.jpg" rel="lightbox[8616]"><img class=" wp-image-8732 " alt="그림5.  CANTUS EVM" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC004-620x389.jpg" width="496" height="311" /></a><p class="wp-caption-text">그림5. CANTUS EVM</p></div>
<p><span style="color: #ff9900"><strong>6. SDK</strong></span><br />
CANTUS SDK는 CANTUS EVM의 여러 Device를 제어할 수 있는 예제 Project와 CANTUS의 주변장치를 사용할 수 있는 Library로 구성되어 있다. SDK의 예제를 사용하여 EVM의 Device를 원하는 대로 수정하여 개발 시간을 단축할 수 있다.</p>
<div id="attachment_8731" class="wp-caption alignnone" style="width: 506px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC005.jpg" rel="lightbox[8616]"><img class=" wp-image-8731 " alt="그림6. SDK 1.5Tree" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC005-620x337.jpg" width="496" height="270" /></a><p class="wp-caption-text">그림6. SDK 1.5Tree</p></div>
<p>&nbsp;</p>
<p><span style="font-size: medium"><strong><span style="color: #ff6600">3부 개발환경 구축</span></strong></span></p>
<p>CANTUS의 개발환경은 다음과 같이 구축할 수 있다.</p>
<p><span style="color: #ff9900"><strong>1. 관련 자료 다운로드</strong></span><br />
개발환경의 구축에 있어 첫 번째로 관련 자료를 다운 받는다. 관련 자료는 (주)에이디칩스 홈페이지 www.adc.co.kr의 Support → 자료실 → 글 번호 10에서 다운로드할 수 있다. 필수적인 IDE(EISC Studio 3)와 SDK를 다운로드한다.</p>
<div id="attachment_8730" class="wp-caption alignnone" style="width: 506px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC006.jpg" rel="lightbox[8616]"><img class=" wp-image-8730 " alt="그림6. CANTUS Download Page" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC006-620x238.jpg" width="496" height="190" /></a><p class="wp-caption-text">그림6. CANTUS Download Page</p></div>
<p><span style="color: #ff9900"><strong>2. IDE / JTAG 설치</strong></span><br />
다운 받은 EISC Studio 3 설치 파일을 실행하여 EISC Studio 3를 설치 한다.<br />
설치 과정에서 ‘구성 요소 선택’ 과정에서 사용할 Compiler를 선택 한다. CANTUS의 경우 AE32000 Compiler를 사용하며 기본적으로, E-CON Driver와 함께 선택되어 있다.</p>
<div id="attachment_8779" class="wp-caption alignnone" style="width: 488px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC007.jpg" rel="lightbox[8616]"><img class=" wp-image-8779 " alt="그림7. EISC Studio 3 구성 요소 선택" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC007.jpg" width="478" height="298" /></a><p class="wp-caption-text">그림7. EISC Studio 3 구성 요소 선택</p></div>
<p>Windows 7 64bit에서 설치할 경우에는 ‘설치 위치 선택’ 에서 ‘설치 폴더’ 를 ‘C:\Program Files’ 로 지정 하여야 한다.<br />
설치 진행 과정의 마무리쯤 E-CON의 Driver가 설치 된다. Driver 설치는 E-CON이 PC와 연결되지 않은 채 진행한다. EISC Studio 3의 설치가 완료 된 후에 E-CON과 PC를 연결하면 Driver 설치가 마무리 되며, 제어판의 장치 관리자에서 E-CON이 정상 적으로 인식된 것을 확인할 수 있다.</p>
<div id="attachment_8778" class="wp-caption alignnone" style="width: 410px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC008.jpg" rel="lightbox[8616]"><img class=" wp-image-8778 " alt="그림8. 장치 관리자의 E-CON" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC008.jpg" width="400" height="240" /></a><p class="wp-caption-text">그림8. 장치 관리자의 E-CON</p></div>
<p><span style="color: #ff9900"><strong>3. Build &amp; Download</strong></span><br />
CANTUS SDK는 CANTUS Library Project와 Example Project로 구성 되어 있다. Example Project는 Library Project의 Output File인 ‘libCantus.a’를 참조 한다. 따라서 Example Project를 Build하기 위해서는 Library Project가 먼저 Build 되어야 한다. 또한 Library Project의 Code를 변경하면, Library Project가 Build된 후에 Example Project를 Build 하여야 한다.</p>
<p><span style="color: #b653a8"><strong>3. 1. Library Project Build</strong></span><br />
<span style="background-color: #ffff99">1. /Cantuslib/Cantus.epx를 실행하여 EISC Studio 3로 Project를 Open한다.</span><br />
<span style="background-color: #ffff99"> 2. 메뉴에서 Build → Build Project를 눌러 Project를 Build한다.</span><br />
<span style="background-color: #ffff99"> 3. Build가 완료 되면 /lib/libCantus.a가 생성된다.  Library가 Build 되어 /lib/libCantus.a가 생성되면, Example을 Build 할 수 있다.</span></p>
<p><span style="color: #b653a8"><strong>3. 2. Boot Loader를 사용하는 시스템의 경우</strong></span></p>
<p>CANTUS는 Reset 후 Internal NOR Flash 0 Sector의 Program을 실행 한다. E-CON을 사용하면 Flash의 모든 Sector에 Write가 가능 하지만, E-CON이 없다면 BootLoader를 사용함으로써 USB를 통해 1 Sector(CANTUS 512)에 Download 할 수 있다. 단, 0 Sector에 BootLoader를 Download하는 것은 E-CON만 가능하다.<br />
BootLoader는 CANTUS 512의 경우 1 Sector의 Program을 실행하고, 0 Sector를 제외한 나머지 Sector에 USB Download가 가능하다. 추가적으로 USB Mass Storage기능이 있어 Flash Memory나 SD-CARD를 PC에서 이동식 디스크로 사용할 수 있다.** (**BootLoader_tiny는 USB Mass Storage기능이 없음.)</p>
<p><strong><span style="color: #ff0000">3.2.1 Example Project Build : BootLoader</span></strong></p>
<p><span style="background-color: #ffff99">1. /Example/BootLoader/BootLoader.epx를 실행하여 EISC Studio 3로 Project를 Open한다.</span><br />
<span style="background-color: #ffff99">2. Project Explorer에서 Linker Script에 cantus.ld를 Open한다. 16번 행에서 0×00000000으로 지정 된 부분은 Program이 실행되는 Sector의 Start Address로 0 Sector에 Download하여야 실행 되는 Program임을 뜻 한다.</span><br />
<span style="background-color: #ffff99">3. 메뉴에서 Build → Build Project를 눌러 Project를 Build한다.</span><br />
<span style="background-color: #ffff99">4. Build가 완료 되면 /Example/BootLoader/output/BootLoader.elf.bin이 생성된다. </span></p>
<p>/Example/BootLoader/output/BootLoader.elf.bin이 생성 되면, E-CON을 통해 Target에 Download할 수 있다.</p>
<div id="attachment_8777" class="wp-caption alignnone" style="width: 396px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC009.jpg" rel="lightbox[8616]"><img class=" wp-image-8777 " alt="그림9. BootLoader의 cantus.ld" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC009.jpg" width="386" height="350" /></a><p class="wp-caption-text">그림9. BootLoader의 cantus.ld</p></div>
<p><strong><span style="color: #ff0000">3.2.2 Example Project Build : BootLoader</span></strong><br />
EISC Studio 3가 처음 설치 되면 E-CON으로 Download하기 위한 Option이 설정되어 있지 않으므로, Download Option을 설정해 주어야 한다.</p>
<p><span style="background-color: #ffff99">1. 메뉴에서 Build → Download Option</span><br />
<span style="background-color: #ffff99">2. Download Manager 창이 나타나면, 다음과 같이 설정 한다.</span><br />
<span style="background-color: #ffff99"> Set Command : C:\Program Files\ADChips\EISC Studio</span><br />
<span style="background-color: #ffff99"> 3\econ\EConMan.exe</span><br />
<span style="background-color: #ffff99"> Set Argument : -target cantus -systeminit -jtagspeed 10 </span><br />
<span style="background-color: #ffff99"> -flash_filewrite 0×0 $(TargetPath).bin</span><br />
<span style="background-color: #ffff99"> Set Argument중 -flash_filewrite 0×0은 Download할</span><br />
<span style="background-color: #ffff99"> Sector의 Start Address를 뜻한다. 위 cantus.ld에서 </span><br />
<span style="background-color: #ffff99"> 0×00000000으로 설정하였기에 0 Sector에 Download한다.</span><br />
<span style="background-color: #ffff99">3.  E-CON과 Target을 연결하고, PC에서 E-CON이 인식된 것을 확인 한다. CANTUS를 JTAG Mode로 설정한다. EVM의 경우 SW1을 아래쪽을 향하게 한 상태에서 Reset 한다.</span><br />
<span style="background-color: #ffff99">4. 메뉴에서 Build → Download To Target EConMan의 실행창이 나타나고, Download가 진행 된다.***</span><br />
(*** Set Argument에서 Option의 끝에 ‘-exit’를 추가하면 정상 Download된 후 창이 닫힌다.‘-jtagspeed 10’은 JTAG Clock을 30MHz / (10)+1 = 2.727MHz 로 설정을 뜻하며,‘-jtagspeed 1’으로 최대 15MHz까지 동작한다. JTAG Clock은 사용 환경에 따라 달라질 수 있다.</p>
<div id="attachment_8776" class="wp-caption alignnone" style="width: 502px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC010.jpg" rel="lightbox[8616]"><img class="size-full wp-image-8776" alt="그림10. BootLoader의 Download Option" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC010.jpg" width="492" height="192" /></a><p class="wp-caption-text">그림10. BootLoader의 Download Option</p></div>
<p><strong><span style="color: #ff0000">3.2.3 Example Project Build : Uart</span></strong></p>
<p><span style="background-color: #ffff99">1. /Example/Uart/Uart.epx를 실행하여 EISC Studio 3로 Project를 Open한다.</span><br />
<span style="background-color: #ffff99">2. Project Explorer에서 Linker Script에 cantus.ld****를 Open한다. 11번 행에서 0×00010000으로 지정 된 부분은 Program이 실행되는 Sector의 Start Address로 1 Sector(CANTUS 512의 경우)에서 실행 되는 Program임을 뜻 한다.</span> (**** BootLoader와 BootLoader_tiny는 Project 폴더내에 cantus.ld를 갖고 있지만, 이를 제외한 Project는‘/startup/cantus.ld를 참조한다.)<br />
<span style="background-color: #ffff99">3. 메뉴에서 Build → Build Project를 눌러 Project를 Build한다.</span><br />
<span style="background-color: #ffff99">4. Build가 완료되면 /Example/Uart/output/Uart.elf.bin이 생성된다. /Example/Uart/output/Uart.elf.bin이 생성되면, E-CON을 통해 Target에 Download할 수 있다.</span></p>
<div id="attachment_8775" class="wp-caption alignnone" style="width: 396px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC011.jpg" rel="lightbox[8616]"><img class=" wp-image-8775 " alt="그림11. Uart의 cantus.ld" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC011.jpg" width="386" height="350" /></a><p class="wp-caption-text">그림11. Uart의 cantus.ld</p></div>
<p><span style="color: #ff0000"><strong>3.2.4 Example Project Download : Uart</strong></span><br />
Download Option을 2)Example Project Download : BootLodaer에서 0×0으로 설정하였기 때문에 3)Example Project Build : Uart.에서 설정한 0×00010000으로 Uart를 Download하기 위해 설정을 변경해 주어야 한다.<br />
<span style="background-color: #ffff99">1. 메뉴에서 Build → Download Option</span><br />
<span style="background-color: #ffff99">2. Download Manager 창이 나타나면, 다음과 같이 설정 한다. </span><br />
<span style="background-color: #ffff99">Set Command : C:\Program Files\ADChips</span><br />
<span style="background-color: #ffff99"> \EISC Studio 3\econ\EConMan.exe </span><br />
<span style="background-color: #ffff99">Set Argument : -target cantus -systeminit -jtagspeed 10</span><br />
<span style="background-color: #ffff99"> -flash_filewrite 0×10000 $(TargetPath).bin</span><br />
<span style="background-color: #ffff99"> Set Argument중 -flash_filewrite 0×10000은 Download할</span><br />
<span style="background-color: #ffff99"> Sector의 Start Address를 뜻 한다. 위cantus.ld에서</span><br />
<span style="background-color: #ffff99"> 0×00010000으로 설정하였기에 1 Sector에 Download한다.</span><br />
<span style="background-color: #ffff99">3. E-CON과 Target을 연결하고, PC에서 E-CON이 인식된 것을 확인 한다. CANTUS를 JTAG Mode로 설정한다. EVM의 경우 SW1을 아래쪽을 향하게 한 상태에서 Reset한다.</span><br />
<span style="background-color: #ffff99">4. 메뉴에서 Build → Download To Target</span></p>
<p>EConMan의 실행창이 나타나고, Download가 진행된다.</p>
<div id="attachment_8774" class="wp-caption alignnone" style="width: 502px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC012.jpg" rel="lightbox[8616]"><img class="size-full wp-image-8774" alt="그림12. Uart의 Download Option" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC012.jpg" width="492" height="192" /></a><p class="wp-caption-text">그림12. Uart의 Download Option</p></div>
<p><span style="color: #ff0000"><strong>3.2.5 Execution</strong></span><br />
CANTUS에 Download한 Program은 CANTUS가 NORMAL MODE일 때 실행된다. EVM의 경우 SW1을 위쪽으로 향하게 한 상태에서 Reset한다.<br />
EVM의 RS-232C를 PC와 연결하면, PC에서 Terminal을 통해 출력하는 Message를 확인할 수 있다. 이때 Terminal은 119200 bps, Data 8 bit, 1 Stop bit, Parity none으로 설정한다. 0 Sector에 Download한 BootLoader가 실행되고, 1 Sector에 Download한 Uart Example까지 실행한 Terminal의 화면이다.</p>
<div id="attachment_8773" class="wp-caption alignnone" style="width: 300px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC013.jpg" rel="lightbox[8616]"><img class="size-full wp-image-8773" alt="그림13. Execution BootLoader + Uart" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC013.jpg" width="290" height="201" /></a><p class="wp-caption-text">그림13. Execution BootLoader + Uart</p></div>
<p><span style="color: #ff9900"><strong>3. Boot Loader를 사용하지 않는 시스템의 경우</strong></span><br />
CANTUS는 Reset후 Internal NOR Flash 0 Sector의 Program을 실행 한다. E-CON을 사용하면 Flash의 모든 Sector에 Write가 가능 하므로 E-CON을 사용할 수 있거나, 개발 시스템에서 Program Update와 같은 기능이 필요치 않은 경우에는 0 Sector에 BootLodaer가 아닌 Program을 Write하여 사용할 수 있다.<br />
다음은 Example/Uart를 Download하여 실행하는 경우이다.</p>
<p><span style="color: #ff0000"><strong>3.3.1 Example Project Build : Uart</strong></span><br />
<span style="background-color: #ffff99">1. /Example/Uart/Uart.epx를 실행하여 EISC Studio 3로 Project를 Open한다.</span><br />
<span style="background-color: #ffff99"> 2. Project Explorer에서 Linker Script에 cantus.ld를 Open한다. 11번 행에서 0×00010000으로 지정된 부분을 0×00000000으로 수정하여 Program이 실행되는 Sector의 Start Address가 0 Sector가 되도록 변경한다.</span><br />
<span style="background-color: #ffff99"> 3. 메뉴에서 Build → Build Project를 눌러 Project를 Build한다.</span><br />
<span style="background-color: #ffff99"> 4. Build가 완료 되면 /Example/Uart/output/Uart.elf.bin이 생성된다.</span></p>
<p>/Example/Uart/output/Uart.elf.bin이 생성되면, E-CON을 통해 Target에 Download할 수 있다.</p>
<p><span style="color: #ff0000"><strong>3.3.2  Example Project Download : Uart</strong></span><br />
Download Option을 <span style="text-decoration: underline;background-color: #ffff99">4) Example Project Download : Uart (P.38)에서 0×10000</span>으로 설정하였기 때문에 <span style="text-decoration: underline"><span style="background-color: #ffff99">1) Example Project Build : Uart(P.39)에서 설정한 0×00000000</span></span>으로 Uart를 Download하기 위해 설정을 변경해 주어야 한다.</p>
<p><span style="background-color: #ffff99">1. 메뉴에서 Build → Download Option</span><br />
<span style="background-color: #ffff99"> 2. Download Manager 창이 나타나면, 다음과 같이 설정한다.</span><br />
<span style="background-color: #ffff99"> Set Command : C:\Program Files\ADChips \EISC Studio 3\econ\EConMan.exe</span><br />
<span style="background-color: #ffff99"> Set Argument : -target cantus -systeminit -jtagspeed 10 -flash_filewrite 0×0 $(TargetPath).bin</span><br />
<span style="background-color: #ffff99"> Set Argument중 -flash_filewrite 0×0은 Download할 Sector 의 Start Address를 뜻 한다. 위 cantus.ld에서 0×00000000</span><br />
<span style="background-color: #ffff99"> 으로 설정하였기에 0 Sector에 Download한다.</span><br />
<span style="background-color: #ffff99"> 3. E-CON과 Target을 연결하고, PC에서 E-CON이 인식된 것을 확인 한다. CANTUS를 JTAG Mode로 설정한다. EVM의 경우 SW1을 아래쪽을 향하게 한 상태에서 Reset한다.</span><br />
<span style="background-color: #ffff99"> 4. 메뉴에서 Build → Download To Target</span></p>
<p>EConMan의 실행창이 나타나고, Download가 진행 된다.</p>
<p>3) Execution<br />
CANTUS에 Download한 Program은 CANTUS가 NORMAL MODE일 때 실행한다. EVM의 경우 SW1을 위쪽으로 향하게 한 상태에서 Reset한다.<br />
EVM의 RS-232C를 PC와 연결하면, PC에서 Terminal을 통해 출력하는 Message를 확인할 수 있다. 이때 Terminal은 119200 bps, Data 8 bit, 1 Stop bit, Parity none으로 설정한다.<br />
0 Sector에 Download한 Uart Example을 실행 한 Terminal의 화면이다.</p>
<div id="attachment_8772" class="wp-caption alignnone" style="width: 299px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC014.jpg" rel="lightbox[8616]"><img class="size-full wp-image-8772" alt="그림14. Execution Uart" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC014.jpg" width="289" height="95" /></a><p class="wp-caption-text">그림14. Execution Uart</p></div>
<p><span style="color: #ff9900"><strong>4. Debugging</strong></span><br />
CANTUS는 EISC Studio 3에서 E-CON을 통해 Debugging 할 수 있다. GDB를 사용하며 V3.2.2의 경우 Insight 환경도 사용할 수 있다. 다운 받은 SDK에 관련 매뉴얼이 있다.</p>
<div id="attachment_8771" class="wp-caption alignnone" style="width: 506px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC015.jpg" rel="lightbox[8616]"><img class=" wp-image-8771 " alt="그림15. CANTUS Debugging Insight" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC015-620x610.jpg" width="496" height="488" /></a><p class="wp-caption-text">그림15. CANTUS Debugging Insight</p></div>
<p>&nbsp;</p>
<p><span style="font-size: medium;color: #ff6600"><strong>4부. SDK의 Example</strong></span></p>
<p>SDK의 Example은 크게 BootLoader와 Application 두 가지로 나누어 진다.</p>
<p><span style="color: #ff9900"><strong>1. BootLoader</strong></span><br />
BootLoader는 USB Download, USB Mass Storage, Application 호출의 기능을 갖고 있다. 0 Sector에서 CANTUS Reset후 실행되며, USB Download나 USB Mass Storage의 명령이 없으면 특정 Sector의 Application을 호출 하게 된다.<br />
USB Download는 PC로부터 CANTUS DevTool을 통해 0 Sector가 아닌 특정 Sector에 Program을 Write한다. BootLoader 영역은 지울 수 없기 때문에 제품에서 Program Update용도로 사용할 수 있다.</p>
<div id="attachment_8770" class="wp-caption alignnone" style="width: 347px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC016.jpg" rel="lightbox[8616]"><img class=" wp-image-8770 " alt="그림16. CANTUS devTool" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC016.jpg" width="337" height="490" /></a><p class="wp-caption-text">그림16. CANTUS devTool</p></div>
<p>USB Mass Storage를 사용하면 EVM의 NAND Flash Memory 또는 SD Card를 PC에서 이동식 디스크로 사용할 수 있으며, FAT를 사용하여 Application에서 Drive로 접근하여 Read/Write가 가능하다. USB Mass Storage기능이 불필요하다면, BootLoader_tiny를 사용할 수 있다.</p>
<div id="attachment_8769" class="wp-caption alignnone" style="width: 486px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC017.jpg" rel="lightbox[8616]"><img class=" wp-image-8769 " alt="그림17. USB Mass Storage와 Application에서 사용 예" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC017-595x620.jpg" width="476" height="496" /></a><p class="wp-caption-text">그림17. USB Mass Storage와 Application에서 사용 예</p></div>
<p>Application 호출은 CANTUS 128A/512에 따라 달라진다.</p>
<p>CANTUS 128A(4 Kbyte x 32 Sector)<br />
BootLoader : 8 Sector(0&#215;00008000)를 호출<br />
BootLoader_tiny : 4 Sector(0&#215;00004000)를 호출</p>
<p>CANTUS 512(64 Kbyte x 8 Sector)<br />
BootLoader : 1 Sector(0&#215;00010000)를 호출<br />
BootLoader_tiny : 1 Sector(0&#215;00010000)를 호출</p>
<p><span style="color: #ff9900"><strong>2. Application</strong></span><br />
Application은 다음과 같이 구성 되어 있다. BootLoader가 필요하지 않다면, 0 Sector에 Download함으로써 BootLoader없이 CANTUS Reset후 실행할 수 있다. 단, 이때 Application의 Build는 Linker Script ‘cantus.ld’ 의 11번 Line이 0×00000000으로 설정된 상태에서 수행되어야 한다.<br />
Build 및 Download는 앞서 살펴 보았던 Uart와 동일하다.</p>
<div id="attachment_8767" class="wp-caption alignleft" style="width: 285px"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC019.jpg" rel="lightbox[8616]"><img class="size-full wp-image-8767 " alt="그림 19. SDK의 Application" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/07SCADC019.jpg" width="275" height="561" /></a><p class="wp-caption-text">그림 19. SDK의 Application</p></div>
<p>&nbsp;</p>
<p>홈페이지 : <a href="www.adc.co.kr" target="_blank">www.adc.co.kr</a><br />
개발자커뮤니티공간 : <a href="http://cafe.naver.com/adchips" target="_blank">http://cafe.naver.com/adchips</a><br />
E-mail : sales1@adc.co.kr<br />
Tel : 02-2107-5870</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/8616/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[6호] 위드로봇 무료강좌 기술자료 &#8211; 2차</title>
		<link>http://www.ntrexgo.com/archives/7697</link>
		<comments>http://www.ntrexgo.com/archives/7697#comments</comments>
		<pubDate>Fri, 25 Mar 2011 06:38:51 +0000</pubDate>
		<dc:creator>디바이스마트 매거진</dc:creator>
				<category><![CDATA[디바이스마트 매거진]]></category>
		<category><![CDATA[스페셜 컬럼]]></category>
		<category><![CDATA[6호]]></category>
		<category><![CDATA[강좌]]></category>
		<category><![CDATA[기술]]></category>
		<category><![CDATA[매거진]]></category>
		<category><![CDATA[스페셜]]></category>
		<category><![CDATA[위드로봇]]></category>
		<category><![CDATA[자료]]></category>
		<category><![CDATA[컬럼]]></category>

		<guid isPermaLink="false">http://www.ntrexgo.com/?p=7697</guid>
		<description><![CDATA[디바이스마트매거진 6호 &#124; 전형적인 영상처리 시스템은 영상을 취득하는 카메라, 취득된 영상 신호를 원거리로 전송할 수 있게 변경하는 인코더, 그리고 이를 다시 복원하는 디코더, 마지막으로 영상을 출력 또는 처리하는 PC 또는 임베디드 시스템으로 구성할 수 있다. ]]></description>
				<content:encoded><![CDATA[<h3><span style="color: #333333"><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH011.jpg" rel="lightbox[7697]"><img class=" wp-image-7711 alignleft" alt="06SCWITH011" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH011-300x204.jpg" width="210" height="143" /></a>2차 릴레이 무료강좌 기술자료</span></h3>
<h2><strong><span style="color: #008000">영상 처리 시스템 소개</span></strong></h2>
<p>&nbsp;</p>
<p style="text-align: left">글 | 위드로봇(주) 김도윤대표</p>
<p>&nbsp;</p>
<p><span style="font-size: 13px;line-height: 19px">위드로봇 연구실 확장 이전 기념 릴레이 무료 강좌 2차 교육이 2010년 12월 11일 토요일에 성수동 위드로봇 본사에서 진행 되었습니다. 영상 처리 시스템에 대한 주제로 진행된 이번 강좌의 강의 내용을 참석하지 못한 디바이스마트 매거진 구독자들을 위해 간단히 소개하고자 합니다. </span></p>
<p><strong><span style="color: #008000">센서 관점에서 영상 처리</span></strong></p>
<p>자동화 시스템을 구성할 때 대상 시스템의 상태를 정확하게 파악하기 위해 다양한 센서들이 사용된다. 예를 들어 모터의 속도를 정확하게 유지하는데 관심이 있다면 타코메타(Tachometer) 또는 엔코더(Encoder)를 센서로 사용하게 될 것이고, 어떤 물체가 특정 위치를 지나갔는지 아닌지를 판단하기 위해서는 접촉식 스위치 또는 적외선 LED 방식의 비접촉 검출 센서를 사용하게 될 것이다. 자동화 시스템에서 사용되는 센서는 무수히 예를 들 수 있겠지만 이러한 많은 센서들 중에서 가장 많은 정보를 포함하고 있는 센서로는 영상(Image)을 취득할 수 있는 이미지 센서를 꼽는데 전문가들은 주저하지 않는다.</p>
<p>영상은 3차원 공간 상에 존재하는 물체들이 광원의 빛 입자를 반사하는 파장대(색깔)를 2차원 공간에 투영한 것으로 데이터 안에 공간에 대한 기하학적인 정보(크기, 모양, 두께, 각도, 형태, 존재 유무)뿐만 아니라 색상 정보에 의한 추가 정보(대상 물체간의 그룹핑, 표면의 결함, 각 물체의 인식, 사람일 경우 얼굴 인식, 성별 인식, 나이 추정 등)까지 알 수 있어 그 활용도는 무궁무진하다. 정보가 많다는 것은 그 데이터의 크기가 크다라는 말과 직결되고, 영상 데이터의 크기 문제 때문에 이전 기술로는 실시간 처리가 어려워 산업체에서는 활발히 사용하기가 어려웠다. 하지만 빠르게 발전하는 전자공학과 IT 기술에 힘입어 이제 주변에서 손쉽게 영상 데이터를 취득할 수 있으며, 데이터의 가공, 조작이 쉬워졌다. 따라서 조만간 우리 주변에 많은 부분에서 이러한 영상 센서를 사용한 제품군들을 접하게 될 것으로 예상되며, 이런 기술을 가진 기술자, 전문가들 또한 많이 필요할 것으로 예상되어, 디바이스마트 매거진 독자들에게 해당 기술을 소개할 목적으로 본 원고는 작성되었다.</p>
<p><strong style="font-size: 13px;line-height: 19px"><span style="color: #008000">영상처리 시스템의 구성</span></strong></p>
<p>전형적인 영상처리 시스템은 영상을 취득하는 카메라, 취득된 영상 신호를 원거리로 전송할 수 있게 변경하는 인코더, 그리고 이를 다시 복원하는 디코더, 마지막으로 영상을 출력 또는 처리하는 PC 또는 임베디드 시스템으로 구성할 수 있다. 이 중 영상처리 분야에서는 디코더 대신 해당 기능을 강조한 이미지 그래버(Image Grabber) 또는 프레임 그래버(Frame Grabber)라는 표현을 더 많이 사용한다. 현재 시장에 나와있는 대부분의 카메라는 인코더를 카메라에 내장한 형태로 나오기에 다시 정리해 보면 카메라-이미지 그래버-PC 형태로 정리할 수 있고 아래 그림과 같다.</p>
<table style="border-collapse: collapse" width="600" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH012.jpg" rel="lightbox[7697]"><img class="wp-image-7715 aligncenter" alt="06SCWITH012" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH012-620x255.jpg" width="558" height="230" /></a></td>
</tr>
<tr>
<td style="text-align: center">그림 1. 영상 처리 시스템의 구성</td>
</tr>
</tbody>
</table>
<p>위드로봇에 많이 문의하는 내용 중에 하나가 “2~3만원하는 USB 웹캠으로 영상을 받아 PC에서 처리하는 형태로 시스템을 구성하면 안되나요?”이다. 결론부터 말하면 “문제없다”이다. 예전에는 웹캠의 영상을 사용자가 작성할 프로그램 영역으로 가져오기 위해 MS Windows OS를 사용하는 경우에는 Direct Show 기술을 미리 알고 있어야 했지만, <span style="font-size: 13px;line-height: 19px">최근에는 OpenCV(http://sourceforge.net/projects/opencvlibrary/)와 같은 공개 비전 라이브러리를 이용하면 매우 손쉽게 웹캠 영상을 바로 취득할 수 있으며, 여러 영상 처리 알고리즘을 라이브러리 레벨에서 바로 이용할 수 있다. 하지만 복수 개의 영상을 얻어야 한다든지, 렌즈 화각을 변경해야 한다든지, 노출 시간을 조절해야 하는 부분은 USB 웹캠으로는 해결하기 어려운 부분이다. 따라서 영상 처리 분야에 입문하는 분들이라면 USB 웹캠과 OpenCV로 학습을 하다가 일정 단계 지식이 쌓이면 카메라와 이미지 그래버를 구매하여 본격적인 연구를 진행할 수 있는 시스템을 구축하는 것도 좋은 방법이다.</span></p>
<p><strong><span style="color: #008000">영상 처리에서 가장 중요한 광원</span></strong></p>
<p>위에서 전형적인 영상 처리 시스템은 카메라-그래버-PC 세 가지 조합으로 구성된다고 설명했다. 하지만, 이 세 가지 전체를 합친 것보다 중요한 것은 광원이다. 영상을 얻으려면 물체 자체가 발광하지 않는 한 외부에 어떠한 광원이 있어야 하는데, 영상은 광원의 종류, 개수, 위치에 따라 큰 차이가 발생하게 된다.</p>
<p>예를 들어, 참치캔을 제조하는 회사에서 참치캔 윗면에 주름이 제대로 있는지 없는지 확인하는 검사 장비를 의뢰했다고 가정해 보자. 전형적인 환경에서 카메라로 참치캔 윗면을 촬영한다면 아래 그림 2처럼 나올 것이다. 이 영상에서 참치캔 주름을 잘 찾아내는 일은 영상 처리 분야에 지식을 많이 가진 고수들도 꽤나 난감한 일이다. 주름 부분이 도드라진 부분도 있지만, 그림자로 인해 반대로 어두운 부분이 섞여 있으며, 참치캔 표면에 인쇄되어 있는 글씨들도 영상 처리에 많은 영향을 미친다. 이 사진 하나로 참치캔 주름의 유무를 찾아야 한다면 꽤나 복잡한 영상 처리 알고리즘을 동원해야 하고, 그런다손 치더라도 다양한 참치캔에 일일이 적용해 보기 전에는 그 결과를 장담할 수 없는 시스템이 만들어진다. 하지만 광원을 바꿔 촬영할 수 있다면 이는 매우 손쉬운 문제로 바꿀 수 있다.</p>
<table style="border-collapse: collapse" width="600" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH001.jpg" rel="lightbox[7697]"><img class="wp-image-7706 aligncenter" alt="06SCWITH001" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH001-300x234.jpg" width="168" height="131" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH004.jpg" rel="lightbox[7697]"><img class="alignnone  wp-image-7709" alt="06SCWITH004" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH004-150x150.jpg" width="135" height="135" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH002.jpg" rel="lightbox[7697]"><img class="alignnone size-thumbnail wp-image-7707" alt="06SCWITH002" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH002-150x150.jpg" width="150" height="150" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH003.jpg" rel="lightbox[7697]"><img class="alignnone size-thumbnail wp-image-7708" alt="06SCWITH003" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH003-150x150.jpg" width="150" height="150" /></a></td>
</tr>
<tr>
<td>그림 2. 전형적인 참치캔의 윗면을 일반 광원에서 촬영한 영상</td>
<td colspan="3">그림 3. 좌측 그림처럼 돔형 광원을 배치하고 거리를 달리하여 영상을 촬영하면 중앙과 우측의 영상을 얻을 수 있다.</td>
</tr>
</tbody>
</table>
<p>위 그림3과 같이 돔형으로 생긴 광원을 이용하여 참치캔 적정 거리에서 영상을 하나 얻고, 광원을 참치캔에 좀 더 접근하여 또 다른 영상을 얻으면 중앙과 우측과 같은 영상을 얻을 수 있다.<br />
두 영상을 비교해 보면 하나의 영상은 참치캔 주름이 그림자로 짙은 색으로 표현되어 있고, 다른 한쪽은 주름의 그림자가 사라진 것을 볼 수 있다. 두 영상의 차이를 추출하면 간단히 참치캔의 주름 부분을 파악할 수 있어 매우 손쉬운 문제로 바뀐다.</p>
<p>위 예에서 볼 수 있듯이 지능적이고, 고도로 복잡한 영상 처리 알고리즘보다 잘 선택한 광원으로 얻은 영상과 간단한 영상 처리 알고리즘의 조합이 훨씬 더 좋은 결과를 내는 경우가 많다. 가장 좋은 디자인은, 더 이상 뺄 것이 없는 디자인이라는 말이 있듯이 가장 좋은 시스템은 복잡한 것이 아니라, 간단하고 명료하면서 정확하게 동작하는 시스템이다. 아쉬운 점은 이러한 광원에 대한 연구는 학계에서 보다는 산업체 현장에서 더 강조되고 있기에 체계적인 매뉴얼에 의해 광원 선정 및 배치가 이뤄지기 보다는 현장에서 경험한 시행착오에 의해 결정되고 있다. 보다 많은 영상 처리 전공자들이 이러한 광원에 대한 여러 경험치를 공유하고 정리된다면 영상 처리 분야의 발전을 보다 당길 수 있을 것으로 기대된다.</p>
<p><strong><span style="color: #008000">너무나 넓은 영상 처리 분야</span></strong></p>
<p>이러한 영상 처리 분야를 본격적으로 학습하려면 어디서부터 무엇을 하는 것이 좋을까? 앞에서 언급했듯이 영상 데이터 자체에 워낙 많은 정보가 들어있어 영상 처리의 목적에 따라 각각의 관심 분야가 달라지기에, 내가 최종적으로 무엇을 원하는가를 명확하게 알고 있어야 한다. 영상 처리에 관하여 권위 있는 AIA(Automated Imaging Association)에서는 다음과 같이 영상 처리 분야를 Machine Vision, Image Processing, Computer Vision으로 세 분류로 나눠났다. 각각의 특징은 여러 가지로 설명할 수 있겠지만 Image Processing과 Computer Vision 분야는 아무래도 그 차이점을 구분하기가 모호한 것이 사실이다. 따라서 위드로봇에서는 Computer Vision 분야 대신 Computer Graphics로 표현을 변경하고 그림 4의 좌측 표로 세 분류간의 차이를 설명하곤 한다.</p>
<table style="border-collapse: collapse" width="600" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH006.jpg" rel="lightbox[7697]"><img class="wp-image-7701 aligncenter" alt="06SCWITH006" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH006.jpg" width="216" height="216" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH005.jpg" rel="lightbox[7697]"><img class="wp-image-7710 aligncenter" alt="06SCWITH005" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH005-300x192.jpg" width="270" height="173" /></a></td>
</tr>
<tr>
<td style="text-align: center" colspan="2">그림 4. 좌측-AIA 에서 제안한 영상 처리 분야, 우측-위드로봇 관점의 영상 처리 분야 grouping</td>
</tr>
</tbody>
</table>
<p>위 표를 보면서, 각 분야의 차이점을 따져보자. 입력으로 영상을 넣고 출력을 영상으로 얻는 것에 관심이 있는 경우는 Image Processing 분야가 된다. 만일 여러분이 포토샵과 같은 툴을 이용해 작업하는 분야에 관심이 있다면 이는 Image Processing 분야가 된다. 입력은 영상이 아닌데 출력이 영상으로 나오는 경우는 Computer Graphics 분야가 된다. 각종 3차원 기하학적인 정보와 광원의 속성들을 입력하여, 가상의 이미지를 얻어내는 분야가 Computer Graphics 분야이다. 세 번째로 영상을 입력하여 영상이 아닌 다른 데이터를 얻어내는 것에 관심을 가지는 분야가 Machine Vision 분야이다. 예를 들면 각종 영상 기반 검사 장치에서 제품에 하자는 없는지, 인쇄는 제대로 되었는지 등을 영상을 통해 파악하는 경우는 Machine Vision 분야에 속하게 되는 것이다. 마지막으로 영상이 아닌 것을 넣어 영상이 아닌 정보를 얻는 것은 당연히 영상 처리 분야에 속하지 않으므로 이 자리에서 언급할 필요는 없어 보인다.</p>
<p>위에서 소개한 세 분류는 각각의 목적에 따라 알아야 할 지식, 관심을 가지는 방법론들이 서로 다르다. Image Processing을 전공하는 사람들은 주로 2D Signal Processing에 관심이 많다. 2D Matrix로 표현되는 선형 필터를 설계하거나, 압축을 위해 Mpeg을 연구하는 분들이 이 부류에 속한다. 반면에 Machine Vision의 경우는 카메라 내부, 외부의 기하학적인 정보(Intrinsic, Extrinsic Parameter)를 정확하게 얻어내기 위한 카메라 캘리브레이션(Camera Calibration)이 가장 기초가 되며 한 장의 영상으로 원하는 정보를 얻지 못하는 경우 여러 장의 이미지에서 원하는 데이터를 추출하는 Multi-view Geometry에 관심을 가진다. 자신이 현재 해결하고자 하는 영상 처리 문제가 어디에 속하는 문제인지 파악하는데 어려움을 겪고 있는 독자가 있었다면, 위 표로 조금이나마 도움이 되길 바란다.</p>
<p><strong><span style="color: #008000">색의 수학적 표현</span></strong></p>
<p>우리는 초등학교 시절부터 색은 3원색으로 구성되며 Red, Green, Blue (RGB)라고 배워왔다. 정말 색은 R + G + B의 조합으로 구성될까? 특정 색이 RGB로 표현된다는 뜻은 수학적으로 보면 3가지 색상이 각각의 좌표축을 이뤄 공간을 형성하며, 이 공간이 벡터 스페이스가 되어야 한다. 하지만 RGB 는 단지 인간의 편의에 의해 만들어진 공간이기에 RGB 공간 상에서는 일반 대수 연산이 아무런 의미를 가지지 못한다.</p>
<table style="border-collapse: collapse" width="600" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH008.jpg" rel="lightbox[7697]"><img class="alignnone  wp-image-7703" alt="06SCWITH008" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH008-300x281.jpg" width="240" height="225" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH007.jpg" rel="lightbox[7697]"><img class="alignnone size-medium wp-image-7702" alt="06SCWITH007" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH007-300x148.jpg" width="300" height="148" /></a></td>
</tr>
<tr>
<td style="text-align: center" colspan="2">그림 5. RGB 공간에서 색의 표현</td>
</tr>
</tbody>
</table>
<p>설명이 복잡하니 좀 더 쉽게 설명해 보자. 어떤 물체의 색상이 잘 칠해졌는지 잘못 칠해 졌는지 판단하는 영상 처리 시스템을 만든다고 가정해 보자. 카메라로 물체를 촬영하여 색상 정보를 추출한 뒤 내가 원래 가지고 있는 색상과 얼마나 차이가 나는지를 어떻게 프로그램 할 것인가?</p>
<p>RGB 공간에서 프로그램 한다면 원래 알고 있는 색상의 각각 R, G, B 값과 측정한 물체의 R, G, B 값을 빼서 그 차이가 크면 원본과 차이가 많이 난다고 할 수 있을 것이다. 그런데 R 값의 차이와 G 값의 차이는 1:1 같은 의미를 가지는가? 어떤 샘플은 G와 B는 일치하는데 R 값은 차이가 Alpha 만큼 났고 또 다른 샘플은 R과 G는 일치하는데 B 값은 Alpha 만큼 났다. 그러면 이 두 샘플은 원본과 비슷한 정도로 차이가 나는 걸까? 아쉽게도 RGB 공간은 벡터 스페이스가 아니기에 이러한 뺄셈은 서로 비교가 불가하다(정확한 표현은 벡터 스페이스가 아니면 뺄셈이라는 연산이 정의가 되지 않는다). 원리가 이러한데 아무런 사전 지식 없이 색상의 차이를 RGB 공간에서 비교하겠다고 프로그래밍을 작성한다면 아무리 복잡한 알고리즘을 들이민들 해결책을 찾기란 꽤나 어려울 것이다.</p>
<p>다행히 벡터 스페이스 정의를 만족하는 CIE 색공간이 정의되어 있으며, RGB 공간을 조금은 복잡하지만 CIE 색공간으로 바꿀 수 있다. CIE 공간에서는 위에서 설명한 색상 차이를 정확하게 계산해 낼 수 있다. CIE 공간으로 바꾸는 수식이 꽤나 복잡하여 연산량이 많기에 산업체 현장에서는 CIE 공간 효과를 볼 수 있는 YUV나 YIQ 색공간에서 위와 같은 작업을 대신하기도 하지만 엄밀한 의미에서 이 공간들도 벡터 스페이스 정의를 만족시키지는 못한다.</p>
<p><strong><span style="color: #008000">영상 전송 방식</span></strong></p>
<p>앞의 글에서 영상 신호를 원거리로 전송하기 위해 특정 신호 규약으로 인코딩을 한다고 밝혔다. 일반적인 CCTV 카메라들은 국내에서는 NTSC 신호 규약으로 아날로그 방식으로 전송하고 있으며, 웹캡에 사용되는 CMOS 센서들은 ITU BT.601 또는 BT.656으로 전송한다. 영상 처리를 하려면 이러한 신호를 다시 풀어 접근이 가능한 메모리 영역에 영상을 집어 넣어야 하기 때문에 이러한 전송 방식에 따른 특장, 장단점을 잘 알고 있어야 한다.</p>
<p>아날로그 전송 방식은 국내의 경우는 거의 예외 없이 NTSC 방식을 따르므로 NTSC 신호를 디코딩 할 수 있는 장치, 즉 이미지 그래버가 필요하다. 이러한 이미지 그래버는 PC에 연결하는 방식에 따라 다시 PCI(또는 PCI Express) 방식과 USB 방식으로 나뉜다. CPU 점유율, 전송 지연 시간, 영상의 품질 등에서는 아무래도 PCI 방식이 USB 방식에 비해 낫다. 하지만 PCI 방식일 경우 부피가 큰 데스크톱 PC에만 설치가 가능하므로, 이동이 잦고 노트북이나 PCI 슬롯이 없는 환경에서는 USB 타입의 이미지 그래버가 필요하게 된다. 이러한 이미지 그래버를 사용하면 NTSC 신호로 전달되는 영상 신호를 사용자가 접근할 수 있는 영역까지 전달하는 라이브러리를 제공하므로 손쉽게 프로그래밍 할 수 있다.</p>
<p>CMOS 센서의 경우 BT.601/656 데이터 신호를 PC에서 직접 받을 수 있는 장치는 없다. 따라서 이 신호를 기존 PC가 가지고 있는 USB나 기타 인터페이스에 맞게 변형하여 전달해야 하는데, 아직 시장이 형성되지 않은 관계로 상용품은 찾기 어려우며, 주로 개발 용역 과제 형태로 진행된다. 특정 CMOS 센서를 이용해서 시스템을 구축해야 하는 경우라면 외주 용역 형태로 개발 또는 자체 개발을 해야 할 것이며, 센서 모델이 딱히 정해지지 않은 경우라면 일반 웹캠을 이용하는 것도 한 가지 방법이다.</p>
<p><span style="color: #008000"><strong>임베디드 비전 시스템</strong></span></p>
<p>1990년대까지만 해도 영상 처리는 고가의 PC에서도 실시간으로 처리하기 어려울 만큼 연산량이 많은 분야였다. 하지만 눈부시게 발전하는 반도체 기술로 인해 이제는 손바닥에 올라갈 만큼의 조그마한 임베디드 마이크로프로세서 보드들이 2000년대 중반에 나온 PC의 성능만큼을 가지게 되어 매우 복잡한 알고리즘이 아니면 이러한 임베디드 보드에서도 실시간 처리가 가능하게 되었다.</p>
<table style="border-collapse: collapse" width="600" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH009.jpg" rel="lightbox[7697]"><img class="alignnone size-medium wp-image-7704" alt="06SCWITH009" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH009-300x225.jpg" width="300" height="225" /></a></td>
<td><a href="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH010.jpg" rel="lightbox[7697]"><img class="alignnone size-medium wp-image-7705" alt="06SCWITH010" src="http://www.ntrexgo.com/wp-content/uploads/2013/04/06SCWITH010-300x225.jpg" width="300" height="225" /></a></td>
</tr>
<tr>
<td style="text-align: center" colspan="2">그림 6. 2011년 하반기 출시 예정인 Smart-I 플랫폼</td>
</tr>
</tbody>
</table>
<p>위드로봇에서는 이러한 시대의 흐름에 맞춰 Smart-I 라는 임베디드 비전 플랫폼을 만들어 출시할 계획이다. 실수 연산이 가능한 ARM11 프로세서와 CMOS 1.3M 화소의 카메라를 내장하고, PC와는 USB로 연결이 된다. 이 보드에는 OpenCV가 이식되어 있으며, PC쪽으로 영상을 USB를 통해 전송하여 PC에서 처리 결과를 바로 확인할 수 있다. 또한 PC쪽에서 작성한 알고리즘이 별다른 변경 없이 바로 Smart-I 플랫폼에서 동작할 수 있도록 환경을 구축하여 보다 편리하게 영상 처리 개발자들이 임베디드 비전 시스템을 사용할 수 있을 것이라 기대하고 있다. Smart-I 플랫폼은 2008년도에 그 원형이 개발 완료되었지만, 이러한 편리한 기능을 갖추기 위해 시간이 많이 소요되었으며, 2011년 올해 드디어 공개할 수 있을 것으로 보인다.</p>
<p><span style="color: #008000"><strong>인간의 시각 시스템과 비교</strong></span></p>
<p>마지막으로 영상 시스템은 인간의 시각 시스템과 그 구조, 구성이 매우 유사하기에 인간의 시각 시스템과 자주 비교되곤 한다. 카메라의 해상도, 즉 화소는 인간의 망막에 있는 시세포와 동일한 기능을 한다. 디지털 카메라의 성능을 비교할 때 몇 만 화소인가를 이야기하는데, 최근 시장에서 많이 판매되는 디지털 카메라의 경우는 약 천 만화소급이 많이 보인다. 그렇다면 인간의 시세포는 몇 만 화소쯤 될까? 재미있게도 1:1 비교가 조금은 힘들다. 디지털 카메라의 화소는 영상을 얻는 전체 영역에 같은 분포로 배치가 되어 있지만 인간의 경우는 그렇지 않기 때문이다. <span style="font-size: 13px;line-height: 19px">그 이유는,</span></p>
<p style="padding-left: 60px">1. 인간의 망막에는 흑백 명암만을 구별하는 간상체(Rod)와 색상을 인식하는 추상체(Cone)로 나눠져 있다.<br />
2. 추상체와 간상체의 배치가 디지털 카메라의 화소처럼 바둑판 모양으로 균일하게 배치되어 있지 않고, 망막 중심에 집중적으로 배치되어 있다.<br />
3. 일반 카메라는 렌즈와 센서가 하나지만, 인간은 두 개다.</p>
<p><span style="font-size: 13px;line-height: 19px">1번을 상세히 설명해 보면 인간의 눈에는 흑백 센서와 컬러 센서가 따로 존재한다는 뜻이 된다. 하나의 눈에 300만개 이상의 추상체가 있는 것으로 알려져 있다. 생각보다 적은 수치인데 반면 흑백 명암을 구별하는 간상체는 약 1억개 이상으로 추정된다.</span></p>
<p><span style="font-size: 13px;line-height: 19px">2번의 내용은 컬러를 인식하는 추상체의 경우 눈을 움직여 어느 한 곳을 응시할 때, 상이 맺히는 망막에 집중적으로 분포하고 그 외 지역에는 듬성듬성 배치되어 있다. 이러한 이유로 우리는 무엇인가 집중적으로 보려고 할 때, 고개와 눈동자를 돌려 관심있는 물체를 응시하는 습관이 나오게 되는 것이다.</span></p>
<p>3번 내용은 매우 복잡하다. 아직까지도 인간이 3차원 공간을 어떻게 인지하는지 전문가들 사이에서도 의견이 분분하다. 확실한 것은 하나의 2차원 이미지로는 3차원 공간에 대한 정보를 얻을 수 없기에 눈 두 개를 이용하여 사라진 3차원 공간에 대한 정보를 복원하는 것인데, 단순히 이러한 스테레오 매칭만으로는 인간의 뛰어난 인지 능력을 설명하기에는 부족하다. 최근 뇌공학자들의 집중적인 연구에 의해 밝혀진 부분은 단순히 영상이 뇌로 전달되는 경로(feed-forward path)만 있는 것이 아니라, 뇌에서 다시 되먹임 경로(feedback path)를 통해 상위 레벨의 정보가 하위단으로 내려오는 부분이 있다는 점이다. 이는 단순히 두 개의 눈으로 들어온 정보만으로 3차원 공간을 인지하는 것이 아니라, 기존 학습에 의해 인지하고 있는 정보를 추가로 이용하여 공간을 인지한다는 가설을 뒷받침하는 강력한 증거이기도 하다. 스테레오 비전 시스템은 이 주제만으로 한참 설명을 해야 하므로 다음 번 디바이스마트 매거진을 통해 소개하기로 한다.</p>
<p><strong><span style="color: #008000">마감하며</span></strong></p>
<p>영상 처리 기술을 소개한다며 정작 영상 처리 알고리즘에 대한 이야기는 한 마디도 언급이 안되었다. 이는 디바이스마트 매거진 독자층을 고려한 것인데, 현재 영상 처리 분야에서 활동하시는 분이라면 최근 이슈가 되고 있는 알고리즘의 동향(예를 들면 SIFT, SURF 등등의 특징점 추출 알고리즘)의 소개를 기대했을지 모르겠다. 하지만 위드로봇에서 공개강좌를 했을 때 접한 대다수 분들은 영상 처리에 대해 관심을 가지고 막 시작하려는 분들이 대부분이었기에, 우선 본격적인 알고리즘이나 이론을 소개하기에 앞서 영상 처리 분야가 이런 것이고 이런 부분이 중요하다는 점을 강조하고 싶었다. 다음 번 원고(스테레오 영상 및 3D Vision 기술)도 현재 작성 중인데 이 때 알고리즘과 이론들을 설명하는 것으로 이번 호를 마친다.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ntrexgo.com/archives/7697/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
