Artigo número 100: AR.Drone - O robô voador com Linux embarcado

Como este é o artigo número 100 no Viva o Linux, procurei escolher um assunto bem bacana e emergente. Nada melhor que o AR.Drone, que envolve programação, Linux, vídeo captura com visão computacional. Veremos neste documento algumas maneiras de dominar este brinquedo.

[ Hits: 35.403 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 02/09/2011 | Blog: http://assuntonerd.com.br


O desenvolvimento: hora do PAU!



O AR.Drone, além de possuir Linux embarcado, disponibiliza um SDK com o código fonte completo. A partir dai surgiram diversas opções para programá-lo nas mais variadas linguagens de programação. Estou desenvolvendo um biblioteca de alto nível, mas não vou esperar terminá-la para escrever este texto. Mesmo porque estou cada vez mais atarefado...

Mencionarei neste documento 3 de inúmeras opções para dominar o AR.Drone no que tange a programação e desenvolvimento de soluções com esta aparelho. O SDK oficial, o linguagem URBI e uma iniciativa que permite programa o AR.Drone junto a tecnologia de visão computacional openCV. Viva \o/

Um breve resumo como funciona o AR.Drone:

O desenho abaixo resume bem a arquitetura de funcionamento do AR.Drone. A desaceleração em cada uma das hélices deriva em um determinado resultado. Sem contar no senso ultrassônico e para requintar as câmeras (inferior e frontal).
Fica aqui a minha primeira dica: inicialmente conseguia conectar apenas com o meu iPad, isto pelo fato do AR.Drone gravar o mac-address do primeiro equipamento conectado. Para conectar outros dispositivos, foi preciso efetuar um telnet no brinquedo e modificar o arquivo config.ini e alterando o parâmetro owner_mac para zero.

owner_mac = 00:00:00:00:00:00

Existem inúmeros software para o iPhone, iPAD, Android e Nokia. Ressalto que no SDK, encontramos os respectivos exemplos para brincar. Não dá para detalhar o desenvolvimento em todas as plataformas em apenas uma artigo, então ficar para os próximos os assuntos referente à programação. Abaixo um resumo básico das configuração do AR.Drone.

Tilt:

Praticamente ajusta a velocidade horizontal, porém não devemos esquecer da sensibilidade do acelerômetro que interfere nesta aceleração.
VerticalSpeed:

Como o próprio nome diz, define velocidade Vertical e claro, por consequência o sobe e desce do aparelho.
Yam Speed:

Define a velocidade de rotação, ou seja sentido horário ou anti-horário (esquerda ou direita).

Download e instalação do AD.DRONE open API

O SDK oficial devemos obter em:
Lá encontraremos a última versão do SDK fórum de discussão entre informações técnicas. Após o download, descompacte os fontes com o comando tar -zxvf conforme o exemplo abaixo.

tar -zxvf ARDrone_SDK_Version_1_8_20110726.tar.gz
$ cd ARDrone_SDK_Version_1_8_20110726/Examples/Linux
$ make


Pronto, nesta etapa o SDK e as bibliotecas estão compiladas a pronto para uso, porém começaremos com algumas dicas.

Para conectar com o AR.Drone, coloque a sua interface de rede em modo Ad-Hoc, informe o nome da rede, desabilite a criptografia e defina o IP.

iwconfig wlan0 mode Ad-Hoc essid [Nome-Rede] key off
$ ifconfig wlan0 192.168.1.5 netmask 255.255.255.0 up


Agora para testar o programa exemplo, entre na pasta Examples/Linux e execute o binário ardrone_navigation.

cd Examples/Linux/
$ ./ardrone_navigation
Se tudo estiver funcionando corretamente, teremos o lindo formulário e/ou painel acima. Clique em "USB Configuration" para mapear os controles do joystick, wiimote, teclado ou outro dispositivo. Ressalto que para tudo funcionar corretamente, devemos alterar o código-fonte inserindo o número do device obtido com o comando lsusb e o respectivo mapeamento.

Para visualizar o vídeo das câmeras do ARDrone, entre na opção "Show Drone Vídeo", finalizando para define a configuração de voo, clique em "Flight control settings". Abaixo algumas ilustrações:
URBI e AR.Drone:
A Gostai, uma empresa francesa especialista em robótica desenvolveu em código aberto um sistema operacional para robótica, compatível com o Linux, Windows, e vários outros sistemas operacionais em tempo-real, e utiliza uma linguagem de script para orquestração chamada urbiscript, que integra naturalmente paralelismo e programação baseada em eventos.

Esta plataforma de software está disponível para prover funcionalidade para uma ampla gama de dispositivos, incluindo o cachorro-robô da Sony, o Aibo, o Segway, o Lego Mindstorms NXT, AR.Drone e muitos outros. Mais detalhes, sugiro entrar no site Urbi Forge . Partiremos agora para o para o download e instalação desta opção.

Efetue o download e descompactação do pacote:

wget http://www.psykokwak.com/blog/images/ardrone/urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0.tar.bz2
tar -jxvf urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0.tar.bz2
$ cd urbi-sdk-2.3-linux-x86-gcc4-ardrone-1.0/
$ sh start


Se você estiver conectado com o ARDrone e tudo estiver funcionando corretamente, teremos o seguinte resultado no console. Isto significa que estamos prontos para enviar comando para o ARDrone, como o foco deste artigo é demonstrar as opção disponíveis, deixarei a parte de programação para o próximo documento.

Deixo aqui apenas a observação para ficarmos atento ao urbi específica no arquivo start, pois é ele que determina que módulo será executado e por consequência o comportamento do AR.Drone.

[00000121] *** ********************************************************
[00000121] *** Urbi SDK version 2.3 rev. 9a84600
[00000124] *** Copyright (C) 2005-2010 Gostai S.A.S.
[00000124] ***
[00000124] *** This program comes with ABSOLUTELY NO WARRANTY. It can
[00000124] *** be used under certain conditions. Type `license;',
[00000124] *** `authors;', or `copyright;' for more information.
[00000124] ***
[00000124] *** Check our community site: http://www.urbiforge.org.
[00000124] *** ********************************************************
[00000152] ARDrone_0x83f7130
before setLocale()
before ardrone_tool_setup_com(NULL)
before ardrone_tool_init(...)
Starting thread navdata_update
Starting thread ardrone_control
before ardrone_input_add(NULL)
Input device myControl added
Thread navdata_update in progress...
Starting thread my_video
Thread navdata_update in progress...
Video stage thread initialisation

A interface RAD da empresa Gostai foi o que mais me impressionou, pois com ela é possível arrastar os componentes e montar a sua interface gráfica com apenas alguns cliques. O download deve ser efetuado no link abaixo, logo após descompacte o arquivo e execute o script GostaiLab.sh.

Download:
sh gostai-lab-2.5-linux.sh
$ cd gostai-lab-2.5-linux/bin
$ ./GostaiLab.sh


A interface é muito intuitiva, com o script urbi balltracking.u configurado no arquivo start mencionado anteriormente, elaborei uma prova de conceito onde o AR.Drone acompanha o coração vermelho do pinguim.

Para finalizar, Cutedrone

Cutedrone é uma biblioteca escrita em C++ para comunicação com o AR.Drone. Escrita em QT/C++ a biblioteca proporciona uma exemplo em python que permite movimentar o AR.Drone com a face. Mais informações aqui e neste link um vídeo demonstrativo...
Vou encerrar aqui e deixar o tópico desenvolvimento para um próximo documento. Pois além de ficar extenso, quero também publicar as minhas evoluções atuais envolvendo visão computacional. Sendo assim, espero que este texto superficial seja o suficiente para direcionar os entusiastas que desejam dominar o brinquedo chamado AR.Drone... Como sempre menciono... Colaborar atrai amigos, competir atrai inimigos...

Para finalizar, críticas e sugestões: cabelo@opensuse.org
Sobre o autor: http://www.netitec.com.br/alessandro

Página anterior    

Páginas do artigo
   1. Introdução
   2. O desenvolvimento: hora do PAU!
Outros artigos deste autor

Hbasic, um forte candidato open source para brigar com o Microsoft Visual Basic

Instalando o poderoso banco de dados IBM DB2!

Fim da era PC: Transformando o seu celular em computador de mesa!

Como fazer um servidor de rádio virtual

CUDA: Programe a sua NVIDIA

Leitura recomendada

Configurando impressora HP692C no Slackware

Os segredos dos modems

Firmware dd-wrt em Linksys WRT54G

Instalando placa de captura de TV no Linux

Medindo a temperatura da CPU na PCCHIPS M810 e outras placas

  
Comentários
[1] Comentário enviado por removido em 02/09/2011 - 14:29h

Grande cabelo !!!

Sempre com suas experiências .... Me divirto lendo teus artigos !

Show de Bola.


Abração.

[2] Comentário enviado por warlocksn em 02/09/2011 - 15:38h

Caraca, adorei o artigo!!

muito massa!!!

vlw

[3] Comentário enviado por cesar em 02/09/2011 - 16:25h

Uma palavra para definir tudo isso: SHOW!!!!!!!

Parabéns @cabelo, excelente artigo!

[]'s

[4] Comentário enviado por julio_hoffimann em 02/09/2011 - 18:15h

Parabéns Alessandro!

100 artigos, ufa! Todos de ótima qualidade.

Abraço!

[5] Comentário enviado por pinduvoz em 04/09/2011 - 19:45h

"The difference between men and boys is the price of their toys" (rsrs).

[6] Comentário enviado por f_Candido em 04/09/2011 - 20:53h

Meu,

Show de bola. Nota Mil.

[7] Comentário enviado por dailson em 06/09/2011 - 14:46h

Show de bola cabelo!

parabéns!

[8] Comentário enviado por removido em 07/09/2011 - 18:48h

O brinquedo é caro, heim! rs ( http://va.mu/Ezky )
Vejam o vídeo no site do Mag. Luiza. Legal!

Interessante o fato de estar com Linux embarcado.
Diversão garantida na certa.

[9] Comentário enviado por mcnd2 em 12/09/2011 - 16:46h

Muito loko!

Pena que o brinquedinho ta salgado.

Mais que é divertido brincar com ele comandando direto de um Linux.

Parabéns pelo artigo.

[10] Comentário enviado por vitorioluis em 14/09/2011 - 16:07h

Muito loco isso ai!!!!

[11] Comentário enviado por fabio em 27/09/2011 - 00:29h

Vou cobrar o Ar.Drone no próximo VOL DAY hein!

[12] Comentário enviado por albfneto em 29/09/2011 - 12:51h

Muito Legal! Favoritado.

[13] Comentário enviado por joserf em 07/10/2011 - 09:02h

pelo iphone bem melhor, pra que complicar atoa só por deus e ainda tem gente que gosta desses artigos

[14] Comentário enviado por EnzoFerber em 03/12/2011 - 12:38h

@cabelo
Como sempre, excelente artigo.

E a inveja come solta pra cima de você, hein?!
Esquenta não, seu sucesso é garantido!

Tem gente que não tem noção do quão idiota é.........

@izaias

Qualquer coisa "nóis divedi" essa parada no cartão em 256x S/ juros, sô! ;) haha

[15] Comentário enviado por removido em 03/12/2011 - 12:41h

rsrs

Fechado!!!

[16] Comentário enviado por carloscasca em 14/12/2011 - 18:54h

muito legal gostei !

[17] Comentário enviado por mdunguel em 31/12/2011 - 10:56h

Muito bom, mas algumas imagens não estão aparecendo?

[18] Comentário enviado por abelfrancia em 21/03/2012 - 15:41h

Cabelo, muito interessante, é um brinquedo para gente grande, podemos dizer...


A muito tempo atrás vi noticias que existia uns brinquedos parecidos com estes, só que distribuindo botnet por ai, rsrsrs...

Vc se lembra? Pelo que me lembro ele quebrava senha das redes wireless e invadia os PC's e ja era...


abraços.

[19] Comentário enviado por magnopeem_rj em 02/04/2012 - 09:43h

Cabelo muito bom esse brinquedinho ae ....

mais tipo de fosse integrado ao programa que verifica facialmente a fuça de uma pessoa e se fosse possivel tambem verificar a face e3m tempo real e em movimento pow acho que ficaria muito bom , daria para dar um tour no centro da cidade e verificar quem esta em B.A kkkkk

[20] Comentário enviado por adrianoh2 em 05/04/2012 - 17:20h

Muito bom... fantástico.. diversão garantida!
To pensando em integrar comando de voz, e ele. hehehe

[21] Comentário enviado por xieqin333 em 21/05/2012 - 11:39h

Caraca, adorei o artigo!!
[img]http://www.nlmlol.info/g.gif[/img]

[22] Comentário enviado por Alexandra241 em 21/06/2012 - 12:42h

Muito massa!

[23] Comentário enviado por wellingtonpg em 15/11/2012 - 09:51h

Muito bom so não ter dinheiro agora pra compra um deste....rs

[24] Comentário enviado por rafamb em 04/12/2012 - 16:46h

Excelente como sempre!

[25] Comentário enviado por uilianries em 10/12/2012 - 08:15h

Parabéns!

Ficou excelente, o artigo.

[26] Comentário enviado por djosino em 12/12/2012 - 11:20h

Muito bom, fiquei curioso para ver o último video mas está "privado"


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts