Você está na página 1de 72

CENTRO UNIVERSITRIO SENAC

Guilherme Giacchetto Moreira


Mario Leandro Pires Toledo

Desenvolvimento de robs semi-autnomos baseados em


LEGO e NXT

So Paulo
2012

Guilherme Giacchetto Moreira


Mario Leandro Pires Toledo

Desenvolvimento de robs semi-autnomos baseados em LEGO e NXT

Trabalho de concluso de curso


apresentado ao Centro Universitrio
Senac Campus Senac, como
exigncia parcial para obteno de
grau de Bacharelado em Cincias da
Computao.

Orientador: Fbio Roberto de Miranda

So Paulo
2012

Giacchetto, Guilherme M.; Toledo, Mario L. P.


Desenvolvimento de robs semi-autnomos baseados em
LEGO e NXT / Guilherme Giachetto Moreira Mario Leandro
Pires Toledo. So Paulo, 2012. 71f.
Trabalho de Concluso de Curso Centro Universitrio
Senac Bacharelado em Cincia da Computao.
Orientador: Fbio Roberto de Miranda

1.Interao Humano-Computador 2. Viso Computacional 3.


Jogos Eletrnicos 4. Computao Grfica
Ttulo: Cmera Kombat Interao Livre para Jogos

Alunos: Guilherme Giacchetto Moreira


Mario Leandro Pires Toledo

Ttulo: Desenvolvimento de robs semi-autnomos baseados em LEGO e


NXT

A banca examinadora dos Trabalhos de Concluso de Curso em


sesso pblica realizada em 10/12/2012 considerou os candidatos:

( ) aprovados

( ) reprovados

1) Examinador (a):

_______________________________

2) Examinador (a):

_______________________________

3) Presidente:

_______________________________

AGRADECIMENTOS
Antes de tudo, agradecemos a nossos pais, pelos ensinamentos sobre a
vida, e por todas as oportunidades oferecidas.
Agradecemos a nosso orientador Fbio Miranda, que nos ajudou neste
processo de desenvolvimento do projeto, e nos auxiliou com grande
profissionalismo.
Agradecemos a professora Joyce Bevilacqua, que nos ensinou muito
mais do que ementas acadmicas.
Agradecemos

Brbara

Giacchetto,

pela

ajuda

oferecida

na

prototipagem do rob.
Gostaramos tambm de agradecer a todos que de alguma forma
contriburam comeste projeto, e nos deram foras para terminar este trabalho.
Entre estas pessoas, um agradecimento especial para Evelyn Carlin e Munyra
Guarnieri, cujas palavras de apoio serviram como inspirao durante este
processo criativo.

A todos vocs, nosso muito obrigado.

"Antes de embarcar em uma jornada de vingana, cave duas covas."


(Confncio)

RESUMO
Este trabalho tm como propsito o desenvolvimento de um rob semiautnomo do modelo LEGO NXT, que utiliza de um smartphone baseado no
sistema Android como o principal sensor ao meio externo, e principal fonte de
processamento. A cmera do smartphone utilizada como receptor de
imagens, e so aplicados mtodos de viso computacional para atribuir uma
autonomia ao rob.

Palavras chave: Robtica, Android, NXT, Viso Computacional, Inteligncia


Artificial

ABSTRACT
This work has implications for the development of a semi-autonomous robot
LEGO NXT model, which uses a smartphone based on Android system as the
primary sensor to the external environment, and main source of processing.
The smartphone camera is used as the image receptor, and apply computer
vision methods to assign an autonomy to the robot.

Keywords: Robotics, Android, NXT, Computer Vision, Artificial Intelligence.

SUMRIO
1. Introduo ................................................................................................ 12
1.1

Objetivos ............................................................................................. 15

1.2

Organizao do Texto ......................................................................... 17

2. Fundamentos Conceituais ...................................................................... 18


2.1 Evoluo da Robtica ............................................................................. 18
2.2 Tipos de robs ........................................................................................ 24
2.2.1 Robs de mobilidade terrestre .......................................................... 25
2.3 Aplicaes da Robtica ........................................................................... 29
2.3.1 Robs Industriais .............................................................................. 29
2.3.2 Robs de Servio.............................................................................. 31
2.3.3 Robs Educacionais ......................................................................... 32
2.4 Automao Robtica ............................................................................... 36
2.4.1 Sensores........................................................................................... 37
2.5 Viso Computacional .............................................................................. 40
2.5.1 Color Blob Detection ......................................................................... 42
2.5.2 Lane Detection .................................................................................. 43
2.6 Smartphone ............................................................................................ 46
2.6.1 Android ............................................................................................. 47
3. Sobre o Projeto ........................................................................................ 49
3.1

Concepo .......................................................................................... 49

3.2 Montagem do rob .................................................................................. 50


3.3 Desenvolvimento da aplicao de controle ............................................. 52
3.3.1 Mdulo de controle manual ............................................................... 57
3.3.2 Mdulo de controle autnomo .......................................................... 57
4. Resultados ............................................................................................... 67
5. Concluso ................................................................................................ 69
5.1 Trabalhos futuros .................................................................................... 70
6. Bibliografia ............................................................................................... 71

12

1. Introduo
A robtica promove diversos benefcios sociedade. Os robs podem,
normalmente, realizar trabalhos repetitivos e enfadonhos para um humano,
dificilmente cometendo erros. A nveis industriais, um rob um trabalhador
incansvel, usado em linhas de produo, reduzindo custos e aumentando a
produtividade do processo.
Segundo DA SILVA(2003) a robtica esta com desafios cada vez maiores.
No bastam apenas serem capazes de desviarem de obstculos e evitarem
colises. Os robs mveis de hoje devem ser dotados de alguma "inteligncia"
que lhes possibilite, por exemplo, reconhecer um dentre vrios objetos. (DA
SILVA, LUCIANO ROTTAVA. Anlise e programao de robs mveis
autnomos na plataforma Eyebot).
O ato de desenvolver um rob autnomo complexo em si, e requer o
envolvimento de muitas reas da computao, desde arquitetura de software
para a composio do controle lgico do rob, at Inteligncia Artificial, para a
composio de algoritmos para automao do mesmo. Alguns destes
processos requerem conhecimentos especficos sobre robtica, principalmente
para a arquitetura de prottipos robticos e o tratamento de linguagens de
baixo nvel. Trabalhar com projetos robticos proporciona o entendimento
destas demais reas.
A grande maioria dos robs que so autnomos (robs que no necessitam
da interveno humana para execuo de suas tarefas) necessita de sensores
para a deteco do ambiente a sua volta, executando aes baseando-se nos
resultados destes sensores.
O rob Baxter (2008, Rethink Robots), por exemplo, foi construdo para se
adaptar ao ambiente que foi designado, podendo efetuar uma srie de
habilidades, como empacotamento e desempacotamento, empilhamento ou
desempilhamento de itens em superfcies mveis ou fixas, operaes
maquinarias

muitas

outras

atividades.

13
Estes processos s podem ser desempenhados devido aos demais
sensores inclusos em Baxter, como um sistema de deteco de presena
humana atravs de um sonar, identificao de objetos por cmeras, sensor de
peso e fora nas juntas dos braos e outros sensores menores.

Figura 1 - O rob baxter, em uma atividade industrial (www.newventurist.com)

O desenvolvimento de um rob que utiliza sensores externos no prtico,


e requer um grande custo operacional, alm da necessidade da adaptao de
cada sensor e a compreenso do protocolo de comunicao de cada um.
Neste trabalho, utilizamos um aparelho smartphone como o principal sensor
do rob construdo. A escolha de um smartphone se deu devido a evoluo
tecnolgica que os aparelhos celulares tiveram.
O iPhone considerado o primeiro smartphone atual, com capacidade de
processamento suficiente para suportar a execuo de mltiplas tarefas. Desde
seu lanamento, em 2007, o iPhone tm aberto portas para diversas
possibilidades no mercado mobile. Devido a seu sistema de aplicativos,
desenvolvedores que estivessem aptos a criao de pequenas ferramentas
para a plataforma, puderam desenvolver um novo nicho de mercado na rea de
desenvolvimento de software.

14
Como concorrente direto da Apple, em 2008, a Google lanou seu sistema
Android, para competir com o iOS (o sistema da Apple). Seu sistema baseado
na plataforma Linux deu mais liberdade a seus desenvolvedores, e permitiu ser
utilizado em diversos modelos de celulares.
A evoluo eminente dos smartphones garantiu que os aparelhos se
tornassem um dispositivo essencial para profissionais que necessitem de
informaes a fcil acesso, alm de recursos de processamento e outras
utilidades prticas. Hoje em dia, os smartphones possuem capacidades
comparveis a notebooks de fcil acesso. O Galaxy SIII, por exemplo, um
dos smartphones atuais mais avanados, quando comparado a suas
especificaes tcnicas. Quando comparado a primeira gerao do iPhone,
possvel ver a grande evoluo que os smartphones sofreram nos ltimos
anos.

iPhone (primeira

Samsung Galaxy i9300

gerao)

SIII

Conexes de rede sem

2G (GSM 850 / 900 /

2G (GSM 850 / 900 /

fio

1800 / 1900)

1800 / 1900), 3G
(HSDPA 850, 900, 1900,
2100) e 4G (LTE)

Resoluo do display

Memria

320x480 (~165 ppi pixels 720x1080 ( ~306 ppi


de densidade).

pixels de densidade).

Sem slot de memria

Com slot de memria

externa, e 4/8/16 GB de

externa para at 64 GB,

memria interna.

16/32/65 GB de memria
interna, e 1GB de
memria RAM.

15
Cmera

2MP e resoluo de

foco automtico, flash de

1600x1200 pixels.

LED, 8MP e resoluo


de 3264X2448 pixels.

Vdeo

No grava.

Gravao de vdeos em
1080p, a 30 frames por
segundo.

CPU

412 MHz ARM 11

Quad-core 1.4 GHz


Cortex-A9

GPU

PowerVR MBX

Mali-400MP

Tabela 1 Comparao entre um iPhone da primeira gerao, e um Galaxy SII.


(http://www.gsmarena.com/)

Neste projeto, foi utilizado um smartphone com sistema Android, devido a


facilidade para desenvolvimento com as ferramentas disponibilizadas pela
Google, e tambm pela compreenso da linguagem de programao Java. A
cmera do celular, alm de seu GPS embarcado, permite que o rob consiga
ampliar suas capacidades sensoriais. Alm disto, todo o processamento
passado a ser feito no smartphone, que concentra toda a parte lgica do rob.

1.1 Objetivos
Este trabalho tem como propsito o desenvolvimento de um rob semiautnomo, que utilizar um smartphone como principal fonte de
processamento, alm de ser o principal sensor ao meio externo, utilizando sua
cmera como guia para se orientar por trilhas ou caminhos, a fim de se chegar
a um destino.
O rob utilizado neste trabalho do modelo LEGO NXT. Seu prottipo foi
arquitetado para que o rob conseguisse se locomover em pisos retos, sem
muitas variaes de terreno. O rob conectado via bluetooth a um
smartphone com o sistema Android embarcado. A utilizao de um celular com
Android se deu devido a facilidade com desenvolvimento para o mesmo, alm
do domnio sobre a linguagem Java.

16
Este tipo de projeto pode ser utilizado em diversos problemas da sociedade.
Entre eles, o auxlio a pessoas com deficincia visual para se locomoverem em
ambientes fechados, onde o rob pode ser capaz de guiar pessoas com
problemas de viso em ambientes fechados.
Para este problema de guia de pessoas com deficincia visual, a empresa
japonesa NSK desenvolveu em 2011 um rob capaz de guiar pessoas cegas
em ambientes pblicos. Este rob possui uma srie de cmeras interligadas, e
o aparelho Kinect (o sensor de movimentos da Microsoft, usado para jogos)
como seu principal sensor.

Figura 2 - O rob da empresa NSK, capaz de identificar escadas e guiar pessoas com deficincia
visual (www.nsk.com).

Diferente do rob da empresa NSK, este projeto oferece uma soluo de


baixo custo para a implementao de um rob capaz de guiar pessoas com
deficincia visual. Este projeto tambm visa, inicialmente, a locomoo do rob
dentro de ambientes fechados, se baseando em rotas e guias para a
movimentao.
O uso dos recursos do smartphone favorecem para a implementao dos
variados sensores do rob. Entre eles, a possibilidade do tratamento das
imagens captadas pela cmera, e a capacidade de conexo via Bluetooth entre
o rob e o celular.
Os estudos feitos neste projeto promovem avanos para a integrao entre
dispositivos mveis e arquiteturas fechadas, possibilitando a construo de

17
robs com sensores mais complexos, baseados nos recursos integrados a
smartphones atuais.

1.2 Organizao do Texto


O captulo 2 de fundamentos conceituais introduz os conceitos referentes a
robtica, incluindo sua histria at os robs mais atuais. Tambm so
mostrados conceitos para automao robtica, e os diferentes tipos de robs
autnomos.
Ainda neste captulo, so mostradas as diferentes aplicaes robticas,
com modelos de robs para reas especficas. Tambm so mostrados alguns
tipos de sensores que auxiliam os robs a realizarem suas tarefas. Por fim,
tambm falado sobre os smartphones e suas capacidades, alm de um
detalhamento sobre o sistema Android.
O captulo seguinte fala sobre o desenvolvimento do projeto, desde sua
concepo at a montagem do prottipo do rob. Tambm detalhado o
desenvolvimento da aplicao de controle, usada no smartphone, detalhado
seus demais mdulos e funcionalidades.
No captulo 4, so descritos os resultados obtidos, a concluso e os
possveis trabalhos futuros.

18

2. Fundamentos Conceituais
Neste trabalho, que trata da construo de um rob semi-autnomo capaz
de se locomover em ambientes fechados atravs de tcnicas de viso
computacional, so empregados conceitos bsicos sobre robtica, utilizados
para a construo de um rob do tipo land rover um rob capaz de se
locomover em terrenos planos, com pouca variao.
Tambm so empregadas tcnicas de automao robtica, para permitir
que o rob tome decises a partir da resposta de seus sensores. Alm disto,
tambm so utilizadas tcnicas de viso computacional sobre o
desenvolvimento para sistemas Android, permitindo o rob de se orientar
atravs da cmera do celular.
A seguir, sero expostos conceitos relevantes de cada um destes
assuntos, de maneira a permitir contextualizar melhor o trabalho.

2.1 Evoluo da Robtica


Leonardo Da Vinci lembrado como o criador do primeiro rob em forma
humana construdo em 1495, tendo como base seus estudos sobre a anatomia
humana. Estes estudos sobre anatomia permitiram o surgimento de diversos
exemplares de bonecos com articulaes mecnicas, que moviam as mos,
braos e pernas, e alguns at mesmo tocavam instrumentos.
Em 1801, o francs Jacquard desenvolveu um tear controlado por cartes
perfurados, levantando-os conforme uma programao pr-estabelecida Estes
teares permitiram o avano na indstria txtil, onde as demais fbricas
procuraram no s equipar-se com teares mecnicos, mas tambm investiram
no desenvolvimento de novas mquinas para reproduzir automaticamente
determinadas tarefas.

19

Figura 3 - O tear programvel de Jacquard (http://odur.let.rug.nl/koester/musicbox/jacquard2.jpg).

Somente em 1924 que surgiu o primeiro rob mecnico, desenvolvido pelo


engenheiro eltrico Ron J. Wensley. O dispositivo podia, atravs de um sistema
de telefonia, ligar ou desligar qualquer sistema que estivesse conectado a ele.
Trs anos depois, Wensley criou o Televox, um pequeno rob com aspecto
humano, que conseguia executar comandos bsicos, como sentar-se e
cumprimentar de acordo com os comandos de seu operador.

Figura 4 - Televox, o rob desenvolvido por Wenlex, capaz de executar funes bsicas, de acordo
com seu operador. (http://cyberneticzoo.com/wp-content/uploads/Televox-Wendling1930(1).jpg)

20
Em 1940 e 1983, o escritor Isaac Asimov publicou os livros I, Robot e
Machines That Think onde descreveu as leis da robtica como parte de um
universo futurista. O objetivo destas leis seriam proteger os seres humanos de
qualquer dano que possa ser causado pelas maquinas inteligentes, e
acabaram servindo como os primeiros resqucios da inteligncia artificial de um
rob. So elas:
1. Lei Zero: Um rob no pode fazer mal humanidade e nem, por inao,
permitir que ela sofra algum mal.
2. Primeira Lei: Um rob no pode fazer mal a um ser humano nem, por
inao, permitir que algum mal lhe acontea.
3. Segunda Lei: Um rob deve obedecer s ordens dos seres humanos,
exceto quando estas contrariem a primeira lei.
4. Terceira Lei: Um rob deve proteger sua integridade fsica, exceto
quando isto contrariar a primeira ou a segunda lei.
Os robs tele operados continuaram a serem desenvolvidos at 1954, onde
George Devol projetou o primeiro rob automtico, um brao mecnico, capaz
de ser programado para repetir tarefas como agarrar ou levantar peso. A partir
deste brao mecnico, foi desenvolvido o Unimate, o primeiro rob comercial
de uso industrial. Este rob comeou a funcionar na linha de produo da
General Motors, em 1961, e trabalhava pegando pedaos quentes de metal e
colando as peas nos chassis dos carros.

21

Figura 5 - O Unimate foi o primeiro rob comercial de uso industrial


(http://robot.org/files/2011/10/unimate.jpg).

Em 1966, Joseph Weizenbaum lanou, no MIT, o primeiro programa de


Inteligncia Artificial. Chamado de Eliza, o programa permite que o usurio
converse com o sistema, e o software, com apenas 200 linhas de cdigo, emite
uma resposta baseado em palavras-chaves do usurio. Este programa foi
utilizado para terapias psiquitricas, para pacientes contarem seus problemas
atravs do software.

Figura 6 - Exemplo de conversa com Eliza, o primeiro programa de Inteligncia Artificial.

Em 1986, Rodney Brooks apresentou a arquitetura Subsumption


desenvolvida para atuar em um ambiente dinmico, afirmando que o mundo
deve ser seu prprio modelo (Brooks, R. A., "Achieving Artificial Intelligence
Through Building Robots", MIT AI Lab Memo No. 899, May 1986). Em 1987,

22
Ronald Arkin desenvolveu a arquitetura hibrida AuRA (Autonomous Robot
Architecture), para navegao robtica, baseado em tcnicas tradicionais de
inteligncia artificial.
A NASA passou a pesquisar robs para auxlio em misses espaciais.
Grande parte destes robs se baseiam em braos robticos, para coleta de
materiais espaciais, ou land rovers, capazes de se locomover por terrenos
diferenciados, coletando o mximo de informao.
Em 1997, a NASA enviou o rob Sojourner para Marte, com a misso de
explorao dos terrenos do planeta, medindo as propriedades do solo e realizar
analises qumicas de suas rochas. O veculo possui 6 rodas para locomoo,
com uma cmera frontal para captao de imagens, e uma placa solar para
armazenamento de energia.
Em 2012, a NASA enviou o rob Curiosity, tambm a Marte, com o
objetivo principal de determinar se Marte, em algum momento, j suportou vida
em seu terreno, alm de determinar a existncia de gua, e estudar o clima e a
geologia do planeta, ajudando a preparar futuras exploraes humanas no
local.

23

Figura 7 - O rob Curiosity, desenvolvido pela NASA para explorao em Marte.

Para completar seus objetivos, a Curiosity possui uma srie de


instrumentos e sensores, a fim de captar informaes e conseguir completar
sua misso. So eles:

Mast Camera: A Mast Camera prove multiplos spectros e imagens em


cores reais, compostas por duas cmeras. Estas cmeras conseguem
capturar imagens em 1600x1200 pixels de resoluo, e vdeos de at 10
frames por segundo, em uma resoluo de 1280x720 pixels;

Chemical Camera: A ChemCam um instrumento composto de dois


sensores: o LIBS, um spectoscpio a laser, prov a composio
elemental das rochas e do solo; O RMI, um micro telescpio, prov
imagens em alta resoluo dos locais que o LIBS identifica;

Navigation Cameras: A Curiosity possui dos pares de cmeras, capazes


de capturar imagens em preto e branco, a fim de auxiliar a locomoo no
terreno;

Estao de monitoramento do ambiente: Chamada de REMS, a estao


de monitoramento do ambiente comprime diversos instrumentos para

24
anlise do ambiente de Marte, tais como a umidade, presso,
temperatura, velocidade do vento e radiao ultravioleta;

Cmeras para deteco de perigo: O rob possui 4 pares de cmeras


chamadas Hazcams, que capturam imagens em preto em branco, a fim
de detectar obstculos a frente, alm de buracos localizados em seu
caminho. Estas cmeras auxiliam a automoo do rob;

Brao robtico: A Curiosity possui um brao robtico, capaz de


pulverizar pedras encontradas no local, e entregar a sensores internos,
para anlise de suas substncias;

Figura 8 - Disposio dos sensores do rob Curiosity. (http://images.gizmag.com/inline/curiositythird-drive-9.jpg)

2.2 Tipos de robs


Os robs podem ser divididos em diferentes tipos, onde cada um se
encaixa com propsitos diferentes, arquitetados de maneiras distintas. Este
projeto trabalha com um rob mvel, sobre locomoo em ambiente plano. O
que se segue so detalhes a respeito destes tipos de robs, e suas aplicaes
no mundo real.

25

2.2.1 Robs de mobilidade terrestre


Um rob mvel um dispositivo autnomo capaz de interagir com um
ambiente especifico. A robtica mvel tem como objetivo dotar um rob de
autonomia suficiente para realizar determinada tarefa atravs da utilizao de
informaes pr-estabelecidas, informaes dos sensores, inteligncia artificial
e programao lgica.
Dispositivos robticos terrestres utilizam o solo para se locomover, e
geralmente so utilizados em ambientes especficos como escadas, terrenos
acidentados ou subidas. Estes robs podem ser divididos em categorias
especficas, que variam de acordo com a locomoo de cada rob.

2.2.2.1 Robs com rodas


Os robs com rodas so os mais utilizados, pois seu desenvolvimento
mais simples, no necessitando de hardware to complexo quanto o de um
rob que se utiliza de pernas mveis. Os robs que baseiam seus movimentos
em rodas podem ter duas, trs ou quatro rodas. Para mquinas acima de
quatro rodas, apenas duas delas so usadas para controlar a direo do rob.
O sistema de direo em robs com duas rodas mais simples que os
demais: consiste no uso de um motor para cada roda, acionando ambos na
mesma direo quando necessrio ir para frente ou para trs. Quando
necessrio realizar uma curva sobre o prprio eixo, necessrio girar um
motor na direo inversa do outro, at completar o grau deseja do da curva.
Estes robs tambm possuem um apoio traseiro, de ponta arredondada,
solta de forma a se orientar na direo que o rob seguir.
O Axel Rover um exemplo de rob com duas rodas. Desenvolvido pela
NASA, o rob permite uma maior versatilidade em seu movimento, e usado
para explorao de terrenos em Marte, em lugares que a Curiosity pode ter
dificuldade de acesso.

26

Figura 9 - O Axel Rover, desenvolvido pela NASA para maior versatilidade na locomoo dos
terrenos de Marte.

No caso de robs com trs rodas, podem existir diferentes formas para o
controle de direo. A forma mais comum se baseia na utilizao de apenas 1
roda para o controle de direo, enquanto outras duas movimentam o rob
para frente ou para trs.
Com quatro rodas, o mais comum haverem duas rodas frontais para o
controle de direo (ambas se movendo para a mesma direo), enquanto as
rodas traseiras so usadas para mover o rob para frente ou para trs.

2.2.2.2 Robs com esteiras


Os robs que baseiam sua locomoo por esteiras so muito utilizados
em terrenos acidentados. Este sistema constitui de uma sequncia de peas de
metal debaixo de uma roda, a fim de permitir um processo contnuo. Para
rotao, as esteiras devem ser acionadas em direes inversas, a fim de girar
o rob no prprio eixo.
Um exemplo destes robs so os modelos EOD-Robots, construdos
para poupar a vida de soldados no campo de batalha. Estes robs so
equipados com esteiras iguais a tanques de guerra, a fim de suportar grandes
pesos em diferentes tipos de terrenos. Alguns destes robs, por exemplo, so
utilizados para o desarmamento de bombas.

27

Figura 10 - O EOD-Robot um exemplo de rob com esteira, construdo para poupar vida de
soldados em batalha.

2.2.2.3 Robs com pernas


Os robs com pernas so os mais complexos a serem desenvolvidos.
Esta categoria pode ser dividida em dois tipos de robs: os bpedes e os
quadrpedes.
Os robs bpedes normalmente so projetados para simular a aparncia
humana. A maior complexidade na projeo destes robs esta no equilbrio do
mesmo, requerendo diversos sensores ativos para mant-lo em p. A
locomoo destes robs baseada no acionamento de uma perna de cada
vez, muito parecido com a locomoo humana.
Entre estes robs esta o Asimo, projetado para ter uma aparncia
humana, e capaz de auxiliar as pessoas nas suas mais diferentes
necessidades.

28

Figura 11 - O Asimo um exemplo de rob com duas pernas, projetado para possuir uma
aparncia prxima da humana.

No caso dos robs quadrpedes (ou com mais pernas), a preocupao


com o equilbrio menor. Para sua locomoo, uma perna dianteira permanece
no cho como apoio, enquanto a outra segue em frente. O mesmo acontece
com as pernas traseiras, mas com os lados trocados.
Um exemplo de rob quadrpede o BigDog, projetado para fins
militares. Este rob capaz de carregar 150 quilos, possibilitando a
movimentao de tropas em diversos terrenos.

Figura 12 - O BigDog um exemplo de rob quadrpede, usado para carregar equipamentos


militares.

29

2.3 Aplicaes da Robtica


A Robotics Industries Association (RIA) descreve um rob como: um
manipulador programvel multifuncional capaz de mover materiais, partes,
ferramentas ou dispositivos especcos atravs de movimentos variveis
programados para realizar uma variedade de tarefas.
No sculo 20 a robtica comeou a tomar fora, por motivos
principalmente industriais pela necessidade de aumentar a produo e
melhorar a qualidade dos produtos, somente em 1961 foi instalado o primeiro
rob industrial Unamites desenvolvido por George Devol e Joe Engleberger.
Atualmente os robs possuem diferentes formas e variadas aplicaes e
podem ser divididos em quatro grandes reas de aplicao: robs industriais,
robs de servio, robs pessoais, robs educacionais.

2.3.1 Robs Industriais


A aplicao mais popular dos robs est nas indstrias, onde possuem a
capacidade de movimentos similares ao brao humano e so aplicados em
trabalhos como soldagem, pintura e outros demais trabalhos de risco.

30

Figura 13 - Exemplo de rob industrial, usado em linha de produo


(http://davidthach.edublogs.org/files/2010/04/INDUSTRIAL-ROBOTS.jpg).

Os AGVs (Automated Guided Vehicle) so exemplos de robs


autnomos, usados para locomoo interna de fbricas, carregando cargas
pesadas, sem a interveno humana.

Figura 14 - Exemplo de rob AGV, que utiliza referncia ptica para locomoo
(http://www.koroberi.com/images/rmt/ADAM_From_RMT_Robotics.jpg).

Para este tipo de navegao autnoma, os AVGs podem ter incluso


diversos tipos de sistemas de referncia, permitindo a deteco de padres de
guias e caminhos. Segundo RAMOS e CALADO (RAMOS, B. RAMOS, R.

31
CALADO, S, Automatic Guided Vehicle), estes sistemas podem ser
classificados da seguinte forma:

Referncia ptica: uma soluo de baixo custo, e muito utilizada.


Consiste na marcao do trajeto atravs de uma linha no cho, e no uso
de sensores pticos para deteco da linha. Isto permite que o rob siga
seu trajeto, sempre identificando a linha por suas caractersticas prprias
(tais como espessura e cor);

Referncia Indutiva: Consiste em condutores metlicos, embutidos no


cho para formar um trajeto, detectvel pelo rob, que utiliza um sensor
magntico. Este sistema vivel, porm, possui maior complexidade em
sua implementao devido a locais que existam muitos materiais
ferrosos ou fontes de campo magntico;

Referncia por Laser: Consiste em refletores espalhados pelo edifcio.


Um sistema emissor/receptor Laser emite e capta as reflexes e
determina continuamente a sua posio. Estes sensores medem a
distncia e o ngulo rob, garantindo sua exata posio;

Referncia Inercial: Utiliza um giroscpio para medio de desvios,


comparando o percurso armazenado na memria do rob. Para seu uso,
so instalados pares de ims no cho ao longo do trajeto desejado, em
distncias regulares;

Referncia por GPS: Utiliza um dispositivo GPS para

saber a

localizao Global do rob. Este tipo de sistema utilizado apenas em


robs que se locomovem em ambientes externos;

2.3.2 Robs de Servio


Desenvolvidos para auxiliar os seres humanos em tarefas especificas
como

na

inspeo

de

tubulaes,

cirurgias

delicadas,

vigilncia

monitoramento, limpeza domstica ou sistemas de defesa. Estes robs foram


feitos para serem usados em conjunto com trabalhos efetuados por seres
humanos, e devido a isto, possuem uma aparncia mais prxima da humana.
Porm, so de custos elevados, devido a possurem diversos tipos de

32
sensores, e manterem sua arquitetura fechada, no permitindo sua modificao
para trabalhos que no estejam previamente programados.
O rob Baxter, da empresa Rethink Robotics, se encaixa neste modelo.
O rob capaz de executar diversas tarefas humanas que exigem repetio.
Para sua automoo, so inclusos diversos tipos de sensores, como detectores
de peso e sensores de proximidade humana. Este rob pode ser usado em
trabalhos como empilhamento e desempilhamento, operao maquinaria,
empacotamento e outras atividades que exijam repetio de esforo.
Outro exemplo de rob de servio o chamado Da Vinci. Desenvolvido
pela empresa americana Intuitive Surgical, o rob capaz de realizar cirurgias
com mais de um instrumento, com incises de poucos milmetros. Este rob
no autnomo, e necessita da operao de um cirurgio, que visualiza em
seu display os locais onde as incises so realizadas.

Figura 15 - O rob Da Vinci, utilizado a servio da medicina (http://2.bp.blogspot.com/-gBVAk6PSHA/T8_pBcX64FI/AAAAAAAABvk/EK7UQ3aMK34/s1600/davinci-robotic-surgery.jpg).

2.3.3 Robs Educacionais


Existem robs que so vendidos com intuitos educacionais, utilizados
em instituies de ensino para que alunos tenham um aprendizado bsico
sobre robtica, ou utilizados para pequenos projetos, normalmente em fases

33
experimentais como um

pequeno

prottipo,

ou

usados em

projetos

acadmicos.
Entre estes robs, esta o ASURO, desenvolvido para propsitos
educacionais pelo Instituto de Robtica e Mecatrnica do Centro Aeroespacial
alemo. Trata-se de um rob simples de baixo custo, muito flexvel, com
estrutura fsica aberta, utilizando a linguagem C como linguagem de
programao.

Figura 16 - O ASURO um pequeno rob com propsitos educacionais


(http://letsmakerobots.com/files/field_primary_image/Asuro_small.jpg).

O ASURO, assim como outras arquiteturas, requer um conhecimento


bsico em eletrnica, necessrio para trabalhar com seus circuitos, alm de
possuir poucos acessrios para comunicao com outros dispositivos,
tornando-o limitado a outras necessidades.
A seguir, seguem detalhes sobre a linha de robs LEGO Mindstorms
NXT, utilizados neste trabalho.

2.3.3.1 LEGO Mindstorms NXT


LEGO Mindstorms NXT foi lanado comercialmente em 2006, resultado
de uma parceria entre o Lab Media do Massachusetts Institute of Technology

34
(MIT) e o LEGO Group. Em 2009, foi lanada a verso 2.0, com diversos novos
recursos, e uma nova variedade de peas.
O LEGO NXT permite que usurios que no tenham familiaridade com a
rea da robtica possam criar prottipos com maior facilidade. Suas peas
possuem encaixes prprios, e seus kits possuem manuais de iniciantes, com
exemplos de modelos a serem construdos.

Figura 17 - O modelo LEGO NXT muito utilizado por usurios que no tenham conhecimento
tcnico na rea da robtica (http://www.tuvie.com/wp-content/uploads/lego-mindstorms-nxt-2.0robots4.jpg).

Os robs do modelo LEGO NXT possuem um componente principal


chamado de Brick. Esta pea retangular concentra toda a parte lgica do
rob, e atravs de entradas para cabos RJ12, pode controlar at 3 motores e 4
sensores conectados a si. Alm disto, a pea ainda possui um pequeno
adaptador interno para conexo Bluetooth, permitindo a troca de informao
com outros dispositivos que tambm possam utilizar comunicao Bluetooth.

35

Figura 18 - O componente "Brick", responsvel pelo controle lgico do rob NXT


(http://www.nxt8547.org/legonxt.jpg).

O firmware para o NXT Open Source, isto , aberta para o


desenvolvimento. Juntamente com o kit de desenvolvimento para o NXT, so
acompanhadas documentaes para desenvolvimento a partir da Brick. So
eles:

Software Developer Kit (SDK), que inclui informaes a respeito do


driver USB e as referncias em bytecode para interpretao da Brick;

Hardware Developer Kit (HDK), que inclui a documentao e a


esquematizao para a Brick e seus sensores;

Bluetooth Developer Kit (BDK), que inclui documentos dos protocolos


usados para a comunicao Bluetooth;

O NXT acompanha um software bsico de desenvolvimento, chamado NXTG. Este software promove a criao de rotinas robticas, atravs do uso de
uma linguagem grfica, onde o usurio pode arrastar blocos de cdigo prontos,
criando uma lgica simples para o rob.
Porm, o NXT-G limitado para qualquer tipo de lgica que no esteja
previamente programada. Devido a isto, existem firmwares criados para
utilizao de outras linguagens para desenvolvimento de aplicaes de controle
do NXT. Entre estas firmwares, esta a leJOS, que permite o uso da linguagem

36
Java para desenvolvimento da lgica do rob. A leJOS ainda inclui uma
biblioteca previamente programada em Java, que auxilia no desenvolvimento
de funes bsicas do rob, como navegao, mapeamento ou locomoo.

Figura 19 - Exemplo de cdigo em Java utilizando LeJOS.

O LEGO NXT possui uma comunidade muito grande de hobbystas e


estudantes que tendem a utiliza-lo para projetos pessoais ou acadmicos. Um
destes exemplos o estudo realizado por cientistas chineses para o
desenvolvimento de um controle autnomo de deteco de obstculos e
correo de trilhas (SHIH, Bih-Yaw. CHEN, Chen-Yuan. CHOU Wei-Chung.
Obstacle avoidance using a path correction method for autonomous control of a
biped intelligent robot, 2010). Neste estudo, um rob do modelo LEGO NXT
utilizado, e atravs do seu sensor de ultrassom, so captadas informaes dos
obstculos a sua frente, a fim de implementar mtodos para o melhor desvio
destes obstculos.
Neste projeto, foi utilizado um rob do modelo LEGO NXT devido a sua
praticidade quanto a montagem de prottipos, alm da possibilidade do
desenvolvimento de cdigos na linguagem Java, e sua capacidade de
comunicao via Bluetooth.

2.4 Automao Robtica


Segundo SOUZA A automao um passou que veio aps a
mecanizao, e constitui no uso de controle de sistemas, comando numrico
(CDC), controladores lgicos programveis (PLC) e informtica (CAD, CAM,
CAx) para controlar maquinaria industrial e processos industriais, reduzindo a

37
necessidade de interveno humana. (DE SOUZA, FELIPPE, Automoo
Industrial e Robtica).
Robs autnomos podem tomar decises e realizar tarefas especificas em
ambientes desestruturados sem a interveno humana. Diferentes tipos de
robs podem ser autnomos em diferentes formas e nveis. Alguns robs em
utilizados em indstrias como da categoria AGV (Automated Guided Vehicle)
possu certa autonomia em ambientes fechados e controlados por marcaes
que transmitem ao rob informaes relevantes para que possa determinar
suas aes.
Existem diferentes tipos de automao, que introduzem tcnicas diferentes
para a realizao de determinada tarefa:

Robs executores: repetem instrues sequenciais, como a pintura ou


soldagem de uma placa;

Robs controlados por sensores: possuem malhas fechadas ou


dispositivos sensoriais que possibilita interao com o meio externo.
Estes robs se baseiam em seus sensores para uma tomada de
deciso, variando dependendo do resultado;

O que se segue so detalhes sobre sensores, e alguns exemplos dos


demais tipos utilizados neste projeto.

2.4.1 Sensores
Os sensores so essenciais em robs autnomos. Eles permitem que
um dispositivo robtico mvel perceba e interaja com o ambiente em que se
encontra.

Normalmente, estes sensores servem para assimilar ao rob os

sentidos humanos (viso, audio, tato, paladar e olfato).


Os robs autnomos se baseiam nas informaes captadas pelos
sensores para auxiliar em sua tomada de uma deciso. Atravs dos sensores,
possvel adquirir informaes sobre o ambiente em que esto, de forma que
possam executar suas aes previamente programadas.

38
Na maioria das vezes, os sensores so utilizados para aes como
deteco de coliso, distncia e desvio de obstculos. Neste projeto, os
sensores utilizados permitiram que o rob pudesse se locomover, identificando
obstculos a sua frente. Alguns destes sensores so detalhados a seguir.

2.4.1.1 Sensor Ultrassnico


O sensor ultrassnico usado para fazer medies precisas entre sua
posio e um objetivo em seu caminho. Tambm possu um emissor e um
receptor. O emissor emite um sinal sonoro que refletido por um objeto e
retorna para seu sensor (receptor), este processo conhecido como eco.
Conhecendo a velocidade do som (344 m/s no ar) possvel determinar a
distncia percorrida na formula abaixo onde v a velocidade do som, t o
tempo de deslocamento e d metade da distncia percorrida.

Frmula 20 Frmula do clculo da distncia feito pelo ultrassom.

Este sensor necessita de um tempo mnimo de processamento para


detectar o sinal sonoro refletido, no possu um longo alcance, algumas
matrias que absorvem a energia sonora diminuem a amplitude do eco e
objetos pequenos, atenuados, moveis, podem contribuir para uma medio
errada.

Figura 20 - Exemplo de um modelo de sensor ultrassnico


(http://kemper.com/wordpress/2011/06/24/red-montando-uma-bancada/)

39
Este sensor utilizado neste projeto para deteco de obstculos a sua
frente. O sensor ultrassnico vivel para diversos tipos de aplicaes
robticas que necessitem de automoo.

2.4.1.2 Laser
Este sensor utilizado para medir a distncia e opera de maneira
parecida com o sensor ultrasnico. A partir da emisso de um feixe de luz
determina a distncia de um objeto a partir da medio do tempo de reflexo
desta luz pelo objeto. Tambm pode ser utilizado junto com espelhos, onde
controla-se o ngulo do espelho at que o feixe atinja o sensor, podendo ento
ser calculada a distncia por triangulao.

Figura 21 - O sensor laser (http://nxt-wiki.rjmcnamara.com/index.php?title=R.J.McNamara).

Este sensor detecta uma distncia maior e mais preciso que o sensor
ultrasnico, pois possu menor disperso no sinal emitido. Contudo a
velocidade da luz mais rpida que a do som, exigindo um processamento
mas rpido o que torna este sistema mais caro.
Este sensor no utilizado neste projeto, uma vez que o sensor
ultrassnico ja utilizado para detectar obstculos. Uma possvel aplicao do
sensor de Laser seria a verificao de que o rob no corra o risco de cair de

40
ambientes mais altos (como degrais, por exemplo). Porm, neste projeto, o
rob dever estar sempre se guiando por trilhas e caminhos seguros,
descartando o uso deste sensor.

2.4.1.3 Receptor GPS


O Receptor GPS (Sistema Global de Posicionamento) tem como funo
determinar a posio sua posio atual, atravs da obteno de informaes
de trs ou mais satlites distribudos ao redor da Terra. Desta forma, possvel
determinar sua localizao atravs do mtodo de trilaterao. O receptor
calcula a diferena entre o tempo que um satlite envia um sinal e o tempo que
o receptor o recebe. Usando as informaes coletadas dentre vrios sinais, o
receptor calcula sua posio por tringulao. Receptores GPS possuem boa
preciso normalmente variando em 15 metros.
O receptor GPS, porm, no consegue identificar posies fixas, como
em lugares indoors. Este sensor s pode ser utilizado para ambientes abertos,
inviabilizando seu uso neste projeto, uma vez que este rob trabalha apenas
em ambientes fechados.

2.4.1.4 Cmeras de vdeo


Cmeras de vdeo so utilizadas para capturar imagens digitais. Usando
este dispositivo junto com a rea da viso computacional possvel extrair
diversas informaes sobre o ambiente, reconhecer padres, cores, fazer
medies.
Neste projeto, utilizado a cmera de vdeo de um celular, a fim de
capturar imagens a frente do rob, permitindo que o mesmo possa tomar
decises baseado nas imagens captadas. Este processo melhor detalhado
nos prximos tpicos.

2.5 Viso Computacional


A viso computacional desempenha papel de grande importncia na
robtica mvel. Quando se pretende utilizar o sentido da viso para a
localizao e navegao, problemas maiores surgem. A integrao de cmeras

41
de vdeo ao j complexo hardware traz complicadores, por exemplo, o
tratamento e processamento destas imagens capturadas vo requerer rotinas
elaboradas para a extrao de informaes teis (Orth, 2001).
Viso computacional, nada mais do que um conjunto de tcnicas e
mtodos que permitem que um sistema consiga interpretar imagens. A
interpretao de uma imagem pode ser representada computacionalmente pela
transformao de um conjunto de dados digitais representando uma imagem
em um conjunto de dados.
O sistema de viso computacional, segundo TRINDADE (Tcnicas de
Viso Computacional para Rastreamento de Olhar em Vdeos, 2009), pode ser
dividido em etapas, classificadas da seguinte forma:

Aquisio da Imagem: O processo de aquisio da imagem feito a


partir de um sensor de viso (como uma cmera, por exemplo), podendo
capturar uma ou vrias imagens sequenciais;

Pr-processamento: Consiste em aplicar mtodos de processamento de


imagem, antes de extrair informaes da mesma. Um exemplo deste
processo a captao de contornos em uma determinada rea da
imagem;

Extrao de caractersticas: Este processo consiste em capturar as


caractersticas

de

uma

imagem

transforma-las

em

modelos

matemticos, como texturas transformadas em matrizes;

Deteco e segmentao: Este processo consiste em detectar uma


regio da imagem, com a finalidade de, por exemplo, detectar regies
semelhantes na imagem;

Processamento de alto nvel: Neste processo, os dados so passados


para mtodos de validao das informaes, para verificao da
satisfao dos dados, alm da classificao dos objetos detectados;

Neste projeto, so utilizadas tcnicas de viso computacional para


processar imagens recebidas a partir da cmera de um celular, e permitir a
tomada de deciso a partir das informaes encontradas, visando determinar

42
um caminho ou trajeto para ser seguido pelo rob. O que se segue so
detalhes das tcnicas de viso computacional utilizadas.

2.5.1 Color Blob Detection


Na area da viso computacional, blob detection se refere a um mdulo
visual para deteco de pontos e regies que diferem em propriedades como
cor ou brilho comparado as regies ao seu redor.
No caso do Color Blob Detection, seu propsito se baseia na
identificao de reas e pontos de determinadas cores. Desta forma, possvel
destacar regies que possuam uma determinada tonalidade da cor vermelha,
por exemplo.
Para que a deteco de regies de cores semelhantes possa ser
efetuada, necessrio transpor a imagem de seu padro de cores RGB, que
se baseia na unio das cores vermelho, verde e azul para formar qualquer
outra tonalidade, para o padro HSV, que se baseia em matiz, saturao e
brilho da mesma. Este procedimento permite separar as cores da imagem com
maior facilidade.

43

Figura 22 - O uso do padro HSV permite dividir melhor as cores em uma imagem
(http://www.shervinemami.info/blobsSkinDetector.jpg).

Muitos robs que necessitam reconhecer padres de cores utilizam


tcnicas de Color Blob Detection, como o caso do Projektairbeit (CUBEK,
2010), capaz de identificar objetos de uma determinada colorao, colocados
em sua base.
Este projeto utiliza o mtodo de Color Blob Detection para construir um
mdulo capaz de reconhecer trajetos lineares, baseados em uma cor
especfica.

2.5.2 Lane Detection


O sistema de Lane Detection nada mais do que uma srie de aplicaes
geomtricas a partir do processamento em cima de imagens. Utilizando estas
tcnicas, possvel estimar a geometria de uma pista a frente, alm de
posicionar o rob em uma relao de distncia quanto a geometria a sua frente
e sua posio atual.

44
O Lane Detection permite destacar visualmente a pista ao qual o rob deve
seguir. Este mesmo processo utilizado para o desenvolvimento de mtodos
de segurana em pistas, alm da reduo do tempo de transporte. Existem
exemplos de implementao do algoritmo de Lane Detection em dispositivos
mveis para um processo automotivo, como o uso de um iPhone para deteco
de pistas (REN, F. HUANG, J. TERAUCHI, M. JIANG, R. KETTLE, R. Lane
Detection on the iPhone), capaz de reconhecer rotas em auto estradas.

Figura 23 - O mtodo de Lane Detection permite o reconhecimento de pistas


(http://ac.utcluj.ro/tl_files/utcn/img/doc_images/image008.jpg).

O primeiro passo para o desenvolvimento da Lane Detection a aplicao


de filtros na imagem, para que a mesma seja transformada para uma escala de
cinzas. Este processo permite mapear a imagem, e transforma-la para uma
linguagem binria, analizando as possveis rotas para deteco.
Para deteco das possveis rotas, o primeiro passo se baseia na deteco
das bordas da imagem. Existem diferentes algoritmos para deteco de
bordas, mas neste projeto, foi o utilizado o Canny Edge Detector. Seu algoritmo
analisa, antes de mais nada, a imagem inteira e seus nveis de cinza,
atribuindo valores para cada um em uma matriz, calculando uma funo para
seus

nveis.
Uma vez que a funo esteja atribuda, calculado a derivada da funo

45
deste sinal, utilizando a funo Gaussiana, para aproximar o operador que
otimiza o produto do raio do sinal e localizao.

Frmula 2 - Derivada da funo Gaussiana

A direo da borda calculada a partir dos gradientes formados entre as


diferenas de cores. O algoritmo de Canny detecta apenas a magnitude das
funes das bordas (identificado pela frmula abaixo), e posteriormente, a
direo da magnitude.
(

Frmula 3 - Frmula para clculo da direo da magnitude

Com os valores de magnitude, o algoritmo de Canny analisa os valores de


mximo e mnimo das funes, para identificar as possveis bordas da imagem.
Uma vez que as bordas foram detectadas, utilizamos o algoritmo de Hough
Transform para detectar as linhas retas da imagem, afim de localizarmos um
caminho em frente (como um corredor, por exemplo, onde as paredes foram
linhas em paralelo). A linha em Hough Transformation dada pela seguinte
equao:

Frmula 4 - Equao para clculo de linhas em paralelo

Com a deteco das linhas retas da imagem processada, necessrio


destacar aquelas que seguem o trajeto necessrio. Para isso, calculado o
chamado Vanish Point, um ponto de fuga da imagem, onde as demais retas
convergem.

46
Com o Vanish Point estabelecido, basta destacar as retas que esto
paralelas e cruzam neste ponto, a fim de estabelecer uma rota para o rob.
O mtodo de Lane Detection utilizado neste projeto a fim de permitir que o
rob

identifique possveis rotas

serem

seguidas, melhorando

seu

desempenho quanto a sua locomoo.

2.6 Smartphone
Um smartphone nada mais do que um celular com capacidades de
processamento superiores, permitindo a execuo de aplicativos e programas
por intermeio de um sistema operacional.
Os smartphones de hoje em dia possuem caractersticas comparveis a
de um notebook, com processadores capazes de executar mltiplas tarefas. O
Samsung Galaxy SIII, por exemplo, o smartphone atual mais poderoso do
mercado, possuindo um processador quad-core de 1.4 Ghz, e at 1Gb de
memria RAM.

Figura 24 - O Galaxy SIII o atual smartphone mais potente do mercado


(http://www.portaltech.blog.br/wp-content/uploads/2012/07/Galaxy-S-III-1.jpg)

A principal caracterstica dos smartphones a possibilidade de


desenvolvedores criarem seus prprios aplicativos, e poderem distribui-los nas

47
plataformas vigentes de cada sistema operacional. Para isto, cada sistema
possui seu prprio kit de desenvolvimento (SDK), permitindo que haja o
desenvolvimento de aplicaes para aquela plataforma.

2.6.1 Android
O Android o sistema operacional da Google, feito para smartphones. Sua
principal caracterstica esta no fato de ser um software livre para uso,
permitindo que diferentes tipos de smartphones a integrem. Por possuir um
kernel baseado no sistema Linux, o Android se tornou um dos sistemas
favoritos entre os desenvolvedores, que passaram no s a se forcar no
desenvolvimento de aplicaes, mas tambm no desenvolvimento de novos
recursos para o sistema.
Desde sua primeira verso, lanada em 2008, o Android se tornou o
principal concorrente do iOS, o sistema operacional mobile da Apple. Devido a
esta concorrncia, o sistema vm recebido diversas atualizaes, trazendo
novos recursos, alm de melhorias em seu sistema. Sua atual verso, a 4.2
(chamada de Jelly Bean), traz melhorias na performance da CPU, alm de
reduo na latncia do toque e a possibilidade de um buffering triplo.
O desenvolvimento de aplicaes para o Android feitas a partir da
linguagem Java, utilizando o kit de desenvolvimento para o sistema, integrado
com uma IDE de desenvolvimento Java, como o Eclipse. Os desenvolvedores
possuem liberdade para testarem seus aplicativos em seus prprios
dispositivos, desde que os mesmos utilizem o Android como sistema
operacional. Para distribuio, o Android disponibiliza sua loja virtual, chamada
de Google Play, onde os desenvolvedores podem distribuir seus aplicativos
livremente, podendo ou no atribuir preos de compra para os mesmos (caso
isto seja feito, o Google recebe uma porcentagem para cada venda do
aplicativo).
O desenvolvimento interno utilizando o SDK para Android utiliza um
conceito chamado MVC (model view controller), permitindo dividir a
codificao em camadas distintas.

48

Figura 25 Arquitetura MVC usada nas aplicaes Android


(http://www.androidbrasilprojetos.org/wp-content/uploads/2011/06/MVN-ANDROID-300x211.gif)

A execuo dos cdigos no Android so geralmente atribudas dentro de


Activitys, classes que so executadas junto com a interface. Para cada tela
dentro de uma aplicao Android, existe uma Activity que garante sua
execuo.
Este projeto utiliza o sistema Android como base para o desenvolvimento de
uma aplicao de controle do rob. A escolha do sistema se deu por alguns
motivos. Entre eles, pelo uso de Java como principal linguagem para
desenvolvimento de aplicaes, alm da facilidade da execuo da aplicao
diretamente no dispositivo.

49

3. Sobre o Projeto
Este captulo aborda questes sobre o desenvolvimento do projeto, sua
concepo, arquitetura, dificuldades e solues encontradas.

3.1

Concepo
O projeto deu incio com a ideia do desenvolvimento de um rob capaz

de se locomover autonomamente. Este tipo de soluo pode ser utilizado em


diversos problemas da sociedade, como por exemplo, uma forma de auxiliar
deficientes visuais a se locomoverem em ambientes fechados, guiando-os at
seu destino.

Figura 26 - O projeto pode ser utilizado para orientao de pessoas com deficincia visual a se
locomoverem em ambientes fechados, como universades e outros espaos.

A ideia da utilizao de um dispositivo mvel como a principal fonte de


processamento e interao com o mundo externo surgiu pelo prprio interesse
do desenvolvimento com uso da plataforma Android. O celular deve estar
conectado ao rob, utilizando sua cmera para visualizar o caminho a sua
frente, tomando decises a partir do processamento das imagens captadas.

50

Figura 27 - O celular ficar a frente do rob, captando suas imagens e as processando para
determinar suas aes.

desenvolvimento

do

projeto

foi

dividido

em

trs

partes:

desenvolvimento do prottipo do rob, desenvolvimento de uma aplicao de


controle e desenvolvimento da autonomia do rob.

3.2 Montagem do rob


O modelo escolhido para o prottipo do rob foi o LEGO NXT, disponvel
para uso acadmico, e de fcil manuteno e operao. Este modelo de rob
possui uma nica pea principal, chamada de Brick, responsvel pela
embarcao de cdigo, e envio de sinal aos demais perifricos conectados a
ele, como motores e outros sensores.
A arquitetura do rob semelhante ao prottipo do Tribot da LEGO, com
algumas modificaes. Existem dois motores, localizados em cada parte da
pea principal, e so responsveis pela locomoo do rob. Para movimentar o
rob para frente e para trs, basta acionar os motores na mesma direo e

51
velocidade, enquanto possvel faze-lo girar em seu prprio eixo, acionando os
motores em direes diferentes.

Figura 28 - Prottipo final do rob utilizado neste projeto

Alguns eixos foram adicionados para suporte da pea, alm de uma roda
traseira, conectada apenas por uma aste, que fica solta para garantir o suporte
do rob.
A frente do prottipo, foi construdo um suporte para encaixe do
smartphone, de forma que a cmera do disposto fique sempre voltada a sua
frente.

52

Figura 29 - O rob suportado por uma aste traseira, e possui um suporte a sua frente, a fim de
segurar o smartphone.

3.3 Desenvolvimento da aplicao de controle


O processamento lgico do rob deve ficar por conta do smartphone.
Para isto, foi desenvolvido um aplicativo para o sistema Android, com a funo
de gerenciar todo o processamento necessrio para realizar a autonomia do
rob. Desta forma, o smartphone passa a processar as informaes, enquanto
o rob fica apenas com a funo de receber intrues de locomoo. O
desenvolvimento desta aplicao foi realizado a partir da IDE do Eclipse,
juntamente com o SDK de desenvolvimento para Android.
Para que o celular e o rob se comuniquem, a aplicao deve se
conectar ao rob utilizando a tecnologia Bluetooth, para que haja troca de
informaes. Neste caso, a aplicao deve habilitar o suporte bluetooth do
celular, conectando-se ao sinal do rob, enviando e recebendo informaes.
A comunicao entre os sensores digitais e a Brick feita utilizando o
protocolo IC. O Hardware Developer Kit (LEGO, 2006) diz que cada sensor
tratado como um dispositivo de memria e cada transao tratada como
leitura ou escrita em uma posio da memria.
Cada sensor digital possu dois tipos de endereos:
1. Um endereo IC nico para cada sensor digital.

53
2. Um endereo interno para leitura ou escrita.
A documentao "Appendix 7-LEGO MINDSTORMS NXT Ultrasonic
Sensor I2C communication protocol" do sensor ultrassnico IC protocolo de
comunicao, diz que seu endereo IC definido como padro 0x02 e o
pacote deste protocolo composto por 3 bytes sendo:

Figura 30 - Pacote de informaes de envio do protocolo I2C

Com este protocolo possvel estabelecer um meio de comunicao


entre a Brick e o sensor Ultrassnico.
Para a comunicao entre o celular e a Brick, utilizamos o protocolo LCP
(Lego Communication Protocol). O LCP um protocolo de comunicao,
utilizado estabelecer a comunicao entre a Brick e dispositivos terceiros como
Celulares, Computadores (PC's), entre outros, e sua documentao esta
descrita em "LEGO MINDSTORMS NXT Bluetooth Developer Kit".
Para a comunicao via Bluetooth definido o seguinte padro de
pacote a ser enviado:

Figura 31 - Protocolo de envio de informaes Bluetooth

Os dois primeiros bytes so utilizados especialmente para comunicao


via Bluetooth e dizem informaes sobre o tamanho do pacote esperado pelo
receptor, leia a documentao em "Appendix 2-LEGO MINDSTORMS NXT
Directcommands" e "Appendix 1-LEGO MINDSTORMS NXT Communication
protocol", para aprender sobre as possibilidades de entrada em cada byte no
pacote.

54
Com o protocolo de comunicao especificado, foi possvel enviar
instrues para locomoo do rob atravs do celular. Com esta base, foi
possvel desenvolver os prximos mdulos de controle do rob.
A aplicao de controle possui uma interface simples, e necessita da
interao inicial do usurio para conexo com o rob. Para tal, ao abrir o
aplicativo, o usurio tem a opo de pressionar o boto Conectar, acionando
o dispositivo bluetooth do celular e pesquisando pelos demais dispositivos
bluetooth prximos.

Figura 32 - Tela inicial e tela de pesquisa de dispositivos via bluetooth

Aps encontrar os dispositivos prximos, o usurio tem a opo de


selecionar a opo equivalente ao rob do modelo NXT, desde que o mesmo
esteja na lista. Ao fazer isto, o celular passa a se conectar com o rob, e exibe
a lista de seus possiveis mdulos de controle do rob.

55

Figura 33 - Tela de escolha do mdulo de controle.

O desenvolvimento desta aplicao utilizou conceitos MVC (model view


controller) para arquitetura do software, conforme pode ser visto na imagem
abaixo.

56

Figura 34 Arquitetura de classes do projeto.

57

3.3.1 Mdulo de controle manual


Para fins de controlar manualmente o rob, foi desenvolvido na
aplicao de controle um pequeno mdulo que permite que o usurio controle a
movimentao do rob atravs da interao com smartphone. Ao selecionar a
opo de controle manual, uma tela exibida com 4 botes dispostos, cada
qual indicando uma possvel ao do rob, onde o usurio pode movimenta-lo
para frente ou para trs, alm de poder gira-lo para a esquerda ou para a
direita.

Figura 215 - Atravs do controle manual, o usurio tem a opo de controlar o rob atravs da
interao com os botes do aplicativo.

Para cada boto pressionado, uma instruo enviada para o rob via o
canal Bluetooth, indicando a ao desejada. Este processo permitiu o
mapeamento das instrues a serem passadas para o rob, alm de permitir
testar suas funes bsicas de locomoo, arquitetando mtodos padres para
estas aes.

3.3.2 Mdulo de controle autnomo


O mdulo de controle autnomo do rob composto do funcionamento
de 3 sub-mdulos, que demandam da utilizao
computacional.

de tcnicas de viso

58
A proposta deste projeto considerou o desenvolvimento da autonomia do
rob de uma forma que o ambiente em que ele atuasse no sofresse muitas
adaptaes para seu funcionamento. Devido a isto, o uso de tcnicas de viso
computacional foram de extrema necessidade, fazendo com que o rob
consiga detectar seu caminho sem muita dificuldade. Com os 3 sub-mdulos
atuando juntos, a aplicao de controle capaz de identificar rotas e caminhos
a serem seguidos pelo rob.
O desenvolvimento destes mdulos utilizam de recursos da biblioteca
OpenCV. Ela permite realizar tratamentos especficos em imagens, variando
entre filtros, calibrao de cmera, reconhecimento de objetos e outros
recursos.
Ao selecionar a opo de controle autnomo a partir da aplicao de
controle, a mesma passa a exibir uma nova tela com as imagens capturadas
diretamente da cmera do smartphone.

Figura 36 - Aps selecionar o uso do mdulo de controle autnomo, o aplicativo passa a exibir as
imagens captadas pela cmera do smartphone.

Cada um dos sub-mdulos operantes possui como entrada uma imagem


capturada a partir da cmera do celular. A cada segundo, a cmera captura um
nmero variante de imagens, compatveis com a capacidade da mesma. Os

59
mtodos do OpenCV permitiram processar a imagem de cada quadro
capturado, aplicando filtros ou detectando padres.
A atuao de cada mdulo detalhada melhor na imagem abaixo.

Figura 37 Arquitetura do funcionamento dos submdulos constituintes do controle autnomo.

O que se segue so detalhes de cada um dos mdulos que constituem o


controle autnomo do rob.

3.3.2.1 Mdulo de deteco de linhas por cores


O mdulo de deteco de cores e linhas foi desenvolvido com o
propsito de permitir que o rob detecte um trajeto ou caminho especfico a ser
seguido, como por exemplo, uma guia de piso tctil para portadores de
deficincia visual. Estes caminhos devem sempre ter uma cor especfica,
permitindo que o rob consiga rastrea-la.

60
Este mdulo de deteco de linhas por cores utiliza mtodos de Color
Blob Detection. Utilizando a interao do smartphone, o usurio pode
selecionar um ponto especfico da tela. Ao fazer isto, utilizamos o mtodo
inRange do OpenCV para detectar uma cor especfica, escolhida pelo usurio,
passando uma imagem nos padres HSV para o mtodo. Este mtodo retorna
uma imagem binarizada, onde os pontos que contm a cor esto na faixa de
cores HSV.

Figura 38 - O retorno do mtodo inRange uma imagem binarizada, com as cores no padro HSV.

A partir do momento em que existe uma cor selecionada, utilizamos os


mtodos da biblioteca OpenCV para encontrar os contornos na imagem
processada, utilizando o algoritmo Suzuki85 (Suzuki, Z. 1985). Com o mtodo
findCountours, podemos facilmente localizar os contornos de uma rea com
uma variao da cor selecionada.
O mtodo findContours permite encontrar os contornos ao redor das
reas baseadas na cor selecionada. Para cada contorno encontrado, utilizamos
um filtro que considera apenas as reas que possuem uma rea maior que
10% da maior regio encontrada. Isto permite eliminar pontos e pequenos
locais expostos na rea de viso da cmera.

61
Este mdulo permite que a cmera do celular detecte uma linha no cho,
ou em especfico, um trajeto a ser seguido. Para tal, desenhamos um trajeto
em uma cor visvel para a cmera do celular, possibilitando a deteco do
contorno. Sendo assim, a partir do momento em que o usurio pressiona o
dedo em cima da linha na tela do celular, o algoritmo passa a exibir os
contornos ao redor do caminho desenhado.

Figura 39 - Com o uso do mtodo findCountours permite encontrar os contornos ao redor das
reas da cor escolhida.

Baseado nos contornos encontrados a partir do filtro, o algoritmo calcula


a quantidade de pontos localizados a esquerda e a direita do meio da tela. Esta
quantidade de pontos permite calcular a velocidade de cada motor do rob,
definida da seguinte forma:

62

3.3.2.2 Mdulo de deteco de pistas


Atravs do mdulo de deteco de pistas, o rob consegue identificar
possveis rotas a sua frente, de uma forma a se adaptar melhor a ambientes
diferentes. Este mdulo detecta locais que tenham caractersticas de uma
pista, e passa a locomover o rob em frente, na direo da convergncia da
mesma.
Este mdulo de deteco de pistas utiliza mtodos de Lane Detection. O
primeiro procedimento no algoritmo transformar a imagem capturada pela
cmera para uma escala de cinza. Este processo feito atravs do mtodo
cvtColor da biblioteca OpenCV.

Figura 40 Aplicao do filtro de escala de cinza utilizando o mtodo cvtColor.

Com a imagem em escala de cinza, aplicado um filtro de blur, a fim de


remover os demais rudos da imagem, deixando-a mais suave. Para isto,
utilizado o mtodo blur do OpenCV.

63
Em seguida, utilizado o filtro de Canny, a fim de detectar as bordas da
imagem. Utilizando o mtodo Canny da biblioteca OpenCV, possvel obter o
retorno da imagem com suas bordas destacadas.

Figura 41 Aplicao do filtro de Canny.

Por questes de controle do rob e melhor deteco da pista a frente, a


imagem foi dividida ao meio, em uma metade esquerda e outra direita. Para
cada parte, aplicado o mtodo de Hough, atravs do uso do mtodo
HoughLines do OpenCV. Desta forma, so obtidos os ngulos das possveis
retas detectadas, descritas pelo ngulo e distncia do centro da imagem
(coordenada 0, 0).

Figura 41 Possveis ngulos das retas detectadas pelo mtodo de Hough.

64
Com o retorno do mtodo HoughLines, so obtidos os pontos que foram as
retas, a fim de desenha-las na tela, para identificao das rotas.

Figura 42 O retorno do mtodo HoughLines permite exibir as linhas das possveis rotas.

Em seguida, necessrio realizar um filtro em cima das retas


encontradas, a fim de destacar a rota a ser seguida. Para isto, o algoritmo se
baseia na coordenada x de cada reta com o limite inferior da cmera,
selecionando a interseco que estiver mais prxima do centro da tela.

65
Figura 43 Deteco de uma possvel rota.

Quando pelo menos uma das retas que formam a pista encontrada,
calculado a velocidade de cada motor do rob, possibilitando sua locomoo.
Esta velocidade dada pela seguinte frmula:

(
(

)
)

(
(

)
)

3.3.2.3 Mdulo de deteco de smbolos


O mdulo de deteco de smbolos permite que o rob consiga
determinar quando chegou a seu destino. Seu propsito esta na deteco de
diferentes smbolos em seu trajeto, parando sua lomoo quando encontrado o
smbolo desejado (indicando a chegada na posio desejada).
Este mdulo faz um pr-processamento parecido com o do mdulo de
deteco de pista. A partir da imagem capturada pela cmera, aplicado um
filtro para transformar a imagem em escala de cinza, e utilizado o mtodo
findContours para deteco dos contornos, porm, com uma faixa de cores hsv
diferente da utilizada no mdulo de deteco de pistas.

66

Figura 44 Deteco dos contornos de uma circuferncia.

Com os contornos encontrados, realizado uma filtragem para deteco


de smbolos circulares. Para tal, utilizado o mtodo arcLenght da biblioteca
OpenCV, a fim de se obter o tamanho do contorno, e compara-lo se o mesmo
possui o tamanho de 2.

Figura 45 Aplicao do filtro para deteco de smbolos circulares.

Para fins de mobilidade, o algoritmo consegue identificar mltiplos


crculos. A partir disto, basta identificar o local de parada por um nmero
especfico de smbolos.

67

4. Resultados
Neste projeto, foram construdos diversos tipos de prottipos para a
validao da tecnologia implementada. O prottipo inicial se baseou na
utilizao do mdulo de controle manual, onde a partir da interao do
smartphone, pudemos controlar o rob na direo desejada. Um dos
problemas encontrados neste mdulo foi o tratamento da conexo bluetooth.
Caso a mesma no fosse fechada corretamente aps seu uso, a aplicao
passava a exibir mensagens de erro, impossibilitando seu uso em diante.
Com o prottipo inicial fechado, foi possvel trabalhar no desenvolvimento
da autonomia do rob. O mdulo de deteco de linhas por cores foi
desenvolvido com o propsito da deteco de trajetos e rotas baseado em
cores especficas. Na primeira verso deste mdulo, o aplicativo acionava
ambos os motores em uma velocidade constante sobre a linha, girando sobre o
prprio eixo quando a necessidade de realizar curvas.
Para fins de testes, foram impressos trajetos de linhas pretas, para que o
rob conseguisse se locomover. O rob conseguiu se locomover em linha reta
como esperado quando identificado a rota, porm, teve problemas quando o
trajeto possua curvas, ou o rob sasse de uma trajetria linear. Desta forma,
foi identificado a necessidade de regular a velocidade dos motores baseado no
nmero de pontos encontrados no trajeto, garantindo uma melhor locomoo
do rob.
Com o desenvolvimento do mdulo de deteco de pistas, a movimentao
do rob passou a garantir melhores resultados, se locomovendo com uma
maior preciso, especialmente nas curvas. Quando ambos os mdulos atuam
juntos, o rob atingiu maiores velocidades, sem perder sua rota no trajeto.
O desempenho da locomoo do rob tambm influenciado pela luz
ambiente. Em alguns testes, houveram objetos de cores similares ou iguais a
cor da rota utilizada, onde o rob identificou alguns pontos de semelhana, e
perdendo seu trajeto. Isto se tornou comum quando a rota utilizou de cores
escuras, prximas da cor preta, e com um ambiente com uma grande

68
concentrao de sombras. Para tal, foram utilizadas cores claras para a
confeco de um trajeto para testes.
O mdulo de deteco de smbolos permite que o rob consiga identificar
quando chegar a seu caminho. A princpio, este processo seria realizado via o
reconhecimento de QR Code, porm, foi identificado uma maior complexidade
neste processo, e comparado ao tempo final de entrega do projeto, a
identificao de smbolos utilizando a biblioteca OpenCV se tornou uma sada
vivel. Desta maneira, o rob pra ao identificar um nmero de crculos prdeterminados.

69

5. Concluso
O objetivo do projeto foi alcanado com xito. Este consistia no
desenvolvimento da autonomia robtica baseando-se na integrao de um
smartphone com sistema Android, utilizando sua cmera como o principal
sensor externo.
As demais etapas do desenvolvimento foram concludas completamente. A
primeira etapa consistia no desenvolvimento de uma aplicao para o sistema
Android capaz de mandar instrues para locomoo do rob. Nesta etapa, foi
identificado a necessidade da construo de um protocolo de comunicao
com o rob, a fim de que as instrues enviadas via o canal Bluetooth
possibilitasse acionar os motores do rob.
A segunda etapa consistiu no desenvolvimento da locomoo autnoma do
rob. Para tal, foram pesquisados mtodos para seguimento autnomo, e
identificado a necessidade da identificao de uma trajetria. Desta forma,
foram aplicadas tcnicas de viso computacional, utilizando a biblioteca
OpenCV, a fim de construir os mdulos de deteco de cores (para trajetrias
previamente marcadas) e identificao de pistas (para localizao de
ambientes de locomoo, como corredores). Estes mdulos demandaram um
maior tempo de desenvolvimento, devido suas complexidades e ajustes para
adaptao dos mtodos ao projeto.
A ltima etapa consistiu no desenvolvimento de um sistema de
reconhecimento de smbolos, necessrio para indicar aplicao de controle a
chegada do rob a seu destino. De incio, foi proposta a idia de
desenvolvimento de um sistema reconhecedor de QR Codes, porm, devido a
complexidade e tempo escasso para desenvolvimento deste mdulo, foi
desenvolvido um sub-mdulo capaz de reconhecer crculos, identificando sua
chegada com um nmero pr-determinado destes smbolos.
Este projeto abre novas possibilidades para caminhos da robtica,
integrando o celular Android como uma fonte principal de processamento,
possibilitando utilizar seus recursos para abrir novas possibilidades a robs.

70
Alm disto, tambm impe uma soluo de baixo custo para sistemas de
automao robtica, permitindo o uso de linguagens de baixo nvel para seu
desenvolvimento, como a linguagem Java.

5.1 Trabalhos futuros


Como trabalhos futuros, sugere-se aprimorar as tcnicas de viso
computacional, para permitir que o rob consiga se adaptar a novos ambientes
fechados, como faculdades e outros locais pblicos.
Tambm se sugere a implementao de novos recursos, como a
possibilidade de locomoo em ambientes abertos, utilizando o GPS como
sensor externo, aproveitando a utilizao do mdulo de lane detection para
locomoo autnoma.
O rob tambm pode sofrer adaptaes em sua estrutura, para melhor
locomoo, com a incluso de novos sensores para permitir a interpretao do
mundo externo. Entre elas, a incluso do sensor ultrassnico para identificao
de obstculos a frente, alm do sensor laser, para permitir deteco de
degraus a frente.

71

6. Bibliografia
DA SILVA, LUCIANO ROTTAVA. Anlise e programao de robs mveis
autnomos na plataforma Eyebot. Disponvel em:
<http://www.das.ufsc.br/~rottava/download/dissertacao.pdf>.
DE SOUZA, FELIPPE. Automao Industrial e Robtica. Disponvel em:
<http://webx.ubi.pt/~felippe/texts3/autom_ind_cap1.pdf>.
BROOKS, R. A., Achieving Artificial Intelligence Through Building Robots, MIT
AI Lab Memo No. 899, May 1986. Disponvel em:
<http://people.csail.mit.edu/brooks/papers/aim-899.pdf>
http://www.newtoncbraga.com.br/index.php/robotica/4018-rp0001.html
http://asimo.honda.com/
RAMOS, B. RAMOS, R. CALADO, S, Automatic Guided Vehicle. Disponvel
em: < http://users.isr.ist.utl.pt/~pjcro/cadeiras/api0405/pdf_files/G03_SEM.pdf>
http://thenxtstep.blogspot.com.br/
http://mindstorms.lego.com
SHIH, Bih-Yaw. CHEN, Chen-Yuan. CHOU Wei-Chung. Obstacle avoidance
using a path correction method for autonomous control of a biped intelligent
robot. 2010.

CUBEK, RICHARD. A Color Blob Based Robot Vision, 2010. Disponvel em:
<http://amser.hsweingarten.de/cms/administrator/components/com_intranet/uploads/paper/70/p
a_cubek.pdf>.
[2] MELO, Leonimer Flvio de. Proposta de Simulador Virtual para Sistemas
de Navegao de Robs Mveis Utilizando Conceitos de Prototipagem Rpida,
2007. 293p. Tese (Doutorado) Faculdade de Engenharia Mecnica,
Universidade Estadual de Campinas, Campinas.

72
Orth, A. Desenvolvimento de um sistema de viso para medir o desgaste de
anco de ferramentas de corte. Dissertao de Mestrado, Universidade Federal
de Santa Catarina, 2001.
REN, F. HUANG, J. TERAUCHI, M. JIANG, R. KETTLE, R. Lane Detection on
the iPhone
Suzuki, S. and Abe, K., Topological Structural Analysis of Digitized Binary
Images by Border Following. CVGIP 30 1, pp 32-46 (1985)

Você também pode gostar