Instituto Politcnico do Cvado e do Ave Escola Superior de Tecnologia Engenharia Eletrotcnica e de Computadores
Relatrio de Projeto
Autor: Paulo Milheiro a6492
Trabalho realizado sob orientao de: Professor Pedro Rodrigues Professor Doutor Joo Vilaa
iii
Agradecimentos As minhas primeiras palavras de agradecimento tm que forosamente ser dirigidas aos meus. Aos meus pais e irmos sem os quais no seria possvel chegar aqui hoje, aos meus amigos que compreenderam a minha ausncia ao longo da licenciatura demonstrando sempre o verdadeiro sentido da palavra amigo, Catarina que me deu a fora necessria para a reta final desta etapa e aos meus colegas de curso que me acompanharam ao longo destes anos. Ao Professor Doutor Joo Vilaa pela oportunidade apresentada na proposta de execuo deste projeto. Ao Professor Pedro Rodrigues pelo interesse, dedicao e disponibilidade, que mesmo do outro lado do oceano atlntico, sempre demonstrou. A todos os docentes que contriburam na minha formao e ao IPCA pela sua poltica de criao de um ambiente de aprendizagem saudvel e de proximidade com os discentes. A todos o meu muito OBRIGADO por fazerem parte do culminar desta etapa da minha vida.
v
Resumo O presente relatrio descreve a execuo de um projeto de investigao, realizado no mbito da Licenciatura de Engenharia Eletrotcnica e de Computadores na Escola Superior de Tecnologia do Instituto Superior do Cvado e do Ave. Este projeto tem por principal objetivo o controlo de um hexpode com vinte e cinco ngulos de liberdade atravs de uma interface, e de uma cmara KINECT com recurso a comandos de voz e gestuais. O hexpode dispe de duas placas denominadas Bot Boad II e SSC-32. Atravs do envio de uma trama de comandos por comunicao srie RS-232 para a placa Bot Board II, possvel controlar os movimentos deste. A placa Bot Board II com recurso ao microcontrolador incorporado interpreta os comandos enviados, calculando a cinemtica necessria aos movimentos, enviando os resultados para a placa SSC-32 atravs de comunicao srie TTL RS-232, que executa o movimento dos servomotores. O controlo atravs de comandos de voz e gestuais realizado com recurso cmara/sensor KINECT. A sua utilizao na deteo de comandos de voz atravs do array de microfones presentes no sensor permite uma excelente deteo dos comandos de voz. A deteo de comandos gestuais realizada com recurso ao sensor de profundidade, permite uma inferncia e deteo de pontos do esqueleto do utilizador de uma notvel rapidez. Este projeto culminou no desenvolvido de um interface de controlo com possibilidade de utilizao em diferentes sistemas fsicos atravs de protocolo UDP, o qual ser abordado ao longo deste relatrio.
Palavras-chave (Tema): Controlo Hexpode, Controlo por comandos voz, Controlo gestual. Palavras-chave (Tecnologias): KINECT, C#, BASIC Micro Studio, XML, UDP, RS-232.
vii ndice AGRADECIMENTOS .............................................................................................................................III RESUMO ............................................................................................................................................. V NDICE .............................................................................................................................................. VII NDICE DE FIGURAS............................................................................................................................ IX 1 INTRODUO .............................................................................................................................. 1 1.1 APRESENTAO DO PROJETO........................................................................................................... 2 1.2 MOTIVAO ................................................................................................................................ 2 1.3 PLANEAMENTO DE PROJETO ............................................................................................................ 3 1.4 TECNOLOGIAS UTILIZADAS .............................................................................................................. 3 1.4.1 KINECT ................................................................................................................................. 3 1.4.2 BASIC Atom Pro 28 .............................................................................................................. 4 1.4.3 Bot Board II ......................................................................................................................... 5 1.4.4 SSC-32 Servo Controller ....................................................................................................... 5 1.4.5 Hexpode A-Pod .................................................................................................................. 6 1.5 CONTRIBUTOS DESTE TRABALHO ...................................................................................................... 7 1.6 OBJETIVOS .................................................................................................................................. 8 1.7 ORGANIZAO DO RELATRIO ......................................................................................................... 8 2 CONTEXTO .................................................................................................................................. 9 2.1 INTERAO POR VOZ ................................................................................................................... 10 2.2 INTERAO GESTUAL ................................................................................................................... 10 2.3 PROTOCOLOS DE COMUNICAO ................................................................................................... 11 3 DESCRIO TCNICA ................................................................................................................. 13 3.1 MONTAGEM E CALIBRAO DO HEXPODE ...................................................................................... 13 3.1.1 Configurao hardware SSC-32 Servo Controller .............................................................. 14 3.1.2 Configurao hardware Bot Board II e microprocessador BASIC Atom Pro 28 ................. 16 3.2 PROTOCOLO DE COMUNICAO ..................................................................................................... 18 3.3 INTERFACE DE CONTROLO ............................................................................................................. 20 3.3.1 Controlo por gestos ........................................................................................................... 22 3.3.2 Controlo por voz ................................................................................................................ 25 3.4 INTERFACE COM O UTILIZADOR ...................................................................................................... 28 3.5 ALGORITMO IMPLEMENTADO EM C# .............................................................................................. 29 3.6 CONFIGURAO MULTIPLATAFORMA XML PARA APLICAO A DIFERENTES EQUIPAMENTOS FSICOS ........... 30 Controlo Hexpode por KINECT
viii
4 RESULTADOS ............................................................................................................................. 33 4.1 INTERFACE BOTES...................................................................................................................... 33 4.2 INTERFACE GESTUAL E COMANDOS DE VOZ ....................................................................................... 34 4.3 IMAGEM E SENSOR PROFUNDIDADE ................................................................................................ 36 4.4 CONFIGURAO TRAMAS E COMANDOS ........................................................................................... 37 4.5 CONFIGURAO COMUNICAO RS-232 E UDP .............................................................................. 37 4.6 ALIMENTAO ........................................................................................................................... 38 4.7 TESTES REALIZADOS ..................................................................................................................... 39 4.7.1 Corrente mxima............................................................................................................... 39 4.7.2 Tempos execuo de comandos de voz e gestos............................................................... 39 4.7.3 Testes com diferentes utilizadores .................................................................................... 39 5 CONCLUSES ............................................................................................................................ 43 5.1 OBJETIVOS REALIZADOS ................................................................................................................ 44 5.2 TRABALHO FUTURO ..................................................................................................................... 45 5.3 APRECIAO FINAL ...................................................................................................................... 45
ix ndice de Figuras Figura 1 Ilustrao do diagrama de blocos do projeto ______________________________________ 2 Figura 2 Cmara KINECT para Windows [1] _______________________________________________ 4 Figura 3 - BASIC Atom Pro 28 [3] _________________________________________________________ 4 Figura 4 Esquemtico BASIC Atom Pro 28 [2] _____________________________________________ 4 Figura 5 Bot Board II [4] ______________________________________________________________ 5 Figura 6 Placa SSC-32 Servo Controller [5] ________________________________________________ 6 Figura 7 Hexpode Lynxmotion A-Pod [6] ________________________________________________ 7 Figura 8 Taxas de transmisso RS-232 e distncias mximas aconselhadas ____________________ 11 Figura 9 - Numerao servomotores hexpode [8] __________________________________________ 14 Figura 10 Instrues montagem fabricante [8] ___________________________________________ 14 Figura 11 Configurao hardware SSC-32 Servo Controller [8] _______________________________ 15 Figura 12 - Configurao de comunicao SSC-32 atravs ficha DB9 [9] _________________________ 15 Figura 13 - Interface software Lynx SSC-32 Terminal ________________________________________ 16 Figura 14 - Configurao controlo por comando Playstation 2 [8] _____________________________ 17 Figura 15 Formato trama comando ____________________________________________________ 18 Figura 16 Excerto cdigo C# envio trama de comando _____________________________________ 20 Figura 17 Diagrama de interface KINECT Application e Windows SDK [11] _____________________ 21 Figura 18 Diagrama de KINECT SDK API [1] ______________________________________________ 21 Figura 19 - Deteo pontos esqueleto com base na profundidade [1] ___________________________ 22 Figura 20 Referencial utilizador KINECT _________________________________________________ 22 Figura 21 - Ilustrao algoritmo deteo esqueleto KINECT __________________________________ 23 Figura 22 Nomenclatura dos pontos do esqueleto [1] ______________________________________ 24 Figura 23 Movimentos joystick virtual mo direita ________________________________________ 25 Figura 24 Excerto cdigo C# construo dicionrio semntico _______________________________ 26 Figura 25 Processo de funcionamento reconhecimento de voz [1] ____________________________ 27 Figura 26 Esquema funcionamento ____________________________________________________ 29 Figura 27 Algoritmo implementao C# _________________________________________________ 30 Controlo Hexpode por KINECT
x
Figura 28 Excerto ficheiro XML definio comandos a enviar _______________________________ 31 Figura 29 Ficheiro XML configuraes comunicao ______________________________________ 32 Figura 30 Menu interface desenvolvida _________________________________________________ 33 Figura 31 Janela interface botes _____________________________________________________ 34 Figura 32 Janela Interface Controlo Gestos + Voz _________________________________________ 35 Figura 33 - Janela Dados, imagem RGB e imagem profundidade ______________________________ 36 Figura 34 Janela definio e configurao tramas e comandos ______________________________ 37 Figura 35 Janela configurao comunicao Srie RS-232 e UDP ____________________________ 38 Figura 36 Clula tipo Sub-C 1.2V 3300mAh [22] __________________________________________ 38 Figura 37 Carregador Ni-MH ImaxRC A3 [25] ____________________________________________ 39
xi Notao e Glossrio
SDK Solution Developer Kit PWM Pulse Wide Modulation DOF Degrees of Freedom XML Extensible Markup Language RGB Color Space Red/Green/Blue UDP User Datagram Protocol ASCII American Standard Code for Information Interchange BASIC Beginner's All-purpose Symbolic Instruction Code USB Universal Serial Bus RAM Random Access Memory I/O Input / Output LED Light Emitting Diode API Application Programming Interface
Controlo Hexpode por KINECT Paulo Milheiro 1 1 Introduo O conceito de robtica nasce quando mitos faziam referncia a mecanismos que ganhavam vida. Contudo, o nome rob foi criado por um escritor checo, de seu nome Karel apek que em 1921, a partir da palavra robota, aplicou esse termo numa pea de teatro por ele escrita, para descrever trabalho de forma compulsria. Recentemente, com os avanos tecnolgicos e tcnicas de controlo, os robs so utilizados para no s realizar tarefas automatizadas ou perigosas mas tambm para outros campos tais como segurana, navegao, entretenimento e explorao ambiental. Na vertente de robs mveis, o tipo de dispositivos que utilizam para a sua movimentao dividida em trs grandes grupos: robs com pernas bpedes, quadrapodes ou hexpodes; robs com rodas; e robs com lagartas. A estabilidade de um rob com rodas ou lagartas superior aos robs bpedes, quadrapodes ou hexpodes, contudo, estes permitem o acesso a terrenos mais instveis acedendo assim a zonas provavelmente inalcanveis pelos robs com rodas ou lagartas. Sendo a comunicao por voz, a forma de comunicao natural para a linguagem dos humanos, a introduo de controlo por voz um objetivo natural para a rea da robtica. Embora a aplicao deste tipo de controlo seja complexa, uma vez que depende do contexto, da pessoa, do meio ambiente envolvente e da qualidade dos componentes udio, tm sido feitos progressos significativos nesta rea pela robtica. Alm do controlo por voz, a utilizao de tcnicas de viso artificial como uma abordagem real e vivel na resoluo de problemas industriais e cientficos so relativamente recentes. A evoluo do hardware permitiu que as aplicaes dispusessem dos recursos necessrios para que a anlise de imagem no requeresse extensivo conhecimento de hardware de viso artificial e software de baixo nvel. Vrias bibliotecas de desenvolvimento e software, por exemplo OpenCV, tm simplificado a utilizao destas tcnicas. A juno das reas de robtica, controlo por voz e viso computacional, abrem um leque bastante vasto de aplicaes e potencialidades na abordagem resoluo de problemas. Controlo Hexpode por KINECT Paulo Milheiro 2 1.1 Apresentao do projeto O projeto tem como objetivo o controlo de um hexpode atravs de comandos de voz e gestuais. O hexpode constitudo por 6 pernas com 3 DOF (graus de liberdade) cada, o que permite a deslocao em qualquer tipo de terreno. Este ser controlado atravs de uma cmara e microfones do KINECT da Microsoft [Figura 1]. So numerosas as potenciais aplicaes deste projeto, podendo ser implementado em situaes de catstrofe ou de difcil acesso, para reconstruo de espaos 3D e localizao de pessoas no meio de escombros. Figura 1 Ilustrao do diagrama de blocos do projeto 1.2 Motivao A robtica e a viso computacional so reas emergentes e com uma aplicabilidade bastante alargada, despertando desde logo um interesse acrescido na aquisio de novos conhecimentos nestas reas. A anlise resoluo deste projeto requer a incluso de conhecimentos interdisciplinares, utilizao e integrao de mltiplas tecnologias para controlo de um hexpode por viso e voz de forma eficaz tornando-se desde logo um desafio bastante interessante e motivador. Controlo Hexpode por KINECT Paulo Milheiro 3 1.3 Planeamento de projeto As diversas etapas do projeto foram especificadas e quantificadas a nvel de carga horria da seguinte forma: 1. Anlise do estado da arte. (20h) 2. Montagem e calibrao do hexpode. (20h) 3. Anlise e desenvolvimento de protocolo de comunicao entre o hexpode e o dispositivo externo. (80h) 4. Desenvolvimento interface utilizador. (40h) a. Desenvolvimento interao por comandos de voz (60h) b. Desenvolvimento interao por comandos gestuais (100h) c. Desenvolvimento de ficheiro configuraes XML multiplataforma para comandos voz e gestuais. (30h) 5. Escrita do relatrio. (50h) 1.4 Tecnologias utilizadas Este subcaptulo descreve de forma introdutria as principais caractersticas tcnicas de todo o hardware necessrio ao controlo do hexpode. 1.4.1 KINECT A KINECT para Windows foi a principal tecnologia utilizada [Figura 2]. Esta dispe de uma cmara RGB, sensor de profundidade, inclinao monitorizada, microfone incorporado, software e processador prprio. Atravs do Solution Developer Kit da KINECT (SDK) possvel detetar at 20 pontos de articulao do nosso corpo, realizar reconhecimento fcil e a possibilidade de reconstruo de dados em modelos 3D, entre outros. Os sensores da KINECT utilizados foram: a cmara RGB, o sensor de profundidade e o microfone. A cmara RGB foi utilizada para aquisio de imagem, o sensor de profundidade para medir posicionamento do utilizador KINECT e reconhecimento de gestos, e o microfone para obteno dos dados de voz a serem processados. Controlo Hexpode por KINECT Paulo Milheiro 4 Figura 2 Cmara KINECT para Windows [1] 1.4.2 BASIC Atom Pro 28 O microcontrolador BASIC Atom Pro 28 foi desenvolvido para um leque alargado de aplicaes sendo a sua construo baseada no PICmicro 16F876 [Figura 3]. Este constitudo por uma memria interna de 384 Bytes de RAM e 8k de FLASH. Cada um destes microcontroladores contm um regulador interno de 5V, pinos de I/O para mltiplos propsitos [Figura 4] e um conversor de nvel RS232 para programao interna do circuito. Este microcontrolador utilizado no projeto para a receo, validao e processamento dos comandos recebidos, clculo da cinemtica necessria movimento do hexpode e envio da sequncia de movimentos a realizar para placa SSC-32.
Figura 4 Esquemtico BASIC Atom Pro 28 [2] Figura 3 - BASIC Atom Pro 28 [3] Controlo Hexpode por KINECT Paulo Milheiro 5 1.4.3 Bot Board II A Bot Board II uma placa preparada para o microcontrolador BASIC Atom 28 ou outro microcontrolador de 24 ou 28 pinos [Figura 5]. constituda por um altifalante, trs botes com os correspondentes LEDs, um controlador para comandos playstation 2, um boto de reset, I/O com tenso e terra. Com esta placa poder ser realizado o controlo de at vinte servomotores com tenso lgica separada da alimentao destes. Figura 5 Bot Board II [4] 1.4.4 SSC-32 Servo Controller A placa SSC-32 Servo Controller [Figura 6] permite o controlo de at 32 servomotores. As suas principais caractersticas passam pela alta resoluo de posicionamento do servomotor (at 1s de ciclo de malha de controlo servomotor), movimentos suaves, comunicao bidirecional com comandos de consulta, movimentos sincronizados ou em grupo e um sequenciador interno de movimento de 12 servomotores. O controlo de movimento pode ser de resposta imediata, controlo de velocidade, temporizao de movimento ou combinao das anteriores. Atravs do comando de movimento de grupo, -nos permitido a movimentao de qualquer combinao de servomotores para iniciar e terminar o movimento ao mesmo tempo e at mesmo definir diferentes distncias a percorrer para cada um dos servomotores. A informao relativa ao posicionamento de cada servomotor pode ser requerida placa SSC-32.
Controlo Hexpode por KINECT Paulo Milheiro 6 Figura 6 Placa SSC-32 Servo Controller [5] 1.4.5 Hexpode A-Pod O hexpode utilizado neste projeto [Figura 7], comercializado pela empresa Lynxmotion e denominado A-Pod, constitudo por vinte e cinco servomotores, distribudos por seis pernas, uma cauda e uma cabea. O ngulo do posicionamento e os trs de cada perna permitem ao hexpode deslocar-se em todas as direes. A estrutura do rob feita de PVC e suportes de alumnio nos servomotores. No que diz respeito ao clculo da cinemtica necessria, a qual determina as instrues para os servomotores originando o movimento do rob conforme comandos recebidos, realizado com recurso placa Bot Board II a qual se encontra equipada com um microprocessador BASIC Atom Pro 28. O controlo do movimento dos servomotores feito com recurso placa SSC-32 Servo Controller, executando os comandos processados e enviados pela placa Bot Board. Os comandos de controlo so rececionados pela placa Bot Board II atravs de RS-232 sendo validados quanto sua integridade. Aps o clculo da cinemtica inerente a movimento pretendido, enviado o comando para controlo dos servomotores para a placa SSC-32, atravs de comunicao TTL Srie RS-232, a qual se encarrega do controlo e movimentao dos servomotores. A sua arquitetura baseia-se em seis pernas com trs graus de liberdade em cada uma delas permitindo o movimento em qualquer direo. Este foi desenhado para utilizar dezoito servomotores HITEC HS-645MG para movimento das suas seis pernas. De Controlo Hexpode por KINECT Paulo Milheiro 7 destacar as caractersticas destes servomotores no que diz respeito velocidade (0.20sec/60 (sem carga)) e torque (9.6kg/cm). Figura 7 Hexpode Lynxmotion A-Pod [6] 1.5 Contributos deste trabalho O presente relatrio descreve o projeto de investigao realizado no mbito da Licenciatura em Engenharia Eletrotcnica e de Computadores. Este projeto prope a montagem, calibrao e controlo de um hexpode com recurso a um sistema de viso e voz, atravs duma camara KINECT. Para tal foi desenvolvimento um sistema de comunicao/controlo multiplataforma capaz de interagir com diversos dispositivos, para alm do hexpode utilizado neste projeto, atravs de comunicao por porta srie ou socket UDP, permitindo a interligao a projetos futuros. Com recurso ao interface do PC possvel executar todo o tipo de movimento no hexpode, sejam direcionais ou sequncias de movimentos que demonstram a sua capacidade de posicionamento com os seus 25 DOF. Atravs de comandos de voz possvel iniciar, parar e movimentar em todas as direes. Esta movimentao tambm possvel atravs de comandos gestuais. A utilizao em aes de divulgao futuras da Escola de Tecnologia do IPCA poder despertar interesse e cativar futuros alunos frequncia do curso de EEC. Controlo Hexpode por KINECT Paulo Milheiro 8 1.6 Objetivos Os objetivos propostos para este projeto so: Montagem e calibrao do hexpode; Anlise/Desenvolvimento de um protocolo que permite estabelecer comunicao entre o hexpode e um dispositivo exterior; Desenvolvimento de uma interface de reconhecimento gestual e de comandos de voz para controlo do hexpode; Desenvolvimento de um sistema multiplataforma com possibilidade de ser utilizado noutras noutros dispositivos; 1.7 Organizao do relatrio O presente relatrio encontra-se dividido em cinco captulos: Introduo: realizao do enquadramento do projeto, apresentao, motivao, planeamento, tecnologias, contributos, objetivos do projeto; Contexto: contextualizao da rea de interveno do projeto no que diz respeito ao controlo por voz, por gestos e protocolos de comunicao; Descrio Tcnica: no terceiro captulo realizado a descrio de todo o trabalho e desenvolvimento realizado inerente execuo deste projeto; Resultados: apresentao dos principais resultados obtidos; Concluses: concluses finais com referncia a trabalhos futuros a realizar bem como a apreciao pessoal final da execuo do projeto.
Controlo Hexpode por KINECT Paulo Milheiro 9 2 Contexto As aplicaes da robtica e viso computacional como abordagem resoluo de problemas tm vindo cada vez mais a ser utilizada como uma soluo vivel para acesso a zonas de reduzida acessibilidade. A potencialidade de um dispositivo controlado remotamente atravs de simples comandos de voz e gestuais juntamente com um rob hexpode capaz de se manter em equilbrio com somente a combinao de trs pernas so imensas. Embora a cmara KINECT tenha sido originalmente desenvolvida para a consola de jogos XBox, cedo se percebeu a aplicabilidade das suas potencialidades nas mais diversas reas e aplicaes. Um recente projeto de investigao levado a cabo pela Microsoft Research Asia em pareceria com The Institute of Computing Technology, Chinese Academy of Sciences, culminou no desenvolvimento de um sistema capaz de realizar a traduo de e para linguagem gestual. Este sistema capaz de realizar a traduo entre os diversos tipos de linguagem gestual de cada pas e at mesmo para outro tipo de idioma natural [12]. Atravs da cmara KINECT, detetado a linguagem gestual atravs da postura e da trajetria dos gestos sendo posteriormente processada e realizada a traduo para a linguagem falada e vice-versa. Os modos bsicos de funcionamento so o modo de traduo e de comunicao. O modo de traduo inclui a traduo de escrita ou palavras faladas para linguagem gestual. No modo de comunicao possvel a traduo de frases completas para linguagem gestual com recurso a um avatar para representar a pessoa com audio a realizar linguagem gestual [7]. As aplicabilidades deste sistema so inmeras permitindo a comunicao entre as pessoas com deficincia auditiva ou incapazes de comunicar por voz com todo o meio envolvente expandindo as potencialidades de comunicao e encurtando as limitaes das pessoas portadoras dessas deficincias com o meio envolvente [7]. A utilizao da KINECT em aplicaes de robtica tem sido maioritariamente direcionada para o desenvolvimento de robs autnomos utilizando a KINECT como Controlo Hexpode por KINECT Paulo Milheiro 10 sensor. Recentemente tem vindo a ser desenvolvidas aplicaes direcionadas para o controlo remoto de mquinas e at mesmo de robs cirrgicos [13]-[14]. 2.1 Interao por voz Os comandos de voz como forma controlo de equipamentos, sejam eles de entretenimento, industriais ou cientficos, tm vindo a estar cada vez mais ao alcance do utilizador. So diversas as aplicaes onde podemos encontrar estes com alguma frequncia como forma de interao, tais como controlo de rdio e temperatura num automvel [15], realizao de chamadas, pesquisa de contatos e interao com aplicaes de um smartphone [16] e at mesmo brinquedos. Contudo, o controlo por voz aplicado e direcionado para um sistema multiplataforma capaz de interagir com diversos dispositivos com a simples definio das tramas de comandos a enviar escassa. Este projeto visa o desenvolvimento de uma interface de controlo por voz, que seja possvel utilizar noutros projetos tornando assim possvel utilizar no s no hexpode utilizado neste projeto, mas tambm com qualquer tipo de rob e outras aplicaes distintas. 2.2 Interao gestual A utilizao da cmara KINECT para controlo de diversos tipos de robs por norma realizada com recurso ao sensor de distncia e profundidade bem como monitorizao da inclinao, permitindo desta forma tornar os robs autnomos e com uma perceo do seu meio envolvente [17]. Embora existam projetos desenvolvidos para controlo de robs por gestos com recurso KINECT, a utilizao para fins de acesso a espaos com acessibilidade reduzida ou interfaces capazes de interagir com diversos tipos de equipamentos bastante reduzida e por norma com desenvolvimento direcionado a uma ao especfica. Tambm tm vindo a ser analisadas tcnicas de controlo por viso para medicina que permitam atos de diagnstico ou at mesmo pequenas cirurgias distncia. Este uma rea em crescente desenvolvimento existindo at aplicaes para manuseamento de imagens de diagnstico [13]. Controlo Hexpode por KINECT Paulo Milheiro 11 2.3 Protocolos de comunicao Sendo um dos protocolos mais antigo e utilizado para a transmisso de dados, a comunicao entre portas srie baseados em RS-232 utiliza um conceito simples e com possibilidade de utilizao em distncias relativamente reduzidas tendo em vista uma taxa de transmisso elevada. A distncia mxima aconselhada est diretamente relacionada com as caractersticas do cabo utilizado (com ou sem malha de proteo; alta ou baixa capacitncia) e com a taxa de transmisso (quanto mais alta for a taxa de transmisso, menor distncia ter que ser a extenso do cabo [Figura 8]) [18].
Figura 8 Taxas de transmisso RS-232 e distncias mximas aconselhadas Diversos dispositivos dispem de uma porta srie incorporada, o que torna a utilizao deste protocolo de comunicao apetecvel em projetos. A comunicao atravs deste protocolo realizada atravs do envio e receo de bytes de informao sendo normalmente utilizada para a transmisso de dados ASCII. As caratersticas importantes da porta srie so a taxa de transmisso (baudrate), bits de dados (data bits), bits de paragem (stop bits) e paridade. Para a comunicao entre duas portas, estes parmetros devem corresponder. O protocolo UDP trata-se de um protocolo de transporte orientado ao fluxo de bytes, que pode ser encapsulado em IPV4 ou IPV6, para ser enviado para o seu destino. Embora o grau de fiabilidade da entrega seja elevado, uma das principais caractersticas deste protocolo o facto de no existir certeza quanto ao sucesso da receo do pacote com a mensagem no destino. A principal vantagem da utilizao deste protocolo prende-se com a rapidez sendo utilizado em larga escala na transmisso de fluxos de dados em tempo real, tais como stream de vdeo. Controlo Hexpode por KINECT Paulo Milheiro 13 3 Descrio tcnica Tal como descrito no captulo de introduo, a abordagem resoluo do problema passou pelos seguintes passos.
3.1 Montagem e calibrao do hexpode A calibrao de todos os servomotores para a posio neutra necessria para um estvel funcionamento em repouso do hexpode. O controlo de movimento do servomotor realizado com recurso a um sinal de pulsos repetidos, sendo o angulo de rotao do servomotor determinado pela durao do pulso que lhe aplicado. Atravs do envio de um pulso de 1500s, o angulo de rotao ser de 90 considerada a posio neutra. Desta forma, foi realizada a calibrao de todos os servomotores com recurso a um Arduno com um cdigo de calibrao, o qual envia sinais PWM espaados de 1500s, antes que estes fossem montados. Anlise Projeto Anlise de projetos similares Desenvolvimento de metodologias para execuo de projeto Montagem e calibrao Montagem e calibrao do hexpode Protocolo de comunicao Anlise e desenvolvimento de protocolo de comunicao Interface utilizador Desenvolvimento de interface de utilizador Integrao de comandos gestuais e voz Desenvolvimento para multiplataforma Desenvolvimento interface para definio de comandos para utilizao em multiplataforma Controlo Hexpode por KINECT Paulo Milheiro 14 A ligao dos servomotores placa SSC-32 foi realizada com base na numerao dos servomotores [Figura 9]. Figura 9 - Numerao servomotores hexpode [8] Os servos foram montados e ajustados para a posio repouso mediante indicaes do fabricante [Figura 10]. Figura 10 Instrues montagem fabricante [8] 3.1.1 Configurao hardware SSC-32 Servo Controller No que diz respeito alimentao dos servomotores, esta encontra-se dividida atravs dos ligadores VS1/VS2 o que permite utilizar duas baterias distintas para cada grupo de servomotores definidos [Figura 11]. Com recurso colocao de um jumper, junto entrada de alimentao na placa Bot Board, a alimentao de todos os servomotores Controlo Hexpode por KINECT Paulo Milheiro 15 passa a ser comum e feita pela mesma bateria. O inverso acontece sem a introduo dos jumpers. A comunicao entre a placa Bot Board II e a SSC-32 realizada atravs de comunicao TTL srie. Para esta ligao foi definida uma taxa de transmisso de 115.2kbps atravs da colocao de dois jumpers.
Figura 11 Configurao hardware SSC-32 Servo Controller [8] Aps a calibrao dos servomotores para a posio neutra, foi ainda necessrio definir um offset para cada um, a fim de os colocar precisamente na posio de repouso. Tal offset necessrio como resultado das furaes milimtricas da estrutura com os suportes do eixo do servomotor. Estes ajustes foram realizados com recurso ao software do fabricante Linx SSC-32 Terminal [Figura 13]. A placa SSC-32 comunica com o computador, atravs da ficha DB9. Esta permite registar e ler offsets assim como atualizar firmware. De forma a ter acesso ficha DB9 necessrio habilitar a sua utilizao atravs da colocao de dois jumpers em Tx e Rx [Figura 12].
Figura 12 - Configurao de comunicao SSC-32 atravs ficha DB9 [9] Controlo Hexpode por KINECT Paulo Milheiro 16 3.1.2 Configurao hardware Bot Board II e microprocessador BASIC Atom Pro 28 O software utilizado na programao do microprocessador foi o Basic Micro Studio. Esta linguagem baseia-se na linguagem de programao BASIC. Com vista a um primeiro teste de movimento do hexpode, foi carregado no microprocessador a programao disponibilizada pelo frum da Lynxmotion [21] para controlo do hexpode atravs de um comando da consola de jogos Playstation 2. Na figura seguinte, encontra-se o esquema de ligaes utilizado para testes de calibrao, movimentos e verificao de ligaes. A alimentao de 9V da SSC-32 e Bot Board II deve ser comum. Para tal, foram realizadas as ligaes necessrias entre o VL de cada placa. Figura 13 - Interface software Lynx SSC-32 Terminal Controlo Hexpode por KINECT Paulo Milheiro 17
Figura 14 - Configurao controlo por comando Playstation 2 [8] Aps validao de calibrao e primeiros movimentos, a programao do microprocessador foi analisada e reformulada para permitir o controlo atravs de comandos pela porta COM da placa Bot Board II. Atravs do estudo da sintaxe da linguagem de programao com recurso ao manual de programao da aplicao, foi desenvolvido o cdigo necessrio para o controlo atravs de comandos recebidos por RS-232 com recurso ficha DB9. Este cdigo encontra-se dividido em 4 partes: a) Configurao do hexpode onde so descritas todas as ligaes de hardware da placa Bot Board II, nmero dos pinos de comunicao com a placa SSC-32, velocidade de transmisso dos dados entre as placas Bot Board II e SSC-32, dimenses do hexpode e ngulos mximos de movimento de cada DOF; b) Ficheiro de base ou ncleo que realiza os clculos necessrios de cinemtica para a correta movimentao do hexpode; c) Sub-rotina que analisa a trama do comando recebido, realizando a decomposio de cada bit da trama recebida para a movimentao requerida; d) Um ficheiro que define o driver da placa SSC-32. Controlo Hexpode por KINECT Paulo Milheiro 18 De forma a poder movimentar o hexpode atravs de comandos recebidos pela porta srie da placa Bot Board II, foram retirados os jumpers que habilitavam a comunicao atravs da ficha DB9 da placa SSC-32 com o computador, e ligado um cabo de 3 pinos fmea em Tx, Rx e Gnd. Estes pinos foram ligados placa Bot Board II da seguinte forma: SSC-32 Tx (amarelo) -> Pino 10 Bot Board SSC-32 Rx (vermelho) -> Pino 11 Bot Board SSC-32 Gnd (preto) -> Gnd Bot Board 3.2 Protocolo de comunicao O protocolo de comunicao que foi utilizado para o controlo deste hexpode foi o RS- 232 entre a interface da aplicao e a placa Bot Board II e TTL srie para a comunicao entre a placa Bot Board II e SSC-32. Como j foi referido, a simplicidade e transparncia na comunicao do protocolo RS-232, permite uma fcil implementao com vista aos objetivos propostos. O envio de comandos gerados pelos interfaces para a placa Bot Board II realizado com recurso a uma trama constituda por seis bytes em hexadecimal e um byte calculado e adicionado no incio para checksum [Figura 15]. Este byte de checksum calculado atravs de um XOR lgico entre cada um dos bytes seguintes que constituem a trama.
Byte 0 (Checksum) Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Figura 15 Formato trama comando A trama com o comando analisada pela sub-rotina acima descrita que, aps verificao de valor do checksum, passa os parmetros necessrios para o clculo de cinemtica e controlo da movimentao. Os restantes seis Bytes que constituem a trama do comando so definidos da seguinte forma: Byte 1 Cada bit deste Byte representa um boto/ao a realizar: bit 7: Diminui velocidade em 50ms; (Left Button) bit 6: Diminui a distncia do cho ao hexpode em 10mm; (Down Button) bit 5: Aumenta velocidade em 50ms; (Right Button) Controlo Hexpode por KINECT Paulo Milheiro 19 bit 4: Aumenta a distncia do cho ao hexpode em 10mm; (Up Button) bit 3: Liga/desliga a placa Bot Board II; (Start Button) bit 2: no utilizado; (R3 Button) bit 1: Reset rotaes do corpo de hexpode; (L3 Button) bit 0: Muda para modo de rotao; (Select Button) O boto/ao determinado como ativo caso o bit tenha o valor de zero. Byte 2 Cada bit deste Byte representa um boto/ao a realizar: bit 7: Muda para modo de balancear o hexpode; (Square Button) bit 6: Alternar modo rotao/translao; (Cross Button) bit 5: Mudar modo de rotao; (Circle Button) bit 4: Aumenta a distncia do cho ao hexpode 35mm; (Triangle Button) bit 3: Muda o centro de rotao do hexpode para a cauda; (R1 Button) bit 2: Abre as mandbulas do hexpode; (L1 Button) bit 1: Muda o centro de rotao do hexpode para a cabea; (R2 Button) bit 0: Fecha as mandbulas do hexpode; (L2 Button) O boto/ao determinado como ativo caso o bit tenha o valor de zero. Byte 3 andar mtodo andar 1 e desabilitado mtodo andar 2 - Left Stick Left/Right Byte 4 andar mtodo andar 1 e desabilitado mtodo andar 2 - Left Stick Up/Down Byte 5 Define o movimento transversal do hexpode: esquerda (FF16 ou 25510); direita (0116 ou 110); Parado (8016 ou 12810). A velocidade de movimento definida pelos valores compreendidos entre 1-128 para a esquerda e 128-255 para a direita. Quanto maior a distncia entre o valor que define a posio parado e o valor mximo para cada movimento, maior ser a velocidade de deslocamento. Byte 6 Define o movimento longitudinal do hexpode: frente (FF16 ou 25510); trs (0116 ou 110); Parado (8016 ou 12810). A velocidade de movimento definida pelos valores compreendidos entre 1-128 para trs e 128-255 para a frente. semelhana do movimento transversal, quanto maior a distncia entre o valor que define a posio parado e o valor mximo para cada movimento maior, ser a velocidade de deslocamento. O envio da trama de comando da aplicao para a placa Bot Board II realizado assim que o microprocessador envie uma string (Rd) [Figura 16] que informa a mesma que se Controlo Hexpode por KINECT Paulo Milheiro 20 encontra preparada para receber a trama. Este encarrega-se posteriormente aos clculos necessrios de cinemtica e envia os comandos por TTL para a placa SSC-32 a qual controla os servomotores do hexpode. 3.3 Interface de controlo O mote da cmara Microsoft KINECT passa pela comunicao natural com computadores provendo o computador com olhos, ouvidos e crebro [10]. A KINECT, atravs do kit para desenvolvimento de software (SDK), permite desenvolver ferramentas e criar solues inovadores as quais permitem aos utilizadores comunicar com os computadores naturalmente atravs de gestos e voz. O Windows SDK para KINECT funciona como um interface entre a KINECT e a aplicao. Quando o sensor acedido, a aplicao envia uma chamada ao driver atravs da API Figura 17 Diagrama de interface KINECT Application e Windows SDK [11][Figura 17]. Figura 16 Excerto cdigo C# envio trama de comando Controlo Hexpode por KINECT Paulo Milheiro 21 Figura 17 Diagrama de interface KINECT Application e Windows SDK [11] As bibliotecas API do SDK KINECT podero ser classificadas quanto sua utilidade em duas categorias: as que controlam e acedem ao sensor KINECT; e as que acedem aos microfones e realizam o controlo do udio [Figura 18]. Figura 18 Diagrama de KINECT SDK API [1]
Controlo Hexpode por KINECT Paulo Milheiro 22 3.3.1 Controlo por gestos Como j foi referido, uma das grandes potencialidades do KINECT SDK, a capacidade de, atravs da conjugao de algoritmos de processamento de imagem e matching com os dados recolhidos do sensor de profundidade, detetar at vinte pontos do corpo humano e at dois utilizadores com total detalhe [Figura 19]. De salientar que estes dados obtidos no se tratam apenas de posicionamento dos pontos (joints) do esqueleto, mas tambm de todo o movimento realizado pelo utilizador. Figura 19 - Deteo pontos esqueleto com base na profundidade [1]
Os dados relativos ao posicionamento de cada ponto do esqueleto so obtidos com base num sistema de trs coordenadas (X, Y e Z) [Figura 20].
Figura 20 Referencial utilizador KINECT Controlo Hexpode por KINECT Paulo Milheiro 23 O algoritmo para deteo em tempo real de poses humanas desenvolvido pela Microsoft Research [Figura 21], baseia-se no reconhecimento de cada parte do corpo com base em cada pixel de profundidade, obtido atravs do sensor de profundidade da cmara KINECT. As principais caractersticas deste algoritmo baseiam-se: a) Inferncia de partes do corpo analisando frame-by-frame, no existindo informao temporal; b) Tratamento de cada pixel individualmente. Cada parte do corpo analisada e processada individualmente, tornando assim o algoritmo bastante rpido, abaixo de 5 ms por cada frame; c) Anlise e processamento realizado com base apenas nos dados do sensor de profundidade; d) Deciso baseada numa rvore de classificao de decises paralela. Figura 21 - Ilustrao algoritmo deteo esqueleto KINECT Para informao detalhada relativa ao algoritmo Real-Time Human Pose Recognition in Parts from a Single Depth Image, consultar bibliografia [19]. O SDK da KINECT, atravs de um conjunto APIs, permite-nos aceder aos dados relativos a cada um dos pontos do esqueleto do utilizador. Cada um destes pontos identificado pelos nomes head, shoulder, elbows, wrist, hip, knee, ankle e foot (cabea, ombros, cotovelos, punhos, anca, joelhos, tornozelo e p, respetivamente) [Figura 22]. Tambm Controlo Hexpode por KINECT Paulo Milheiro 24 permitido determinar se o ponto do esqueleto se encontra localizado, no localizado ou deduzido por inferncia. Figura 22 Nomenclatura dos pontos do esqueleto [1] O controlo por gestos desenvolvido para este projeto, trata-se de um joystick virtual na mo direita do utilizador ativado atravs do fecho da mo (em punho) perante a KINECT [Figura 23]. O utilizador posiciona-se com a palma da mo aberta, preferencialmente de frente para o sensor, e fecha a mo em punho, sendo isto reconhecido pela KINECT como um grip (pegar; agarrar; punho) [20]. A distncia e posicionamento do utilizador relativamente KINECT so importantes para um controlo de uma forma mais precisa. Assim, foi desenvolvido um controlo de posicionamento de utilizador com base na distncia entre o ponto do esqueleto central da anca e a KINECT, o qual indica ao utilizador onde se deve posicionarFigura 32 e tambm verifica se o utilizador se encontra totalmente visvel KINECT [Figura 32]. O joystick virtual baseia-se na aquisio do posicionamento inicial da mo direita com base no referencial da KINECT. Aquando do fecho da mo em punho, so tratados os dados recolhidos numa thread a qual verifica a posio atual relativamente posio do Controlo Hexpode por KINECT Paulo Milheiro 25 grip. Dado um valor de movimento de threshold, aproximadamente 15 cm, nas coordenadas (x,y), o joystick ativa os movimentos nas respetivas direes [Figura 23].
3.3.2 Controlo por voz Estando a KINECT equipada com um array de microfones que realiza reduo de ruido, de eco e por ser direcional, no que diz respeito direo de provenincia do som neste caso a voz, torna-se num sensor muito mais poderoso do que um microfone, por exemplo. O funcionamento do reconhecimento por voz passa, pela converso dos dados recolhidos pelo array de microfones da KINECT, que converte os dados analgicos do som recebido numa onda digital, sendo posteriormente enviados para o motor de reconhecimento do udio. Este motor de reconhecimento realiza a anlise com base no modelo acstico, que converte o discurso adquirido pelo sensor em fonemas, e no modelo de linguagem, que identifica e realiza a verificao da conjugao de fonemas no dicionrio interno com vista a verificar se a palavra ou frase interpretada se encontra no dicionrio definido. Este dicionrio pode ser construdo com recurso a declarao das palavras [Figura 24] ou construo de um ficheiro XML. Figura 23 Movimentos joystick virtual mo direita Controlo Hexpode por KINECT Paulo Milheiro 26 Figura 24 Excerto cdigo C# construo dicionrio semntico No seguinte diagrama [Figura 25] ilustrado o funcionamento do reconhecimento por voz. Controlo Hexpode por KINECT Paulo Milheiro 27 Figura 25 Processo de funcionamento reconhecimento de voz [1] Os comandos de voz implementados permitem realizar os movimentos do hexpode e abrir e fechar a mandibula presente na parte frontal do hexpode. Comando de Voz Descrio forward; forwards; straight; Movimenta para a frente backward; backwards; back; Movimenta para trs turn left; Desloca lateralmente para a direita turn right; Desloca lateralmente para a esquerda break; Pra o movimento que estava a realizar start; Inicializa/Pra o hexpode rise; Levanta o hexpode em relao ao cho open; Abre a mandbula close; Fecha a mandbula
Controlo Hexpode por KINECT Paulo Milheiro 28 3.4 Interface com o utilizador O funcionamento do controlo do hexpode simples e user-friendly. Tal como descrito anteriormente, o controlo possvel atravs de comandos gestuais, voz ou interface do computador. Aps a inicializao da KINECT e comunicao RS-232, o utilizador pode ativar o controlo, inicializao a placa Bot Board II, atravs de comandos do comando de voz Start ou com recurso ao boto Start presente na interface. No interface da aplicao possvel realizar todo o tipo de movimentos e sequncias de testes de movimento, onde possvel verificar a enorme capacidade de movimentos presente no hexpode. Atravs de comandos de voz em ingls, possvel inicializar, parar o movimento, mover esquerda, direita, frente e trs. Quanto ao facto dos comandos serem em lngua inglesa, prende-se com a realidade dos ficheiros de semntica nesta lngua se encontrarem mais desenvolvidos permitindo um grau de fiabilidade mais elevado. No que diz respeito aos comandos gestuais, aps uma primeira abordagem em que as mos eram um apontador no interface e fazia com que o utilizador estivesse que estar a verificar o seu posicionamento no interface da aplicao, passou-se implementao de um joystick virtual possvel em qualquer ponto sendo este ativado atravs do fecho da mo em punho (grip). Os movimentos disponveis baseiam-se em frente, trs, esquerda, direita e diagonais com base no posicionamento inicial aquando do fecho da mo. Com o deslocamento da mo fechada para cima, o rob andar para a frente; para baixo, para trs; movimentos laterais esquerda e direita; e a diagonais coerentes com o movimento da mo. No seguinte diagrama [Figura 26] verificar um esquema simplificado de funcionamento. Controlo Hexpode por KINECT Paulo Milheiro 29 Todos os comandos inerentes ao controlo do movimento do hexpode podem ser acedido neste interface de utilizador Start Controlo gestual Controlo Interface Controlo por voz - Inicializao KINECT - Inicializao comunicao RS- 232 - Ativao controlo hexpode Start pode ser realizado no interface ou por comando voz "Start"
Figura 26 Esquema funcionamento 3.5 Algoritmo implementado em C# De seguida apresentado uma viso genrica do algoritmo implementado em C# para controlo do hexpode neste projeto [Figura 27].
Controlo Hexpode por KINECT Paulo Milheiro 30 Inicializao: - KINECT - RS-232 Start Robot Controlo Voz Controlo Interface Controlo Gestual Construo trama a enviar Standby Hexpode pronto para receber trama? Envia trama comando; Delay 20ms No Sim - Controlo posicionament o utilizador; - Deteo de ponto/mo (joysitck virtual) - Interpretao de comando de voz com base no ficheiro de semntica Inicializao de threads, event handlers para a comunicao RS- 232 e KINECT
Figura 27 Algoritmo implementao C# 3.6 Configurao multiplataforma XML para aplicao a diferentes equipamentos fsicos A configurao multiplataforma para diferentes equipamentos fsicos encontra-se acessvel na interface. Esta define um ficheiro XML de configuraes com a trama a executar para cada um dos botes da interface, comandos de voz e gestuais [Figura 28]. Este mdulo permite a comunicao atravs de um socket UDP, aps a configurao dos Controlo Hexpode por KINECT Paulo Milheiro 31 parmetros necessrios, endereo IP e porta a utilizar, assim como definio do tipo de comunicao para Comunicao UDP. Esta opo torna-se numa mais-valia no desenvolvimento do projeto, uma vez que permite a utilizao do cdigo desenvolvido em projetos futuros. O ficheiro XML constitudo pela seguinte estrutura: id: define o identificador do registo; Trama: trama/comando a enviar; Desc_Trama: descritivo da trama; Comando: ao que despoleta o comando; Desc_Comando: descritivo de em que situaes executado o comando. Paralelamente a este ficheiro XML, foi tambm desenvolvido um ficheiro de configuraes de comunicao [Figura 29], onde so definidos os parmetros necessrios comunicao seja por protocolo UDP ou srie RS-232. O interface desenvolvido para alterao destas configuraes bastante intuitivo, simplificando a modificao das mesmas. Figura 28 Excerto ficheiro XML definio comandos a enviar Controlo Hexpode por KINECT Paulo Milheiro 32
Figura 29 Ficheiro XML configuraes comunicao Controlo Hexpode por KINECT Paulo Milheiro 33 4 Resultados A interface foi desenvolvida com o intuito de ser o mais simples e intuitiva de forma a ser facilmente utilizada por utilizadores no familiarizados com o sistema. No arranque da aplicao apresentado um menu onde possvel aceder a todos os formulrios desenvolvidos [Figura 30]. Figura 30 Menu interface desenvolvida 4.1 Interface botes A interface de botes est desenvolvida com um formato similar a um comando de uma consola de jogos, para uma mais fcil adaptao do utilizador [Figura 31]. Os botes encontram-se identificados com etiquetas que so apresentadas quando o apontador do rato colocado em cima do boto, para que o utilizador disponha da informao da ao produzida quando o boto for pressionado.
Controlo Hexpode por KINECT Paulo Milheiro 34 4.2 Interface gestual e comandos de voz A janela de interface de controlo gestual e comandos de voz dispe de informaes diversas ao utilizador [Figura 32]. Figura 31 Janela interface botes Controlo Hexpode por KINECT Paulo Milheiro 35 No canto superior direito apresentado uma imagem similar a uma cmara KINECT a qual indica, mediante a cor de fundo apresentada, se a ligao mesma foi realizada com sucesso e se encontra ligada (cor verde) ou desligada (cor vermelho). Na parte central da janela, do lado direito, apresentada uma caixa que disponibiliza ao utilizador informao em tempo real do posicionamento da anca, mo esquerda e mo direita nas trs coordenadas do sistema de coordenadas da KINECT (x,y,z), o ponto (x,y,z) em que foi realizado o grip da mo direita assim como a trama recebida e enviada em tempo real para o microcontrolador atravs da placa Bot Board. Na parte central do lado esquerdo apresentado Smile que indica ao utilizador o posicionamento correto com base na sua distncia em relao cmara e se se encontra totalmente inserido na rea de viso da KINECT. Caso o utilizador se encontre posicionado corretamente, ser apresentado um visto de cor verde, passando o Smile apresentado a ser risonho. Caso o utilizador se encontre fora da distncia definida (3 a 3,5 mts) o Smile passa a triste, coloca uma cruz de cor vermelha no lado que se encontre fora e indica a Figura 32 Janela Interface Controlo Gestos + Voz Controlo Hexpode por KINECT Paulo Milheiro 36 direo do movimento a realizar pelo utilizador, para que este esteja posicionado corretamente. Sensivelmente no centro da janela encontra-se uma mo aberta, a qual passa a uma mo fechada em punho, assim que o utilizador realize o fecho da mo para controlo atravs de joystick virtual. Na parte inferior da janela encontram-se trs caixas de texto onde so apresentadas informaes relativas direo do movimento selecionado no joystick virtual, informao sobre o posicionamento do utilizador e informao sobre o ltimo comando de voz reconhecido e respetivo nvel de confiana de interpretao do motor de reconhecimento. 4.3 Imagem e sensor profundidade Neste ecr possvel visualizar a imagem RGB e de profundidade obtida pela cmara KINECT, informaes relativas ao posicionamento do utilizador e do reconhecimento de comandos de voz [Figura 33]. Figura 33 - Janela Dados, imagem RGB e imagem profundidade Controlo Hexpode por KINECT Paulo Milheiro 37 4.4 Configurao tramas e comandos Este ecr permite definir e configurar as tramas a enviar por protocolo UDP descritas anteriormente [Figura 34]. A alterao da trama de comando a enviar realizada atravs da alterao das colunas Trama e Desc_Trama diretamente na grelha da janela. 4.5 Configurao comunicao RS-232 e UDP Na parte superior deste ecr possvel selecionar entre a comunicao Srie RS-232 (utilizada para o controlo do hexpode) e a comunicao atravs da comunicao UDP [Figura 35]. Figura 34 Janela definio e configurao tramas e comandos Controlo Hexpode por KINECT Paulo Milheiro 38 Figura 35 Janela configurao comunicao Srie RS-232 e UDP 4.6 Alimentao A bateria utilizada no projeto foi construda com o conjunto de 5 clulas Ni-MH soldadas e ligadas em srie para obter os 6.0V recomendados pelo fabricante do hexpode [Figura 36]. A utilizao de clulas do tipo Ni-MH do tipo Sub-C permite uma durao mais alargada da bateria, durando at aproximadamente entre 20-30 minutos, comprovada em testes realizados. Figura 36 Clula tipo Sub-C 1.2V 3300mAh [22] O carregamento da bateria foi realizado atravs de um carregador de ImaxRC A3 de 2A 20w [24]-[Figura 37]. Este carregador permite o carregamento de baterias compostas com 5 a 8 clulas NiCd/NiMH. O tempo de carregamento da bateria acima descrita de aproximadamente entre 1h15 15min, quando esta se encontra completamente descarregada. Controlo Hexpode por KINECT Paulo Milheiro 39 Figura 37 Carregador Ni-MH ImaxRC A3 [25] 4.7 Testes realizados Neste subcaptulo so apresentados resultados de testes realizados na execuo deste projeto. 4.7.1 Corrente mxima Os servomotores utilizados pelo hexpode, segundo datasheet [26] so dispositivos que exigem alguma corrente tendo esta que ser tida em conta no que diz respeito durabilidade da bateria. Considerando que a deslocao do hexpode poder ser realizada com recurso a no mximo 4 pernas (12 servomotores), a bateria dever ser capaz de suportar picos na ordem dos 5 a 6A. Tendo por base o datasheet, o qual referente uma corrente de funcionamento de 450 mA: = 12 450 = 5,4 4.7.2 Tempos execuo de comandos de voz e gestos O tempo de execuo dos comandos de voz e gestos esto diretamente relacionados com a capacidade de processamento do computador e a velocidade de transmisso dos dados. Nos testes realizados, o tempo de efetivao e execuo do comando varia de 1.25s 0.25s. 4.7.3 Testes com diferentes utilizadores Foram definidos um conjunto de testes que foram executados por diferentes utilizadores, aps uma breve introduo a cada um deles da interface e dos objetivos Controlo Hexpode por KINECT Paulo Milheiro 40 genricos da interface. Estes testes preveem um conjunto de aes realizadas por comandos de voz e posteriormente por comandos gestuais. A sequncia de comandos de voz previstos foi: a) Inicializar o hexpode Comando de voz Start; b) Subir o hexpode para 35mm do cho Comando de voz Rise; c) Mover o hexpode para a frente Comando de voz Forward; d) Parar o hexpode Comando de voz Break; e) Mover o hexpode para trs Comandos de voz Backwards; f) Parar o hexpode Comando de voz Break; g) Mover o hexpode para a direita Comando de voz Turn Right; h) Parar o hexpode Comando de voz Break; i) Mover o hexpode para a esquerda Comando de voz Turn Left; j) Desligar o hexpode Comando de voz Start. Os dados analisados foram o tempo necessrio correta execuo da sequncia de movimentos e a quantidade de vezes que o comando foi proferido pelo utilizador at que seja aceite pela interface. Esta sequncia foi executada duas vezes por cada utilizador de forma a ser possvel aferir a facilidade de utilizao da interface aps primeiro teste de sequncia. Quantidade de vezes at que o comando foi aceite Utilizador / Tentativa a) b) c) d) e) f) g) h) i) j) Tempo (min) Utilizador 1 - Tentativa 1 1 1 1 1 1 1 2 2 1 1 62 Utilizador 1 - Tentativa 2 1 1 2 2 1 2 3 2 2 1 48 Utilizador 2 - Tentativa 1 1 2 1 2 1 2 8 2 2 1 123 Utilizador 2 - Tentativa 2 1 1 2 1 2 1 n 4 1 1 78 Utilizador 3 - Tentativa 1 1 1 1 2 2 4 n 5 4 4 95 Utilizador 3 - Tentativa 2 1 1 2 1 1 3 7 3 2 1 73 Utilizador 4 - Tentativa 1 1 1 n 1 1 2 n 2 2 1 59 Utilizador 4 - Tentativa 2 1 2 1 n 1 n n 3 1 2 58 Utilizador 5 - Tentativa 1 1 2 1 2 1 2 n 2 1 1 65 Utilizador 5 - Tentativa 2 1 1 1 1 1 4 n 1 2 2 75 A sequncia de comandos gestuais e voz definida foi: a) Inicializar o hexpode Comando de voz Start; b) Subir o hexpode para 35mm do cho Comando de voz Rise; Controlo Hexpode por KINECT Paulo Milheiro 41 c) Mover o hexpode para a frente Joystick virtual movimento do punho para cima; d) Parar o hexpode Joystick virtual abertura da mo; e) Mover o hexpode para trs Joystick virtual movimento do punho para baixo; f) Parar o hexpode Joystick virtual abertura da mo; g) Mover o hexpode para a direita Joystick virtual movimento do punho para a direita; h) Parar o hexpode Joystick virtual abertura da mo i) Mover o hexpode para a esquerda Joystick virtual movimento do punho para a esquerda; j) Desligar o hexpode Comando de voz Start. k) Quantidade de vezes at que o comando foi aceite Utilizador / Tentativa a) b) c) d) e) f) g) h) i) j) Tempo (min) Utilizador 1 - Tentativa 1 2 2 1 1 1 1 1 1 1 3 45 Utilizador 1 - Tentativa 2 1 1 1 1 1 1 2 1 1 1 28 Utilizador 2 - Tentativa 1 3 1 1 1 1 1 1 1 1 2 42 Utilizador 2 - Tentativa 2 1 2 1 1 1 1 1 1 1 1 29 Utilizador 3 - Tentativa 1 1 2 1 1 1 1 1 1 1 1 55 Utilizador 3 - Tentativa 2 1 1 1 1 1 1 1 1 1 3 38 Utilizador 4 - Tentativa 1 1 3 1 1 1 1 1 1 1 3 55 Utilizador 4 - Tentativa 2 1 1 1 1 1 1 1 1 1 1 25 Utilizador 5 - Tentativa 1 2 1 1 1 1 1 1 1 1 1 32 Utilizador 5 - Tentativa 2 1 2 1 1 1 1 1 1 1 1 26
Controlo Hexpode por KINECT Paulo Milheiro 43 5 Concluses A montagem e calibrao do hexpode demonstraram-se fundamentais para um movimento estvel e um correto posicionamento em repouso. Verificou-se atravs dos testes realizados, que necessrio uma constante verificao da estrutura, j que tratando-se de um hexpode e tendo por natureza um movimento mais complexo devido ao elevado nmero de DOFs, foi frequente a necessidade de reapertar os parafusos dos servomotores e dos diversos componentes da estrutura. Como sugesto de utilizao futura sugere-se a utilizao de cola de parafusos especfica para reforar a estrutura [27]. Na fase inicial de execuo deste projeto, as primeiras dificuldades encontradas prenderam-se com a comunicao entre a aplicao e a placa Bot Board II. O cdigo desenvolvido para o microprocessador incorporado nesta placa, obriga a um timing certo entre envio de comandos de 20ms. Este, envia uma string predefinida (Rd) e aps ser rececionada pela aplicao, deve ser enviada a trama com o comando num array de bytes e o valor de checksum na ltima posio do array. A construo da trama e clculo do respetivo checksum realizado aquando do envio do comando, tal como descrito anteriormente. Ultrapassado este passo, foi desenvolvido um interface virtual que permite o controlo do hexpode e a realizao de todos os movimentos e sequncias de movimentos disponveis, o qual permite a verificao da capacidade disponibilizada pelos 25 DOFs. Com recurso ao SDK disponibilizado pela Microsoft para o sensor KINECT, implementou-se o controlo atravs dos comandos de voz e gestuais. Verificou-se que a colocao da mo com a palma da mo voltada para baixo poder ser detetada pela KINECT, como a mo fechada em punho. No que diz respeito aos comandos de voz, verificou-se que quanto maior seja o dicionrio de semntica maior ser a probabilidade de falsos positivos, devido conjugao dos fonemas de palavras similares do dicionrio. O prprio sotaque das palavras na lngua inglesa assim como o barulho ambiente fator de influncia determinante na deteo correta dos comandos de voz. Controlo Hexpode por KINECT Paulo Milheiro 44 Quanto ao controlo por gestos, foi desenvolvido um joystick virtual o qual permite o controlo de movimento do hexpode. Este controlo pode ser realizado atravs do fecho da mo em qualquer ponto e atravs do deslocamento da mesma controlar o movimento do rob. Para parar o controlo gestual, basta abrir a mo e voltar a palma da mo para a cmara. Atravs de testes realizados, este tipo de controlo verificou-se bastante estvel com um grau de fiabilidade elevado superior a 80%. Uma vez que o sensor KINECT permite obter a distncia e profundidade, com vista estabilidade do sistema, o posicionamento controlado atravs de indicaes ao utilizador. Este controlo de posicionamento necessrio, uma vez que o caso o esqueleto no seja detetado na totalidade, podero ser detetados outros pontos incorretamente o que poderia interferir com o correto manuseamento do rob. O controlo s possvel caso o utilizador esteja completamente visvel. O cdigo desenvolvido para este projeto foi modificado e otimizado para ser possvel implementao noutro sistema, seja de controlo de robs ou automatismos, com recurso a um ficheiro de definio de tramas/comandos XML. Este sistema multiplataforma permite a definio de tramas ou comandos a enviar atravs dos comandos de voz e movimentos definidos. Com isto, pretende-se disponibilizar uma base desenvolvimento para projetos futuros. No que diz respeito aos protocolos de comunicao, possvel alterar parmetros inerentes comunicao, seja por RS-232 ou por UDP, com recurso ao formulrio desenvolvido, onde possvel a configurao dos parmetros. 5.1 Objetivos realizados No que diz respeito aos objetivos propostos e descritos na introduo estes foram realizados na totalidade. Montagem e calibrao do hexpode; Anlise/Desenvolvimento protocolo que permite estabelecer comunicao entre o hexpode e um dispositivo externo; Desenvolvimento de uma interface de reconhecimento gestual e de comandos de voz Controlo Hexpode por KINECT Paulo Milheiro 45 Desenvolvimento de ficheiro configuraes XML multiplataforma para comandos voz e gestuais 5.2 Trabalho futuro Quanto a trabalho futuro, este projeto dispe de uma margem de progresso bastante elevada podendo ser alvo de desenvolvimento diverso, tais como, por exemplo: Evoluo do projeto para um sistema autnomo com recurso BeagleBoard- XM, capaz de realizar reconstruo de espaos em 3D; Desenvolvimento de um sistema de comunicao por protocolo UDP para o hexpode; Elaborao de um sistema capaz de emisso de um stream de vdeo incorporando a KINECT na prpria estrutura do hexpode. 5.3 Apreciao final A execuo deste projeto foi bastante aliciante e desafiadora. Apesar das dificuldades encontradas ao longo da execuo do mesmo, devido utilizao de dispositivos nunca antes explorados por mim, foi muito gratificante o desenvolvimento realizado tendo em vista os objetivos atingidos. Embora a escassez de tempo no permitisse o desenvolvimento de um produto final para aplicao a um problema concreto, trata-se de um projeto com bastante margem de progresso e com imensas potencialidades para aplicao nas mais diversas reas. A aplicao de conhecimentos na rea de programao e desenvolvimento de novas tcnicas com linguagens de programao diferentes permitiro no futuro uma abordagem mais capaz em desenvolvimentos futuros nas distintas linguagens existentes.
Paulo Milheiro 47 Bibliografia [1] Consultado a 17-4-2013: Abhijit Jana, Kinect for Windows SDK Programming Guide,http://lirec.ict.pwr.wroc.pl/~jkedzier/urbi/Kinect%20for%20Windows%20S DK%20Programming%20Guide.pdf [2] Consultado a 6-3-2013: Data Sheet BASIC Micro Atom 28 Pin Module, http://www.me.psu.edu/rahn/me462/atom28.pdf [3] Consultado a 12-12-2013: Imagem Microprocessador BASIC Micro Atom 28, http://www.lynxmotion.com/images/product/large/bap2801.jpg [4] Consultado a 12-12-2013: Imagem Bot Board II, http://www.lynxmotion.com/images/product/large/abb01.jpg [5] Consultado a 13-12-2013: Imagem SSC-32, http://www.lynxmotion.com/p-395-ssc- 32-servo-controller.aspx [6] Consultado a 13-12-2013: Imagem hexpode A-Pod, http://www.lynxmotion.com/images/jpg/apod03.jpg [7] Consultado a 20-12-2013: Vdeo KINECT and sign language translation, http://www.youtube.com/watch?v=HnkQyUo3134#t=137 [8] Consultado a 20-3-2013: Tutorial calibrao e montagem hexpode A-Pod, http://www.lynxmotion.com/images/html/build184.htm [9] Consultado a 19-3-2013 Manual SSC-32, http://www.lynxmotion.com/images/html/build136.htm [10] Consultado a 18-12-2013 Site oficial Kinect for Windows, http://www.microsoft.com/en-us/kinectforwindows/ [11] Consultado a 18-4-2013: Real-Time Human Pose Recognition in Parts from Single Depth Image, http://research.microsoft.com/apps/pubs/default.aspx?id=145347 [12] Consultado a 27-12-2013: Kinect Sign Language Translator expands communication possibilities http://research.microsoft.com/en- us/collaboration/stories/kinect-sign-language-translator.aspx Controlo Hexpode por KINECT Paulo Milheiro 48 [13] Consultado a 4-1-2014: Kinect Launches a Surgical Revolution http://research.microsoft.com/en-us/news/features/touchlesssurgery- 060712.aspx [14] Consultado a 4-1-2014: Gesture-based Surgical Manipulation of a da Vinci Robot using a KINECT http://www.youtube.com/watch?v=YsY_A0kLh-g [15] Consultado a 14-01-2014: Technology that listens to you http://www.ford.co.uk/experience-ford/Technology/Bluetooth-Voice-Control [16] Consultado a 14-01-2014: Google Voice https://play.google.com/store/apps/details?id=com.google.android.apps.googlevo ice [17] Consultado a 14-01-2014: Top 10 KINECT Hacks http://spectrum.ieee.org/automaton/robotics/diy/top-10-robotic-kinect-hacks [18] Consultado a 14-01-2014: Length of serial cables http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/serial- distance.html [19] Consultado a 14-01-2014: Real-Time Human Pose Recognition in Parts from Single Depth Images http://research.microsoft.com/apps/pubs/default.aspx?id=145347 [20] Consultado a 21-09-2013: Kinect Interaction Concepts http://msdn.microsoft.com/en-us/library/dn188673.aspx [21] Consultado a 14-01-2014: Lynxmotion Forum http://www.lynxmotion.net/ [22] Consultado a 14-01-2014: 1 x Sub C 1.2V Volt 3300mAh NiMH Rechargeable Battery With Tabs Ultracell http://www.ebay.com/itm/1-x-Sub-C-1-2V-Volt- 3300mAh-NiMH-Rechargeable-Battery-With-Tabs-Ultracell- /350968318052?pt=US_Rechargeable_Batteries&hash=item51b7578864 [23] Consultado a 6-3-2014: 6.0 Volt Ni-MH 2800mAh Battery Pack http://www.lynxmotion.com/p-426-60-volt-ni-mh-2800mah-battery-pack.aspx http://www.lynxmotion.com/c-154-a-pod.aspx
[24] Consultado a 8-3-2014: Imax RC www.imaxrc.com/ Controlo Hexpode por KINECT Paulo Milheiro 49 [25] Consultado a 14-01-2014: Imax NIMH Charger A3 http://www.airsoftshop.be/en/nimh-charger-a3.html [26] Consultado a 14-01-2014: Datasheet Servo HS-645 http://www.robotshop.com/media/files/pdf/hs645mg.pdf [27] Consultado a 14-01-2014: Cola de parafusos ULTIMATE http://www.l10extreme.com/loja/index.php?controller=product&id_product=314