sexta-feira, 23 de maio de 2008

Robô sobe em qualquer superfície vertical com tecnologia de eletroadesão

Redação do Site Inovação Tecnológica

23/05/2008

A equipe do professor Harsha Prahlad encontrou uma solução para fazer com que seus robôs consigam não apenas subir pelas paredes, mas subir por superfícies verticais em geral, feitas com qualquer tipo de material, de paredes de concreto ou tijolos até janelas de vidro.

Eletroadesão

A solução encontrada é a eletroadesão, que está sendo utilizada pela primeira vez em robôs. O robô se sustenta na superfície por meio de cargas eletrostáticas, geradas a partir de suas baterias e aplicadas na superfície através de sapatas especiais, desenvolvidas pela equipe do laboratório SRI, dos Estados Unidos.

Ao contrário dos adesivos tradicionais, secos ou não, utilizados em outros robôs escaladores, a eletroadesão pode ser desativada, ampliando a gama de utilização dos robôs que a utilizam.

Este é também o principal diferencial entre a eletroadesão e os sistemas eletrostáticos passivos já testados em outros robôs, que se baseiam na força de Van der Waals.

Robôs robustos

Os testes mostraram que a eletroadesão permite que os robôs se sustentem em virtualmente qualquer tipo de superfície, de paredes de concreto e de tijolos expostos a janelas de vidro. Poeira, pequenas sujeiras e até mesmo trincas nas superfícies também não são problema.

"Eventos recentes, como desastres naturais [...] e ameaças à segurança pública têm mostrado uma necessidade cada vez maior de robôs robustos - especialmente daqueles que podem se mover em três dimensões," diz o professor Prahlad, que apresentará seus robôs pela primeira vez em público nesta sexta-feira, durante a Conferência Internacional de Robótica e Automação (ICRA 2008).

Atração eletrostática

Segundo o trabalho apresentado pelo pesquisador, a eletroadesão, ou atração eletrostática eletricamente controlada, é uma solução com baixo consumo de energia, operação silenciosa e que requer uma estrutura extremamente simples e leve.

As sapatas, ou almofadas, por meio das quais a carga eletrostática é aplicada à superfície, conseguem se moldar às irregularidades das superfícies, para que o robô ande por cantos e quinas.

O consumo de energia de um robô utilizando a eletroadesão é de cerca de 20 microwatts por Newton de carga sustentada. As sapatas apresentam pressões entre 0,5 e 1,5 N por centímetro quadrado de área da sapata, dependendo da superfície.

quinta-feira, 8 de maio de 2008

Como instalar o model-checking em sistema operacional LINUX, distribuição Debian/GNU Etch

1) Baixe o arquivo no link: http://www.fmi.uni-stuttgart.de/szs/tools/mckit/mckit-bin_linux-040921.tar.gz
2) Como root descompacte o arquivo em: /usr/local
# cd /usr/local
# tar -zxvf
mckit-bin_linux-040921.tar.gz
3) Inclui o diretório bin do kit no PATH:
#export PATH=/usr/local/mckit/bin:${PATH}
4) Para rodar utilize:
# ./check

OBS.: Indo na pasta examples terá um arquivo com o nome test.pl, ao executar esse arquivo, ele fará um teste em todas as ferramentas que compõem o model-checking, mas será observado que não encontrará a ferramenta spin e nem a pep, que necessitam que seja instaladas separadamente.

Como acrescentar a ferramenta SPIN no model-checking

1) Baixe o arquivo do spin no site: http://spinroot.com/spin/Src/spin515.tar.gz
2) Como root descompacte o arquivo em: /usr/local
3) Entre no diretorio, /usr/local/Spin/Src, e altere:
Primeiro a main.c
Onde tem a "include <io.h>" colocar "include </usr/include/sys/io.h>"
Segundo o makefile
Onde tem "CC=cc -DNXT" colocar "CC=cc -DNXT -DPC"
4) Instalar o pacote bison para obter yacc
5) Dar um make na pasta
6) Depois de feito o dito acima edite o arquivo make_pc
7) No arquivo make_pc na linha que tem "mv spin.exe /usr/bin" mude para "mv spin /usr/bin"
8) Pronto, feito tudo basta dar um ./make_pc

Pronto o model-checking já está com o spin, para testar entre em /usr/local/mckit/examples
Depois dê um ./test.pl, verá que ele encontrará as ferramentas spin.

------------------------------------

A explicação sobre como instalar a ferramenta PEP ainda não está pronta, pois ainda estou tendo problemas, caso alguém que leia isto já tenha conseguido instalar, por favor me envie e-mail. Espero ter ajudado.

quarta-feira, 7 de maio de 2008

Tutorial de Instalação do BrickOS no Cygwin, para embarcar programas no Lego Mindstorm RCX 2.0

Primeiro Passo: Instalação do Cygwin

Instalar o Cygwin, que pode ser baixado do site:
http://www.cygwin.com/.

Depois de baixado basta dar dois cliques e abrirá uma tela onde basta dar Next até chegar a uma tela como a representada na figura acima, escolha a opção de Install from Internet, depois de escolhida essa opção abrirá uma tela (representada na figura abaixo), basta manter como está, clicando em Next.

Depois de clicado em Next abrirá uma tela pedindo que seja escolhido o diretório onde será salvo os pacotes que serão baixados, escolha o diretório de sua preferência e clique em Next, então abrirá uma tela perguntando sobre sua conexão (se é cabo, se há proxy, etc), escolha a opção que represente sua conexão e clique em Next e irá para a tela seguinte que será a escolha do espelho para o download (representada na figura abaixo).

OBS.: O melhor espelho, com relação a velocidade e pacotes, é o da UOL.

Depois de escolhido o espelho, será mostrado uma lista de pacotes como a figura abaixo.

Dica: Depois de aberto esta lista, clique em View, essa opção fará com que mostre todos os pacotes em ordem alfabética, facilitando assim a procura dos pacotes necessários, que estão apresentados abaixo:


ash

autoconf
automake
bash
binutils
cpio
cygwin
diffstat
diffutils
file
findutils
flex
gcc
grep
less
login
make
mingw
patch
sed
tar
time
w32api

OBS.: Encontrado o pacote na lista, basta clicar em Skip, que aparecerá no canto esquerdo.

Depois de escolhido os pacotes e marcá-los para instalação, basta clicar em Next, ele iniciará o download e depois a instalação dos pacotes solicitados.

Segundo Passo: Compilando a Hitachi-H8 cross-compiler

Depois de baixado e instalado, abra o Cygwin Bash Shell.

Crie um novo diretório:
$ mkdir /build

Faça o download dos seguintes arquivos:
gcc 2.95.2, no link: ftp://ftp.gnu.org/pub/gnu/gcc/gcc-2.95.2.tar.gz
binutils 2.10.1, no link: ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.10.1.tar.gz
legos-buildgcc, no link: http://legos.sourceforge.net/cygwin/download/legos-buildgcc.zip

Depois de realizado o download, pegue os três arquivos e coloque na pasta que acabou de ser criada (/build).
Entre na pasta e descompacte o arquivo
legos-buildgcc.zip, após descompactado aparecerá três arquivos, dois *.diff e um *.sh, entre no Cygwin e faça:

$ cd /build
$ ./buildgcc.sh

OBS.: Ele iniciará a compilação, esse passo demorará um pouco.
OBS.: Ignore possíveis warnings que apareça.

Terceiro Passo: Instalação do BrickOS

Baixe os arquivos do BrickOS, o utilizado por mim foi o brickos-0.9.0.tar, mas procure versões atualizadas, no link: http://sourceforge.net/projects/brickos.

Coloque o arquivo dentro de C:\cygwin, abra o cygwin e faça:

$ cd /
$ tar xvfz
brickos-0.9.0.tar

Aparecerá os arquivos que estão sendo descompactados e será criada uma pasta
com o seguinte nome brickos-0.9.0.

Quarto Passo: Criando link e configurando o BrickOS

Abra o cygwin e faça:

$ ln -s
brickos-0.9.0 brickos
$ cd /brickos
$ ./configure; make
$ cd util
$ make strip

Quinto Passo: Ligando a Torre Infra-vermelho

Instale o driver da torre para que o windows reconheça a torre.
Depois de instalado ligue a torre e posicione juntamente com o RCX 2.0 de forma que os infras se comuniquem.
Lembre-se o RCX 2.0 deverá estar ligado no momento da transferência.
Faça:

$ ./firmdl3 ../boot/brickOS.srec (comando que embarca o brickOS no RCX)
$ ./dll ../demo/helloworld.lx (comando que envia o programa desejado)

Sexto Passo: Possíveis problemas

Primeiro problema: O padrão do software instalado é que a torre se comunica via COM1, então se sua torre for conectada pela USB, dará um Error 2: Opening COM1, é necessário mudar os comandos:

$ ./firmdl3 --tty=usb ../boot/brickOS.srec (comando que embarca o brickOS no RCX)
$ ./dll --tty=usb ../demo/helloworld.lx (comando que envia o programa desejado)


Segundo problema: Ao iniciar a transferência o PC travar. Se ocorrer isso, siga os passos abaixo:

Pode ocorrer isso devido a capacidade do Hyper-Threading do seu processador. Isso é um problema que ocorreu com o driver da torre, mas tem uma atualização que corrigi isso, que pode ser baixada em:

http://www.lego.com/eng/service/downloads/patches/Tower164.zip

Sétimo Passo: Criando os seus programas

Após tudo pronto e instalado é só aproveitar, na pasta /demo tem alguns exemplos de programas para o RCX, mas se você quiser criar os seus próprios programas é bem simples, mas só precisa ser lembrado que o padrão do RCX é a extensão *.lx, então todo programa criado em C, precisa ser compilado para lx. Como fazer isso?

Primeiro passo: Basta verificar que dentro da pasta /demo tem um arquivo que se chama Makefile, o primeiro passo é criar o seu programa em C e colocar dentro da mesma pasta onde se encontra o Makefile.

Segundo passo: Abra o Makefile para ser editado (WordPad, pois em Notepad ficará tudo em código), dentro do arquivo terá uma linha que começa com PROGRAMS=, na frente do igual provavelmente terá nomes de programas que vão como exemplo, o que terá que ser feito é nessa linha adicionar o nome do programa que está sendo feito por você. Lembre-se o nome do programa colocado na linha PROGRAMS terá que ser o mesmo nome do *.c, ou seja, se eu criei o arquivo teste.c, quando eu for editar o Makefile eu terei que escrever PROGRAMS=teste.lx.

Terceiro passo: Depois de ser editado e salvo o Makefile abra o Cygwin e faça:

$ cd /
$ cd brickos/demo/
$ make all

Depois de feito isso ele irá compilar o seu arquivo *.c para *.o e depois transformar para *.lx, agora basta seguir o Sexto passo para enviar o programa para o RCX e é só aproveitar.

----------------

Espero que esse tutorial ajude, ele foi a união de um tutorial e uma pesquisa em forum que usei quando precisei embarcar programas para o RCX.

Referências:

http://brickos.sourceforge.net/docs/INSTALL-cygwin.html

http://www.lego.com/eng/service/faqs.asp?section=ConsumerService-FAQ-TechSupport&tech=true&catid=87BC4CA6-D8CD-4BF1-8307-6B52AB45AF02

quarta-feira, 20 de fevereiro de 2008

Controlador de velocidade em motores DC utilizando modulação por largura de pulso (PWM)

O trabalho realizado foi à construção de um controlador para a velocidade de um motor DC utilizando modulação em pulso (PWM). O controle da velocidade dos motores pode ser muito importante em várias áreas de atuação, por exemplo, uma impressora ao puxar o papel necessita de precisão na velocidade do motor tanto para recolher o papel quanto para imprimir, para que não haja falhas na impressão; um scanner precisa ter controle de velocidade do motor que faz passar o feixe óptico durante a captura da imagem.
Na realização do projeto foi necessário identificar quais as variáveis que interferem no funcionamento do motor, no caso do controlador projetado: a tensão de entrada, que tem que ser uma onda pulsante; a largura do pulso, que vai determinar a velocidade do motor.
A utilização da modulação por largura de pulso foi escolhida por ser amplamente utilizada em controladores de servo-motor, por ser de fácil implementação e baixo custo. A PWM é realizada utilizando-se um potenciômetro que quando tem sua resistência variada modifica a corrente na carga e, portanto, a potência aplicada a ela.
Para que se entenda como funciona esta tecnologia no controle de potência, partimos de um circuito simples formado por um interruptor de ação muito rápida e uma carga que deve ser controlada. Quando o interruptor está aberto não há corrente na carga e a potência aplicada é nula. No instante em que o interruptor é fechado, a carga recebe a tensão total da fonte e a potência aplicada é máxima. Como pode-se observar esse processo de chaveamento gera uma onda quadrada. Se quisermos obter, uma potência intermediária de 50% entregue a carga, pode-se fazer com que a chave seja aberta e fechada rapidamente de modo a ficar metade do tempo aberta e metade do tempo fechada, fazendo com que passe 50% da potência inicial. Variando-se a largura do pulso e também o intervalo, de modo a termos ciclos ativos (a razão entre o tempo de pulso e a duração de um ciclo completo) diferentes, podemos controlar a potência média aplicada a uma carga. Assim, quando a largura do pulso varia de zero até o máximo, a potência também varia na mesma proporção. Este é o principio associado ao controle PWM: modular a largura do pulso de modo a controlar o ciclo ativo do sinal aplicado a uma carga e, com isso, a potência aplicada a ela.
No projeto para implementar esse sistema de chaveamento foi utilizado o CI NE555N e a carga citada é o motor DC. O motor DC é conhecido pelo controle preciso de velocidade e por seu ajuste fino. O funcionamento básico do motor DC está fundamentado na Força de Lorentz aplicada em uma carga em movimento dentro de um campo magnético (F=qvB). Consideremos uma espira de corrente inserida em um campo magnético criado por um imã permanente, em que há corrente criada por uma bateria (fonte DC). De uma forma simplificada, a simples passagem desta corrente faz com que apareçam duas forças de sentidos contrários, aplicadas uma em cada lado da espira. Estas forças criam um torque que, obviamente, faz a espira girar, transformando a energia elétrica da corrente em energia cinética num eixo acoplado às espiras. A direção da rotação depende da polaridade da bateria e da direção das linhas de campo magnético criadas pelo imã. Os motores DC são utilizados, por exemplo, em aplicações como o posicionamento do braço de um robô.
O circuito da Figura ao lado foi o circuito montado para o controlador. Durante o projeto estava sendo utilizado uma fonte de entrada de 12V, mas para a melhor funcionalidade das especificações do problema foi utilizada uma fonte de 14V.
A especificação principal do problema era que a onda de saída ficasse o mais uniforme possível, ao utilizar uma entrada de 14V isso foi conseguido. Quando se utilizava 12V era encontrado um pico no topo da onda. Abaixo serão apresentadas fotos do projeto montado no protoboard e da forma de onda obtida no osciloscópio.
A foto ao lado mostra como o circuito apresentado acima foi montado no protoboard. Essa foto foi tirada no laboratório de Eletrônica Digital da Universidade Federal do Amazonas durante a montagem do projeto. Depois da montagem do circuito no protoboard ele foi ligado ao osciloscópio para análise da forma de onda e verificar se atendia as especificações do projeto, depois de visto se atendia ou não é que foi montada a placa. A próxima foto a ser mostrada é a foto do osciloscópio. A figura exatamente abaixo, com a forma de onda mais estreita é a figura que representa o motor quando está com velocidade minima. A figura ao lado, com forma de onda mais larga é a figura que representa o motor com velocidade máxima.


Criado por: César Vieira Rocha
Claudio Eduardo Marques Gomes
Mauro Lopes de Freitas


quarta-feira, 19 de dezembro de 2007

Robô YouCube soluciona cubo mágico em poucos minutos


Da redação
19/12/2007

A empresa Kawasaki apresentou ao mundo o seu robô YouCube, capaz de solucionar qualquer disposição do famoso Cubo de Rubik em poucos movimentos. O robô utiliza um sistema de visão artificial para detectar a posição de cada uma das etiquetas coloridas no cubo e um software especificamente projetado para desempenhar a tarefa.

Cérebro e braços

O YouCube é praticamente só "cérebro" e braços. Um monitor LCD faz as vezees de cabeça, mostrando a interação do robô com o problema a ser resolvido e o seu funcionamento. O aspecto rudimentar do restante do robô, tipo decoração de parque de diversões, não esconde o fato de que seu corpo é mesmo meramente decorativo - ele não é capaz de se levantar e sair andando, como os outros robôs japoneses com aspecto humanóide.

Visão artificial

O destaque do YouCube é o seu sistema de visão artificial, baseado em uma tecnologia proprietária da Kawasaki, chamado KiperH - Kawasaki High-speed Image Processing Equipment for Robot. O programa é uma implementação de inteligência artificial que consegue retirar das imagens geradas pelas câmeras a informação que é relevante para que o robô desempenhe sua tarefa.

O desempenho do programa é admirável. Quem trabalha em automação industrial, que exige o reconhecimento de padrões em imagens digitais, sabe a dificuldade de se calibrar um software para que ele detecte tão somente o contorno dos objetos. Detectar cores tão parecidas como aquelas presentes em um cubo mágico é um feito nada desprezível.

PC embutido

O software, que roda em um PC embutido no corpo do robô, não serve apenas para solucionar o Cubo de Rubik, mas para virtualmente qualquer outro trabalho que exija a manipulação, seleção e separação de objetos. Quando termina seu trabalho, o robô levanta os braços e comemora em voz alta, por meio dos sintetizadores de voz instalados no mesmo computador.

Cubo mágico

O recorde de velocidade do YouCube para solução do cubo mágico é de três minutos. Dois pesquisadores norte-americanos recentemente demonstraram que é possível resolver qualquer combinação do cubo em apenas 26 movimentos (veja Cubo Mágico é solucionado com 26 movimentos).

Link da notícia

Ferramenta open-source encontra erros em programas

Da redação
18/12/2007

Se cada correção de bug de um programa de computador tivesse que gerar um "recall", como acontece na indústria automobilística, por exemplo, as empresas de software certamente seriam as campeãs nesse indesejado ranking.

Os programas de computador não mudam de versão apenas para incorporar novos melhoramentos - na verdade, a maioria das atualizações ocorre para sanar erros das versões anteriores. A tarefa de encontrar erros em programas de computador é difícil, demorada e, principalmente, cara

Localizador de erros open-source

Mas o trabalho poderá ficar um pouco mais fácil, e mais barato, graças a uma nova ferramenta open-source criada por uma equipe de matemáticos e cientistas da computação do Instituto Nacional de Padronização e Tecnologia dos Estados Unidos.

Os pesquisadores analisaram travamentos em uma grande variedade de programas - de programas incorporados em equipamentos médicos até navegadores de internet. Os dados reforçam algo que já se sabia há tempos: a maioria dos erros e travamentos resultam de eventos simples e não de tarefas complicadas que os programas são capazes de fazer.

Mesmo os navegadores de internet, que trabalham simultaneamente com centenas de variáveis, a maioria dos travamentos foi causada pela interação de apenas duas dessas variáveis.

Teste combinatorial

A nova ferramenta localiza os erros do programa utilizando uma técnica de nova geração chama teste combinatorial. A técnica lembra a química combinatorial, na qual os cientistas pesquisam múltiplos compostos químicos simultaneamente, ao invés de procurar por um de cada vez.

Imagine um processador de textos que seja capaz de mostrar 10 formatos de texto diferentes. Determinadas combinações de formatos - como acionar simultaneamente o itálico, o negrito e o subscrito - podem fazer o programa travar.

Testar todas as possíveis combinações dos 10 efeitos possíveis exigiria 1.024 testes. Entretanto, testar todas as possíveis combinações de quaisquer três efeitos exigirá apenas 13 teste. Se os testes forem selecionados adequadamente, as 10 diferentes variáveis permitem que se explore 120 combinações de "triplos" simultaneamente.

Beta-testers

O novo programa foi apresentado em uma conferência internacional de programação e deverá ser colocada em disponibilidade no início do próximo ano. Os pesquisadores inicialmente estão convidando desenvolvedores para atuar como testadores da versão beta.

O programa será disponibilizado no formato open- source, onde tanto o programa executável quanto o código-fonte podem ser livremente acessados e melhorados pela comunidade de usuários.


Bibliografia:
IPOG: A general strategy for t-way software testing.
Y. Lei, R. Kacker, D. R. Kuhn, V. Okun, J. Lawrence
International Conf. on Engineering of Computer-Based Systems Proceedings
2007
Vol.: pp 549-556
DOI: 10.1109/ECBS.2007.47

Link da notícia

terça-feira, 27 de novembro de 2007


Robô-mariposa integra cérebro biológico a robô Da redação
21/11/2007

Colocar inteligência nos robôs não é uma tarefa fácil. Dar-lhes visão é um pouco menos complicado, mas nem por isso algo simples de se fazer ou que tenha alcançado grande eficiência até agora.

Com base nessas constatações, engenheiros da Universidade do Arizona, nos Estados Unidos, resolveram partir para uma solução mais simples. Por que não conectar a um robô o cérebro e os olhos de um animal, aproveitando essas estruturas biológicas que a natureza levou milhões de anos para desenvolver a aprimorar?

Detectando movimento

A idéia deu resultados interessantes. O animal escolhido foi uma minúscula mariposa, que foi imobilizada no interior de um tubo plástico. Eletrodos conectados ao cérebro da mariposa capturam os impulsos elétricos gerados quando o inseto move seus olhos. Esses impulsos são passados para o computador do robô, que se move acompanhando o movimento dos olhos da mariposa.

Mesmo com um cérebro menor do que um grão de arroz, a mariposa tem uma capacidade de detectar movimentos que está muito além do que a mais avançada tecnologia da robótica atual permite fazer. Isso resultou em um robô altamente eficiente para acompanhar qualquer tipo de movimento.
Integração de cérebro e robótica

É mais um avanço nas pesquisas que procuram integrar cérebro e robótica, estudos que prometem um dia dar condições para que pessoas portadores de deficiências ou vítimas de acidentes possam controlar equipamentos apenas com seus pensamentos.

Embora usando uma "mariposa inteira", o objetivo dos pesquisadores é chegar a utilizar apenas os neurônios individuais como sensores para os robôs do futuro. Para conhecer outros detalhes da pesquisa veja Biologia e eletrônica se mesclam para dar visão a robôs

Site da Noticia