플래시로 AR(증강현실)을 구현해 봤습니다.

3D Engine은 Sandy3D, 마커인식은 FlarToolKit  을 사용했습니다.

증강현실 개발 지원킷인 ARToolKit을 AS용으로 포팅한것이 FlarToolKit인 데요

플래시도 AS3.0 들어와서 속도도 꽤빨라지고, 거의 못하는게 없는것 같습니다.

FlarToolKit 내에 예제용 3D모델까지 포함되어있으니 여러분도 한번 시도해 보시죠~

시중에 돌고있는 Simson 종이인형을 3D모델링하고 관절 몇개 만들어 왕복운동 시켜본 것 입니다.





체험 서버 종료

무료 호스팅 서비스를 이용하던중 해당 회사 서비스가 종료되어  현재 체험이 불가합니다.  죄송합니다!!

동영상에서 보셨듯이 별다른 기능은 없고요, 그냥 목과 팔을 흔드는 심슨 3D 로봇이랍니다. 

차후 서버에 재등록하게되면 링크를 수정하도록하겠습니다.


준비물:

  1. 웹캠 : 플래시에서 인식되는 웹캠이면 됩니다.

  2. 마커(인식용 이미지가 인쇄된 종이) : 첨부파일을 다운로드 하셔서 가능한 두꺼운 종이에 인쇄하세요.


사용 방법:

접속 후 웹캠 사용 허락하기를 선택하신 후,  인쇄된 마커용지를 카메라에 비춰줍니다. 이후 마커의 위치와 방향에 맞쳐서 3D 로봇이 오버레이 되는것을 보실 수 있습니다. 조명이 중요하니 적절히 주변광을 맞춰주시면 인식이 더 잘됩니다.


어떻게 작동하는가?

웹캡으로 실시간 캡쳐한 영상에서 마커(특정 이미지 패턴이 인쇄된 종이)를 찾고, 그 위치와 방향을 계산해 냅니다. 여기까지가 FlarTooKkit(ARToolkit)이 하는 일이고요, 마커의 위치와 방향에 해당되는 영상이미지 위에 3D로 가상의 영상을 오버레이시켜서 실제화면과 가상화면을 동기화 시키게됩니다. 이때 3D 형상을 보여주는데 사용되는것이 Flash 3D 엔진입니다.  본 예에선 Flash 액션스크립트 개발환경을 이용하여 Flash Player상에서 작동되게되므로 별도의 프로그램 설치없이 웹카메라와 웹브라우져만으로 작동되는 장점이 있습니다.  다만 속도가 조금(많이?) 느립니다.  때문에 매우 빠르고 고화질을 원하는경우는 C/C++기반의 개발환경을 이용하곤 합니다. 다만 이경우엔 별도의 실행파일을 설치하여야 한다는 단점이 있습니다.


[]첨부파일: 증강현실FlarToolkit용 마커이미지(pdf파일)

flarlogo-marker.pdf


[]참고자료

FlarToolKitSandy3D  , Away3D

심슨종이로봇: http://cubeecraft.com/  직접인쇄해서 종이로봇 만들어보시면 로봇 장난감이 뚝딱~.


로보밥..

URBI는 프랑스 Gostai사에서 개발한 로봇개발 SW플랫폼입니다. 아래의 개요 소개문은 2007년 Gostai사의 홍보자료를 근거로 번역한 자료이며, 현재는 다소 변화된 부분도 있으나 기본개념은 동일할 겁니다.  최근 가장 중요한 변화는 GPL 라이센스의 도입과 엔진 버전이 2.0으로 변화되었다는것인데요.   상당히 혁신적인 기술임에도 널리 알려지지 못한채 사장되거나 시기를 놓쳐버리는 제품들이 많은 상황에서 적절한 대응이 아니였나 생각됩니다.  여러분도 직접 개발사 홈페이지에서 SDK를 받아서 테스트를 해보 실 수 있습니다. 기존 로봇 개발환경과 비교해서 너무도 손쉬운 제어  방법을 제공하고 있으므로, 실무 적용 여부를 떠나서 새로운 아이디어의 발견을 위해서라도 한번 검토해볼 만한 기술이라고 생각됩니다.

[사진1. URBI:: Gostai Studio IDE화면 ]


URBI는 로봇과 인공지능 어플리케이션 개발을 위한 크로스 플랫폼형 소프트웨어 플랫폼이며 병렬처리 및 이벤트처리를 지원하는 URBI 스크립트 언어(C++ 문법과 유사함)를 기반으로 하고 있다. 또한 UObject라 불리우는 분산형 컴포넌트 아키텍쳐 기술을 제공한다. 가령 C++객체를 URBI언어 내에 쉽게 이입하여 사용할 수 있으며, 이를 원격 실행 형 컴포넌트로도 운영할 수 있다.

현재 로봇용 소프트웨어들은 호환성이 없어서 운영체제나 개발환경에 따라 서로 다른 제어 소프트웨어가 필요하다. 여러분은 URBI를 통해 이 문제를 해결할 수 있다.


    * URBI는 운영체제와 개발환경에 무관하게 호환성을 가지는 로봇 제어 인터페이스를 제공한다.
    * URBI는 Linux, Windows,  Mac OS, custom real-time OS 기반의 로봇 모두에서 작동되며 C++ , Java, Matlab, C#, Python, ... 등의 언어들과도 라이브러리를 통한 인터페이스를 제공한다.
    * URBI 호환형으 로 한번 제작된 소프트웨어 모듈은 코드 수정이나 컴파일 없이 플랫폼에 상관없이 재 사용 할 수 있다. 가령 C++로 개발된 음성인식 기능의 컴포넌트를 UObject로 변환하여 제작해두면 운영체제에 상관없이 URBI 호환 로봇에서 재 이용 가능하다.


“URBI는 로봇제어에 특화된 언어이다”

기존 언어들은 기본적인 기능의 구현을 위해 개발시간의 대부분을 소비하게 하며 특히 인공지능의 구현 시 너무 복잡해진다. 이에 로보틱스 분야에서는 좀더 상위레벨의 접근방법이 요구되고 있다. 이 문제를 해결하기 위해 URBI는 언어 차원에서 병렬처리 및 이벤트구동을 지원하는 등 로봇 제어에 특화된 기능들을 포함하고 있다. URBI는 복잡한 쓰레드 및 이벤트 프로그래밍을 하지 않고도 병렬처리 및 이벤트 기반 프로그래밍이 가능하므로 배우거나 사용하기 쉬우며, 또한 몇 줄의 코드로 수십 줄의 코드를 대신하게 되므로 고급 개발자들은 좀더 상위 레벨의 추상화를 통한 고급 프로그래밍에 전념할 수 있게 된다.

 
현재, 대학 및 연구소와 산업현장 또는 취미용으로 이용되고 있다. URBI는 이미 휴머노이드 로봇이나 Marilou, Webot과 같은 시뮬레이터 등, 십여 종이 넘는 로봇용으로 구현되어 있다. URBI를 통하여 인공지능 전문 개발 업체들이 제작한 여러 종류의 컴포넌트를 이용할 수 있다. 일부 URBI Engine들(Aibo, Lego NXT, ...)은 개인적인 용도에 한해 무료로 이용할 수 있으며, 또한 GPL 라이센스 하에 공개된 URBI remote SDK를 이용하여 직접 여러분의 시스템에 적용해 볼 수 있다.

 
URBI 응용분야

- 인공지능 및 인공생명 어플리케이션
- 산업용 및 서비스 로봇 연구 개발
- 로봇용 디바이스 연구 개발
- 교육, 엔터테인먼트, 게임 프로그래밍
- 통합 제어 인터페이스


URBI 제품

UObject  SDK


URBI 호환형 UObject를 제작하는데 이용하며, C++로 개발된 얼굴인식 같은 인공지능 모듈이나 제어 어플리케이션들을 손쉽게 UObject로 전환하여, 각종 URBI호환 로봇들을 위해 사용할 수 있다.

engine SDK


특정 로봇 및 제어시스템들을 위한 URBI엔진을 제작하는데 이용하며, 산업용 및 서비스 로봇, 각종 제어 시스템 등을 URBI 호환 환경으로 만들기 위해 특정 로봇용 URBI엔진을 제작할 수 있도록 지원한다.

URBI engine


이미 특정 로봇용으로 제작된 URBI엔진들. URBI engine for Marilou Robotics Simulator 등.

 

URBI Development Studio

Behavior Editor, Motion Editor, Universal Remote Controller 포함. URBI 호환 형 로봇의 행동 패턴을 만들고, 인공지능 모듈과 융합하여 상태기계 기반의 제어 프로그래밍을 할 수 있도록 지원하며 URBI의 병렬처리 및 이벤트 처리 프로그래밍을 그래픽 인터페이스를 통해서 직관적으로 할 수 있는 방법을 제공한다. 또한 로봇의 원격 제어 프로그램을 위젯들의 조합 방법을 통해 손쉽게 만들어 주는 기능도 지원한다.
 

Plug & Plug형 컴포넌트

얼굴인식, 음성인식, 음성 합성 및 인식 등의 인공지능 모듈 및 각종 어플리케이션 들이 있으며, 각분야에서 전문적인 솔류션을 보유한 협력 업체에서 제작한 URBI 호환 UObjects 모듈 들이다.


[동영상 1. URBI 소개]



[동영상 2. URBI Studio]


관련사이트1.

http://gostai.com

ARDrone  + URBI응용예:

http://kr.engadget.com/2010/12/10/ar-drone-gets-urbi-and-tracks-red-ball/





로보밥..




Marilou(한 국식 발음 마릴루) 본토발음은 표현 못하겠네요 ;;
프랑스 anykode사에서 개발된 로봇 시뮬레이터입니다.  몇가지 로봇시뮬레이터들을 보신분 들이 많을겁니다. 그중에서 유일하게 돋보이는 기능은 별도의 모델링툴없이 곧바로 로봇장치를 모델링 할 수 있다는 점입니다.
아래의 강아지 로봇도 별도의 모델링 전용SW없이 Marilou 내에서 제작된 로봇의 예 입니다. Sony사의 Aibo로봇과 동일한 관절 형태를 갖고 있으며, 좀더 사실적인 외형을 원할경우엔 외부모델링된 Data를 불러와서 연결시킬 수 도 있습니다. 제작사에서 다운로드하여 아래와같은 관절로봇을 만들어 보실 수 있습니다.





 

Marilou Robotics Studio이동형, 휴머노이드형, 관절형, 협력형 로봇들을 직접 모델링하고 현실의 물리법칙이 적용되는 상황에서 시뮬레이션 할 수 있는 환경을 제공합니다.

 



[동영상1. 강아지로봇 구현 예제]


[]Marilou Robotics Studio
의 주요특징

- 별도의 3D모델링 프로그램 없이도 Marilou Robotics Studio 자체적으로 로봇 형상 및 관절 축의 정의로 어떠한 형상의 로봇도 제작이 가능합니다.

- MODA인터페이스 제공:  로봇제어용 네트워크 프로그래밍 소스 자동생성 마법사 기능

- VCP(Virtual Serial Port)가상시리얼 포트 지원 

- URBI(로봇제어용 유니버셜 인터페이스) 지원
  Marilou URBI Engine을 추가하면, URBI호환 로봇간의 완전한 호환성을 바탕으로 한 제어프로그래밍 환경을 이용할 수 있습니다.

 


.URBI(Universal Real-time Behavior Interface):
 
플랫폼과 무관하게 통합(Universal) 로봇제어 인터페이스 환경입니다.
운영체제 및 개발환경과 무관하게 URBI호환 엔진을 장착한 로봇들간의 완전한 호환성을 제공하므로, 로봇제어프로그래밍 개발환경이 통합됩니다. 인공지능(AI)모듈을 URBI UObject로 제작하면 URBI호환 로봇간의 통합 이용이 가능합니다.

 

.URBI Script

 로봇에 특화된 병렬처리 및 이벤트처리 같은 기능의 구현을 위해, 전용 스크립트 언어입니다.  URBI 스크립트언어는 로봇에 내장된 URBI Engine에 의해 해석되어 필요한 제어명령을 수행하게 됩니다.



[]Marilou Robotics Studio의 주요특징

 

- 별도의 3D모델링 프로그램 없이도 Marilou Robotics Studio 자체적으로 로봇 형상 및 관절 축의 정의로 어떠한 형상의 로봇도 제작이 가능합니다.

 

- Microsoft계열 프로그래밍 환경과 GNU Gcc 프로그래밍 환경 모두 지원하며
 
다양한 프로그랭언어(C/C++, VB#, J#, C# and C++ CLI)를 사용할수있으며,
Matlab, Java, Automgen and RT-Maps
과도 호환됩니다.

 

- MS계열도 Visual Studio 2005 Express버젼 이용시 무료개발환경 이용가능

- MODA인터페이스제공: Marilou 시뮬레이터용 로봇제어 인터페이스. 로봇 제어프로그램은 TCP/IP 접속을 통해 로봇에 연결되며, 이를 위한 소스코드를 기본으로 자동생성해주므로, 별도의 네트워크프로그래밍 없이 네트워크 협력 형 로봇들을 시뮬레이션 할 수 있습니다.

 

- VCP(Virtual Serial Port)가상시리얼 포트 지원: 시리얼통신에 의한 로봇제어 프로그래밍 방식을 사용 중일 경우 제어프로그램의 변경 없이 가상시리얼포트를 통한 로봇제어가 가능합니다. 이를 통해 케이블 시리얼은 물론이고 블루투스나 Zigbee같은 무선 시리얼 통신을 이용할 경우라도 가상로봇과 실제로봇의 완벽한 호환성을 제공하므로 응용성이 좋습니다.

 


- URBI(Universal Real-time Behavior Interface): 로봇제어용 유니버셜 인터페이스 엔진지원
  Marilou
URBI engine을 추가하면, URBI호환 로봇간의 완전한 호환성을 바탕으로 한 제어프로그래밍 환경을 이용할 수 있습니다.

 


.URBI
?
플랫폼과 무관한 통합된 로봇제어 인터페이스 환경입니다.
운영체제 및 개발환경과 무관하게 URBI호환 엔진을 장착한 로봇들간의 완전한 호환성을 제공하므로, 로봇제어프로그래밍 응용환경이 통합됩니다. 인공지능모듈을 URBI UObject로 제작하면 URBI호환 로봇간의 통합 이용이 가능해지므로, 다종의 로봇들간에도 제어프로그램 환경과 인공지능 모듈의 호환된 융합 이용이 가능합니다.

 

또한 플랫폼 호환성과 로봇에 특화된 병렬처리 및 이벤트처리 기능의 구현을 위해, 전용 스크립트 언어인 URBI Script를 이용합니다.  URBI 스크립트언어는 로봇에 내장된 URBI engine에 의해 해석되어 필요한 제어명령을 수행하게 됩니다.




관련링크1. http://anykode.com

한글 교육자료: http://robobob.tistory.com/10


제품 구입, 교육 및 기술지원 문의는 메일(sixgen@gmail.com)로 해주시기 바랍니다.

로보밥..

부제목: 1석(트랜지스터) LED 점멸기 (Single LED Flasher)

이번엔 LED 점멸기를 소개하려 합니다. 

발진회로를 찾다가 재밌는걸 발견했습니다. 
보통 LED 점멸기라면 트랜지스터 두개를 사용해야 한다고 생각하고 있었는데요
이녀석은 한개로 됩니다.

[그림1]

정확히는 모르지만 Esaki Effect(효과)와 관련된것 같습니다. 1972년에 노벨상을 받은 Leona Esaki라는 사람의 1957년경 발표된 연구결과에서 기원했다는군요.

전자회로 전공서적을 보면 UJT나 쇼클리다이오드를 이용한 발진회로와 유사하네요.
아마도 위 효과를 응용하여 만든 전용소자들인가 봅니다.

자세한 원리는 잘 모르지만 현상만 가지고 보자면 트랜지스터의 Collector와 Emitter 사이에 보통의 전위방향과 반대의 역전압을 걸어주는 회로로 구성되었습니다.

여기서 사용되는 전압원이 12V인데요,  약 10V(트랜지스터마다 다를듯합니다)의 역전압이 걸리는 순간 장벽이 깨지면서 전류가 흘러버리는 현상을 이용한것 같습니다.
Base부분은 무접속입니다. 베이스 전류를 통한 증폭작용은 안합니다.

참고한 사이트(참고자료1) 자료에서는 2N2222 을 사용했는데요,
제경우 가장? 유명한 범용 트랜지스터 C1815로 테스트한 결과 정상 작동합니다.

부품선택:
저항값 1K옴, 100옴은 변동폭이 별로없습니다.
(100옴이 없어서 220옴 2개를 병렬연결했고, 1K옴은 500옴짜리 2개를 직렬연결했습니다.)
정확한 값으로 작동을 테스트 후 변화 시켜보시기 바랍니다. 제경우 값이 바뀔때 발진이 멈추곤 했습니다.
콘덴서는 용량 변화가 가능하며, 발진 주파수가 변화됩니다.  (아래의 동영상은 220uF 전해콘덴서를 사용)

LED를 제외하고 그냥 발진 파형 소스원으로도 테스트 해봤는데요, 수십KHz까지 잘 작동하더군요

[동영상1]

[참고사항]
첨부된 동영상에서 전류량이 수백mA로 표시되는데요, 값이 너무 커서 이상하다고 생각하여 확인해보니 테스터기가 고장이 나버렸더군요 본 회로를 테스트 하실때는 전류계 사용시 주의하시기 바랍니다.
제경우 회로를 재구성하다가 순간 전류량이 초과하여 테스터기가 고장나 버린것같네요
아날로그 전류계 사용을 권장합니다. [

관련글링크: 아날로그 테스터기 활용하기

]


주의사항:
사실 범용 트랜지스터로 이렇게 사용하는게 정상적인 작동은 아니므로 트랜지스터 파손가능성이 있을지도 모릅니다.
직접 테스트 해보실경우 회로 부분을 투명플라스틱으로 덮어두고 작동하시길 권장드리며
LED, 콘덴서, TR  모두다 터지면 위험할 수 있으니 안경이나 고글을 꼭 착용하시기바랍니다.



참고자료:
1. http://www.cappels.org/dproj/simplest_LED_flasher/Simplest_LED_Flasher_Circuit.html
2. 참고서적: 전자회로  도서출판 삼보  이현창 회 5인 공저 
 ( 보통 전공서적들이 수식을 너무 전면에 내세우는 경향이 있어서 학습욕구를 저하시키곤 했는데
 이 책은 현상을 적절히 설명한 후 수식으로 정돈을 해주는게 맘에 들어 몇 일전 구매해 버렸답니다.
도서관에서 발견했는데요, 인기가 많은 책은 아닌가 봅니다. 왜일까요??? )
3. DSO-2090 USB 오실로스코프 

로보밥..

 아래의 사진은 아마도 1990년 전후 즈음하여 구입한 걸로 기억되는 아날로그 멀티테스터기(사진A)입니다.
벌써 구입한지 20여년 된 물건들이 주변에 하나 둘씩 쌓여가는 걸 보니 왠지 나이꽤나 든 느낌이 듭니다.

이녀석은 측정범위 바뀔때마다 0점 조절을 해야하고, 측정시에도 측정 값이 도대체 몇이라는건지???  애매매하여 지금은 사용하지 않고 있는데요,

(사진A)

그대신 한  3년전 쯤 1만원도 안되는 중국제 디지탈 멀티테스터(사진B)를 2개사서 사용해왔습니다.
 그중 한개는 회로 테스트시 실시간 전류량 측정을 위해 약간의 개조(개조라 해봤자 전선 두가닥 뽑은것이 전부)를 하여 잘 사용하고 있었습니다.


(사진B)

문제는 몇일 전 새로운 회로 테스트중 의심스러운 전류값이 나와서 계산해보니 회로 문제가 아니라 테스터기 고장인것으로 판명되었고,

 음... 건전지 불량이군 한 3년동안 잘 썼군... ^^,
이제 새건전지를 줄테니 앞으로도 잘 부탁한다!

그러나, 건전지 교체 후에도 계속되는 오작동 ㅡㅡ

결국, 고장으로 판단되어 , 나머지 다른넘을 전류계로 사용하기에 이르렀습니다. 
그런데,,,  곧바로 그녀석도 맛이 가버렸습니다. T T

헉;; 분명 허용범위 이내 였는데
아마도 순간 피크값이 너무 컸었나봅니다.

결국 테스터 2개의 전류측정 기능이 고장나버려 전류측정 기기가 사라져 버리는 사태에 돌입합니다.
(불행 중 다행인것은 전압,저항 측정기능은 정상이랍니다.;; )

하여,  묵혀뒀던 아날로그 테스터기를 꺼내놓았습니다.
너라도 잘부탁한다~
우선 잘 작동하나 건전지 부터 점검해봤습니다.

허헛,, 역시나 내장전지들의 부식작용이 있더군요, 바로 빼버리고 새건전지를 넣으려는 찰라

아날로그 전류계의 작동 원리 생각이 나더군요. 

그것은 바로 건전지 없어도 작동!! 한다는 사실.

작동 원리는 간단합니다.  내장 코일에 전류를 흘려주면 그 양에 비례하여 자기장이 생기고 내장 자석과의 반발력으로 바늘이 돌아가는게 기본 메카니즘입니다. 전류가 크면 많이돌아가고, 작으면 적게돌아가게 됩니다.  문제는 그 양의 차이가 상황에 따라 매우 큰 차이가 있으므로 값의 범위를 구분(Range)하고 너무 큰 전류 값은 별도의 저항을 통해 n분의 1로 축소하여 받는것으로 항상 일정한 범위내의 전류량이 코일로 유입되게 하는것입니다. 
(때문에 레인지 설정을 잘못하고 사용하면,  테스터기가 고장날 수 있습니다. 코일이 타버리겠죠 )

근데 중요한점. 이 작동은 테스터기의 내부 전원하고는 상관없습니다.
그럼 건전지는 왜 필요한걸까요?

저항측정, 트랜지스터 hfe(증폭률)측정,  도통테스트(단락이 되면 삐~ 소리나는거)  때문입니다. 

결론적으로 전류와 전압만 측정한다면  아날로그 테스터기는 건전지 없이 사용 가능합니다.
(사진A2)와 같이 건전지 모두 제거하고 사용하시면 됩니다.

옛애정이 남아 못버리고 창고에 숨겨 두셨다면??  다행입니다. 이제는 아날로그형 멀티테스터만의 비기를 사용할 때가 온것입니다.  24시간 풀가동 해도 이용료(전기료) 0원 기기,  괜찮지 않나요?


[사진A2]



본 내용과 관련하여 추후에 더 쓰고 싶은 내용

[관련글링크: 트랜지스터 한개로 작동하는 LED 점등기]
 : 제 디지탈 테스터기를 불능으로 만들어버린 신기하고도 무셔분;; 회로로 기억됩니다.  보통 LED 깜빡이를 만들려면 TR(트랜지스터)가 최소 2개 필요합니다. 서로 주거니 받거니 하면서 역활분담하는것이죠.  근데 한개로도 작동하는 깜빠기가 있더군요. 신기한 녀석이라 한 글 적어볼 생각입니다.

[미작성: 멀티테스터기 작동 메카니즘에 대해서]
 : 예전에 테스터기 작동원리가 궁굼하여 뒷뚜껑을 열어봐도 도데체 모르겠더니 관련책을  보니 조금 이해가 가더군요. 초보자님들을위해 그리고 구시대의?(아직은 아니죠?) 유물로 사라져 버릴듯한 아날로그 테스터기에 대해서 이야기 해볼까 합니다. 대단히 중요한 전기 기초 이론들이 들어있더군요...

  첨언. 도서관에 가서 옛날에 봤던 그 책을 찾아봤는데, 찾을 수 없었습니다;;
 하지만, 다른 좋은책이 있더군요 [전자계측 -피어슨 에듀케이션 코리아] 번역서를 찾았습니다. 좀더 깊고 다양한 범위를 다뤄서 전자기술 기본교양? 쌓는데 좋은책 같습니다. 참고하세요.




로보밥..

+ Recent posts