Você está na página 1de 63

Instituto Politcnico do Cvado e do Ave

Escola Superior de Tecnologia


Engenharia Eletrotcnica e de Computadores




Controlo Hexpode por Kinect

Paulo Milheiro









Janeiro de 2014








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

Você também pode gostar