아두이노로 제어하기 좋은 로봇을 찾아오다 얼마전 드디어 쓸만한 녀석을 발견했습니다.

바로 무선제어 6족보행 로봇이란 제품입니다.





6족 보행로봇으로 전진,후진,좌회전,우회전이 가능하며 제공되는 적외선 리모컨을 통해 무선 조정이 가능합니다.
여러대의 로봇을 동시에 조정할 수 있도록 점퍼세팅으로 총 6대의 로봇을 동시에 조정할 수 있게 제작되었습니다.
조립도 간단하고 접착제같은건 사용하지 않아 신속하고 깔끔하게 제작이 가능합니다.

왜 좋은가?

1. 저렴한 가격
2. 손쉬운 제작 ( 8세이상 조립가능, 납땜불필요)
3. 손쉬운 아두이노 연동 가능( 전선 결합 불필요, 적외선 통신으로 제어)


조립시 필요한 것:
1.5V 알카리인 건전지 4개( 조정기용 2개, 로봇본체용 2개,  1.2V 충전지로도 잘 작동됩니다.)
스크류 드라이버

아두이노로 제어할 경우 필요한 재료:
 아두이노, IRED(적외선 LED) 1개,  저항 1개
(5미터 이상의 장거리 제어를 원하면 트랜지스터 1개, 저항 1개가 추가로 필요합니다.  관련글 링크 참고)


동영상1. 로봇 기본동작 보기

리모컨 제어로 전진, 후진, 좌회전, 우회전이 가능합니다.


아두이노로 제어하기

1. 하드웨어 준비
적외선 리모컨 신호를 아두이노 디지털 출력을 통해 출력하면됩니다.  이를 위해서 IRED(적외선LED) 1개와 저항 1개가 전부입니다.   원거리에서 제어하려면 트랜지스터를 사용해야 합니다.  연결방법은 일반 LED와 동일하게 저항1개와 함께 직렬 연결해주시면 됩니다.  본 예제에서는 PWM출력을 지원하는 아두이노 디지털 3번핀을 사용합니다.

리모콘 신호 전송을 위해 아두이노에 IRED 연결


IRED연결은 일반 LED 연결과 유사합니다.



2. 라이브러리 준비
적외선 리모컨의 역활을 아두이노가 대신하려면 여러분이 직접 38KHz의 캐리어 주파수에 수신기의 코드부호를 실어서 출력해주면 됩니다.  하지만 많은분들에게 쉽지 않은 도전과제이므로 천재적이면서 친절하기까지 하신 분들이 미리 만들어둔 라이브러리를 활용하여 비교적 손쉽게 아두이노로 리모컨 신호를 발신할 수 있습니다. 

아래의 링크에 가셔서 해당 라이브러리를 아두이노 스케치 library 폴더안에 복사하여 라이브러리 설치를 완료합니다.


위에서 준비해놓은 라이브러리는  RC5, SONY, NEC 코드 등의 송신 및 수신을 위한 기능이 제공되며 여기서는 NEC코드 발신 함수만 사용하면 됩니다. 리모컨 신호를 이용해 가전기기를 제어하는 것에 대해 일전에 소개해 드린적이 있는데요  이번에도 마찬가지로 코드부호를 스캔하여 해독한 결과 이 로봇도 NEC코드와 유사한 전송방식을 사용하는것을 알게되었습니다.
차이점은 데이타 전송폭이 짧다는 점과 반복표시용 코드를 사용하지 않는다는 것입니다. 

하지만 로봇제어를 위해 복잡한 내용은 모르셔도 상관 없습니다.  단지, 아래와 같은 함수 하나만 사용하기 때문입니다.


  irsend.sendNEC( codedata , nbits );   // codedata에 수신기용 코드값과   nbits에 코드값의 비트 수를 적어주면 됩니다.

위와 같은 함수로 해당코드값을 전송하면,  아두이노의경우 디지탈 3번핀에 해당되는 코드신호가 출력되고 이곳에 연결된 IRED를 통해 빛신호로 변환되어 출력되고  로봇에 내장된 적외선 수신기에서 해당 코드를 수신한뒤 대응되는 모터의 작동이 이뤄지게 되는 것입니다.


아래의 소스는 1초에 한번씩 전진, 후진, 좌회전, 우회전 신호를 발신하는 예제입니다.


#include <IRremote.h>

IRsend irsend;  

void setup()
{
// 특별한 초기화 설정이 불필요합니다.
}

void loop() {
   irsend.sendNEC( 0xc5000000, 8); //전진
   delay(1000);
   irsend.sendNEC( 0x45000000, 8); //후진
   delay(1000);
   irsend.sendNEC( 0x25000000, 8); //좌회전
   delay(1000);
   irsend.sendNEC( 0x85000000, 8); //우회전
   delay(1000);
  
}


위의 소스는 1초에 한번씩만 코드를 발송하므로 지속적으로 작동상태가 유지되지 않습니다. 따라서 만약 전진을 지속적으로 하려면 1초에 수회 정도 전진에 해당되는 코드를 반복하여 전송해야합니다. 


동영상2. 위 소스로 로봇 제어되는 장면

보통 이동형 로봇을 제작시 아두이노같은 마이크로콘트롤러 보드에 모터 구동 회로를 장착하고 모터 2개를 제어할 경우 방향제어를 위해 최소 4개의 전선을 연결하여 제어하게 됩니다. 이에 반해 본 로봇킷의 경우 모터 회로 구현이 이미 되어있는데다 전선의 연결이 불필요하고 빛으로 연결되어 있으므로 비용도 절감되고 제어도 간단해 질 수 있으므로 기초 이동형 로봇 제어 학습시 효과적으로 응용할 수 있는 방법으로 판단됩니다.  (물론 전용 모터드라이버 연결법이 더 다양한 제어가 가능합니다. 가령 속도조절이 가능함)

거리센서 등을 통해 주변 물체를 감지하고 회피하는 로봇의 제작이나  전파(Zigbee, Bluetooth, Wifi 등 활용)를 통한 무선통신으로 신호를 수신 받고 이를 광통신으로 변환하여 원격제어되는 로봇의 구현도 가능합니다.

게다가 수신모듈+모터드라이버 역활을 하는 제어기만 활용할 수도  있습니다.


사진. 리모컨 수신기 및 모터구동 드라이버 보드: 
좌측에 전원연결(2핀)부, 우측에 모터2개 연결부(4핀), 상부에 ON/OFF스위치,  하부에 리모컨 채널 조정용 헤더핀(6핀)이 있으며 가운데에 IR수광모듈이 보입니다.


기타.  작동중 오동작이 계속되면 건전지를 교체해 보시기 바랍니다.  모터 구동시 전력소모가 큰 편이므로 배터리 소모가 빨리 됩니다.


관련 제품 링크

 무선제어 6족보행 로봇

 아두이노 UNO

 적외선 무선통신킷



내용추가
2011.July.26 
아래의 관련글 링크에 리모콘 신호 송수신 회로와  PC에서 키보드 입력으로 로봇을 제어하는 소스 예제를 포함한 글을 새로 등록하였습니다. 참고하세요


관련글 링크

 .IR무선 리모콘 송수신 회로로 로봇 제어하기



오늘은 이상한 녀석을 소개시켜 드리고자 합니다.



겉모습을 보자면 우편함을 뒤집어 놓은 것입니다만, 몇 가지 특이한 기술이 적용된 음악재생기 입니다.
사운드 카드를 통해 디지탈 신호를 전달하고 이를 해석하여 본래의 디지탈 신호를 복원하는 기술을 통해 로봇을 제어하는 것인데요, 쉽게 말하면 사운드 카드용 모뎀을 만들어서 로봇제어에 사용하는 예를 보여드리겠습니다.

모뎀이 뭐냐고요? 

글쎄요... 다시 설명하자면, 디지탈 신호를 전화선 같은 교류 음성 라인용으로 신호로 변환시킨 후, 수신측에서는 다시 이를 역변환하여 본래의 신호를 복원해주는 기기입니다. Modulator(변조) + DeModulator(복조)의 합성어라고 알고있습니다. 90년대 PC통신 문화를 지탱해왔다가 지금은 사라져버린 역사적인 기기랍니다. 자세한건 고글,네버,담,야호 등에게 물어보시기 바랍니다.

신호 전달 단계

디지탈신호 -> [사운드카드] -> 신호 포함된 사운드파형 -> [신호변환기] -> 디지탈신호 -> [임베디드 기기]

사운드카드와 신호변환기가 필요하며, 소프트웨어는 사운드 파형을 제어하여 디지탈 신호를 실어주는 프로그램과,
이 사운드 파형에서 디지탈 신호를 해석하는 프로그램이 필요합니다.


자 이제부터 사운드 통신을 우체통 뮤직 로봇 (MP3Play Robot)에 적용한 예를 보여드리겠습니다.




동영상. 뮤직로봇 작동만 하는 동영상

아래는 관련 기술을 설명하는 동영상입니다.  영상품질이 매우 안좋습니다. 양해바랍니다.

음악들려주는 우편함 로봇 동영상 시연 내용 정리

. 외형을 둘러보면 전원선과 사운드 통신선이 있습니다.
. 전원을 켜면 자동으로 음악이 재생되는 상태입니다.
. 현재는, 주변상황에 반응하지 않는 상태입니다.

. PC측 플래시 어플리케이션(리모컨제어기)을 실행합니다.
. 사운드 라인을 PC측 사운드 출력에 연결합니다.
. 플래시 어플내 버튼을 누르면 리모콘 제어가 가능합니다.

. 다음은 프로그래밍 환경(플래시 어플리케이션)을 뛰웁니다.
. 코드를 불러와서 컴파일하고 사운드카드를 통해 로봇으로 전송합니다.
. 이제부터는 로봇 내부의 센서와 버튼으로 작동가능합니다.

. 로봇의 양눈에 설치된 거리센서에 접근하면 프로그램된 기능이 수행됩니다.
. 현재는 재생/정지와 다음곡 듣기 기능이 프로그램되어 있습니다.
. 재생/정지가됩니다.
. Next 다음곡 재생하기가 됩니다.
. 버튼으로 트랙1번 재생도 가능합니다.

. 프로그램를 변경하여 전송하면 그에따라  다른 기능의 수행이 가능합니다.
. 제손이 너무 두꺼비 손 같네요 ㅡㅡ;;  양해바랍니다.



동영상. 세부 기술 소개 (사운드 통신 및 프로그래밍 기능)


응용 범위

플래시 및 기타 응용 프로그램에서의 임베디드기기 제어
MP3Player, Radio, PMP, Mobile Phone 등의 사운드출력가능한 모든기기에 적용 가능.


특장점

보통 로봇을 제어하거나 프로그래밍을 하려면,  시리얼 포트나 USB포트를 이용하게 됩니다. 이를 위해 별도의 하드웨어를 구입하거나 장착 및 설정하는 과정이 필요합니다.  사운드 통신선을 이용하면, 보셨듯이 사운드 출력 라인만 있으면 됩니다.
MP3Player나, 특히 휴대폰과 스마트폰에 응용이 가능합니다.  현재 안드로이드 폰에서 신호변환 출력이 정상 작동하는 것을 확인했습니다.  아이폰도 물론 가능합니다만,,, 제가 아이폰 개발환경이 없습니다 ;;;


제품화 아이디어 - Sound to Serial 변환기

Sound to Serial변환기란 시중에서 판매되고 있는 USB to Serial변환기와 유사한 용도로 사용할 수 있습니다. 차이점은 USB포트가 필요없으므로 사운드 출력이 가능한 모든 디지탈 기기에서 사용할 수 있다는 장점이 있습니다. 특히 모바일폰에 곧바로 적용 가능한 기술입니다. 가령 로봇제어에 3G네트웍이 필요할 경우, 로봇의 시리얼 포트와 휴대폰의 사운드출력 단자에 Sound to Serial 변환기를 꽂아주면 됩니다.  물론 적절한 프로그램이 구현되어야 합니다.  실용신안 등록까지 고려해본 기술입니다만, 상업적 가치는 글쎄요?? 입니다.  추가적으로 안드로이드폰으로 응용가능한 매우 재밌는 응용예가 있는데요, 어찌저찌해서 최신형 안드로이드폰이 생긴다면 그때 따로 보여드리도록 하겠습니다.


본 기술의 문제점

호환성: 대부분의 PC 사운드 카드에서 정상 작동하는데 간혹 사운드 음량이 너무 작거나, 기타 상황에 따라 인식이 안되는 경우가 있을수 있습니다. 하지만 이부분은 신호변환기를 보완하면 해결 될 수 있는 문제 같습니다.

속도: 보통 PC급 사운드 카드에서 지원하는 Sampling Rate이 44100Hz 이하이며,  이는 전송 데이타속도의 제한과 연계됩니다. 적은 값은 아니지만, 최근의 고속통신 디바이스들에 비하면 저속 통신만 지원 가능합니다.

단방향성: 현재 사운드 카드 출력 통신만(단방향) 개발했습니다.  하지만,  마이크 입력을 통해 반대 방향 입력도 가능합니다.




신호변환기

디지탈 신호를 사운드 파형으로 변환하고 사운드 신호에서 디지탈 신호로 변환해주는 회로를 간소화 하기 위한 기법을 사용하였으므로 신호변환을 위한 전자회로가 매우 단순합니다.  OPAmp와 저항 콘덴서 몇개면 가능합니다.  이보더 더 단순화 하여 트랜지스터 몇개로 구성하는 방법도 있습니다.  이정도 회로만으로도 MCU측에서 직접 해석 가능한 디지털 신호로 변환을 해줄 수 있습니다.  또는 신호변환기에 저사양 MCU를 장착하여 시리얼 통신 규약에 맞도록 변환시켜 줄 수 도 있는데, 그렇게 되면 바로 Sound to Serial 변환기가 됩니다.


변환기의 종류

Sound to TTL, Sound to Serial, USB Sound Card to TTL, USB Sound Card to Serial,,,
위와 같이 여러가지 용도별로 인터페이스 보드를 구성할 수 있습니다. 아래의 경우는 USB 사운드카드를 내장한 형태의 신혼변환기를 제작한 예입니다. 즉, PC에 내장된 사운드카드 대신 전용의 USB 사운드카드를 이용하는 예입니다.



사진. USB Sound Card to TTL 제작 예




로봇 개발 및 교육용 시뮬레이터 Marilou와 URBI(로봇통합제어플랫폼)의 교육자료( 파워포인트 ppt문서)를 아래에 첨부하였습니다.  필요하신 분은 요청없이 바로 다운로드하셔서 참고하실 수 있습니다.  국내의 일부 연구소와 기업들을 대상으로 제품 교육시 사용했던 자료이며, 기본 개념을 파악하시거나 소프트웨어 사용 테스트를 하실 경우 도움이 되실거라 생각됩니다.

Marilou_URBI-기본교육v2010a.pdf



아래는 교육문서 일부 페이지 내용입니다.













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)로 해주시기 바랍니다.

+ Recent posts