• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Bruno

A era dos ROBOT's, O meu primeiro!

78 mensagens neste tópico

Após uma ida ao Robocup fiquei bastante fascinado (parece q tudo na informatica me fascina :P) e passado 3 meses já pertencia  equipa de AIBO's do IST. Passados 6 meses lanço uma nova proposta ao meu +- habitual grupo de trabalho e fiquei bastante satisfeito por terem aceitado (e esta foi mm para a frente).

Chamamos-lhe FAIR (First AI Robot) e consiste em criar um robot autónomo (que n precisa de um humano) que possa movimentar-se livremente pela casa (primeiro passo) e futuramente interagir com as pessoas que detecta.

O primeiro problema (e o mais complicado até ao momento) foi compreender o que era preciso para fazer uma "coisa" destas.

A nossa ideia é ter um robot com 3 rodas (duas fixas e uma chamada "maluca"), que tenha um portatil a bordo (para ter alto processamento e a possibilidade de correr linux + programas feitos em C) e que tenha alguns sensores (tipo webcam, infra vermelhos, ultra som, ...) de modo a poder detectar os obstaculos e desviar-se :D .

img1.JPG

Material Electrónico Principal:

1x PIC (basicamente os robots pequenos usam-no como processador e cerebro do mesmo... tem memoria e tem a capacidade de correr programas simples.) A nossa necessidade dele passa por ser este que consegue controlar os motores.

1x PWM (ou placa de potencia) Em conjunto com o PIC este sistema permite dar uma determinada potencia aos motores (controla até 2 independentes) conseguindo assim pô-lo andar  velocidade q queremos. (devido a termos 2 motores, se dermos mais potencia a um deles o robot vira :D)

1x Sensor IV (a comunicação por infra vermelhos está presente no nosso dia a dia (comandos de tv) e tem um vasto leque de utilizações) No nosso caso este sensor serve para medir a distancia do mm a um obstáculo, isto é, ele envia uma luz q acaba por ser reflectida (qd embate em algo) e tal como tem um emissor, tem um receptor que a capta passado N segundos. Através de alguns calculos conseguimos obter a distancia ao obstaculo mais perto! :)

2x Motores de Aparafusadoras - Embora seja motivo de gozo de todos posso vos dizer que são os motores mais usados nestas coisas de robots! ;)

De resto refiro só uma "breadboard" que serve para ligar tudo isto! (os restantes componentes penso que não interessa falar neles)

img1.gif

Fig 2 - Breadboard

Os primeiros passos:

Visto que pretendemos que seja o portatil a ditar as regras é necessário usar um modo de comunicação com o PIC e com os restantes componentes. Após alguma meditação concluimos que iamos usar a porta paralela ;)

A porta paralela tem 26 pin's que podem estar a 0 ou a 1 (isto é, 0V ou 5V) e com isto podemos fazer TUDO ;) Por exemplo, se ligarmos um pin a uma luzinha pequena (LED) este acende se o pin tiver a 1.

img2.gif

Fig 3 - Porta Paralela (uma ponta)

img5.gif

Fig 4 - Porta Paralela na bredboard (outra ponta)

Tentando tornar tudo mais interessante vou passar a explicar a nossa primeira experiencia com o mostrador decimal.

Ora este mostrador tem 10 pin's, passo a explicar o funcionamento de 7 deles... qd eles recebem corrente (5v) acedem uma parte do mostrador, isto é, se dermos luz aos 7 pin's ficamos com um 8, etc...

Programa feito nalguns minutos:

http://superr.no.sapo.pt/robot/Contador.mov -> 450kb

Como controlar um cabo paralelo? Acho justo fazer aqui só uma referencia  biblioteca PARAPIN que fornece uma grande ajuda na programação da porta paralela em C/C++. Só um exemplo (perceptivel a quem n sabe linguagens de programação) da sua simplicidade:

set(PIN01); -> Coloca o pin 01 a 5v

clear(PIN01); -> Coloca o pin 01 a 0v

Como podem ver parece tudo simples mas não é... tudo demora tempo e estamos só no inicio! (veio material de Itália, EUA, ...)

Fazendo uma estimativa de custos.... diria que não chegou aos 1000‚¬ ;)

img3.gif

Fig 5 - Algum do material

img4.gif

Fig 6 - Fios e 1 das Rodas (compradas no AKI)

Estou  disposição para qualquer pergunta (desde q saiba responder).. e se houver alguem com conheçimentos em C/C++ interessado em pelo menos ver o desenvolvimento do codigo façam o favor de me informar! ;)

----

Proximo Passo: O PIC possui tb pin's e assim sendo, passa por colocar o PIC acender e apagar um LED

PS: Este tópico já foi feito algum tempo e já tem sucessor... mas para n enjoarem de tanto lerem vou dar 3 ou 4 dias até meter o outro :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas! diz-me uma coisa, que motores usas? Onde é que compras-te?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Isso vai ficar 5 estrelas....vai dando notícias...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Boas! diz-me uma coisa, que motores usas? Onde é que compras-te?

Boas, posso-te dizer que os primeiros que compramos foram uns de uma aparafusadora de 3,6v... mas embora fossem 2 eram fracos (o portatil ainda pesa)... logo, acabamos por adquirir 2 berbequins numas promoções do Continente (50% desconto) de 18V! :D Rulam mto! :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

AAAA,...mas para isso não é preciso nenhums motores especiais? Pergunto isso pq já vi a falar muito sobre motores de passo, como funcionam etc,..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hmmm a vantagem de construires tudo de raiz é precisamente essa... tu escolhes o q queres... :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas..

Projecto interessante, fiz um parecido para participar no micro-rato organizado pela universidade de aveiro.

Só uma sugestão, se queres que o PC controle o PIC, e que o PIC diga ao PC o estado de certos sensores (IV, ultra-sons), pensa em usar antes a porta série, só ocupas dois pinos, a taca de transmissão pode ser até 115kbs, e o PIC já tem hardware interno para manusear o protocolo.

Se o objectivo principal do robo for para se desviar de obstaculos, considera usar ultra-sons, os IV são muito sensiveis á luz ambiente, e á cor do obstaculo.

cumps

Artur Vieira

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pelas sugestões...

No entanto o meu portatil n tem porta série :D e já fiz os programas para usar a porta paralela :)

Em relação aos Ultra-Sons vs IV tem a vantagem de ser mais precisos mas são mais caros (o dobro)... o robot de momento tem 4 sensores IV e parece-me q são bastante precisos :D;)

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e onde é que compras-te os censores? Quanto é que custa cada um (+- só para ter uma ideia..)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No ultimo texto falei dos materiais em geral e da porta paralela (+ contador decimal) em particular... neste tentarei focar-me mais no PIC!

PIC - O nosso modelo (PIC16F876-A) foi encomendado de borla (sim, para universitários é de borla) de um site dos EUA... O PIC tem 28 PIN's dos quais é importante dizer que alguns serão usados para comunicar com a porta paralela, outros com o sensor IV e outros (por fim) com o controlador dos motores.

16F876a.gif

Img 1 - PIC 16F876A

O PIC tem processador e memoria e como tal a capacidade de realizar muitas coisas interessantes. Nos nossos pc's devido ao Sistema Operativo (que temos nele instalado) fazer programas é bastante simples... mas, no PIC não temos nada disso (não tem Sistema Operativo) :)

Precisamos primeiro de fazer um programa para ele (existe algumas linguagens possiveis) e depois é "traduzido" (compilado) para hexadecimais de modo ao PIC o conseguir executar.

Quando conseguirmos ter o hexadecimal (o .hex) é necessário passá-lo para o PIC... para tal, existe os programadores de PIC's:

progPic.jpg

Img 2 - Programador de PIC (100‚¬)

Após isso montasse o PIC no circuito, dá-se lhe energia e espera-se que ele funcione bem! :D

Deixo-vos aqui 2 filmes:

LedsNoite.avi -> 224Kb (mostra alguns LED's a piscar  s escuras)

LedsDia.avi -> 610Kb (mesma experiencia q a de cima, mas com luz)

Quando vimos que realmente os nossos programas ja acendiam e apagavam os pin's do PIC então pensámos em ir mais longe! ;)

Tentamos colocar os motores a serem controlados pelo PIC (relembro q para controlarmos a voltagem que é dada aos motores é uma interação entre PIC e a Placa Controladora) de modo a vermos se realmente dava tudo bem... mas nem tudo corre bem quando não se sabe muito bem o q se anda a fazer :$ ;)

Após 2 dias de desespero conseguimos perceber o q não funcionava... a Placa Controladora que adquirimos não era a ideal para o serviço! :D A placa em questão controla energias acima de 7,5V... ora os nossos motores (coitados) não consomem mais que 3,6V (lol)! :D

(O problema ainda está a tentar ser superado)

O importante é que não desanimamos... e prosseguimos com outras coisas também necessárias!

----

1ª Versao de Comunicação - A a nossa primeira tentativa de comunicação entre o PIC <-> PC!

Foi necessário programar o PC e o PIC (em linguagens diferentes) de modo a que um pudesse mandar info a outro e esse recebê-la e enviá-la de volta (só um exemplo).

Visto que não temos ainda solução (imediata) para o controlo dos motores então pegamos no sensor que dispomos, um sensor Infra Vermelho (IV)!

sensorIV.gif

Img 3 - Sensor IV Sharp GP2D12

Como foi explicado no 1º topico este sensor serve para medir as distancias a objectos... essa distancia é fruto de alguns calculos (q n irei falar). Suponhamos então que o sensor envia ao PIC a distancia do objecto mais perto, o que desejamos neste caso é que o PIC dê essa informação ao PC e no PC consuante a distancia do objecto respondemos ao PIC para ele controlar os motores do modo ideal para o evitar! ;)

Como fazer esta comunicação? Ora aqui ja entra os PIN's e os 0's e 1's ;)

O sensor retorna um numero entre 0 e 255 consuante o obstáculo está perto ou longe... o PIC por sua vez tem como objectivo dar esse valor ao PC (pela porta paralela).

Um numero entre 0 e 255 em binário é entre 0000 0000 e 1111 1111 e se perceberam tudo até agora então é bastante simples perceber o q é preciso para a comunicação! ;)

Usamos 8 pin's do PIC e colocamos a 0 ou 1 cada um deles consuante o numero que é para transmitir :P O PC recebe isso e interpreta respondendo de um modo identico :P

-----

E foi este o nosso trabalho do ultimo mês...

A proxima actualização espero q seja para mto breve...uma vez que se irá mostrar videos/imagens da estrutura do robot e do funcionamento da comunicação do PIC <-> PC.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só uma perguntinha: qual é essa linguagem com que vocês programam o PIC?? É que ouvi dizer que era Assembly ou assim....

De qualquer forma Bruno vai actualizando que a gente gosta disso...

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quero ver isto com mais calma..

cheira-me que esta aqui material com muito potencial :D

cumps a todos..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parte 1 de 2 do 3º post:

De momento aqui ficam as fotos da estrutura... ;)

http://mega.ist.utl.pt/~bfbm/fair/fair01.gif

Img 1 - Quando ainda estava em construção

http://mega.ist.utl.pt/~bfbm/fair/fair02.gif

Img 2 - Imagem geral sem a prateleira

http://mega.ist.utl.pt/~bfbm/fair/fair04.jpg

Img 4 - Imagem lateral com portatil fechado

http://mega.ist.utl.pt/~bfbm/fair/fair05.jpg

Img 5 - Imagem frontal com portatil

Já agora um pormenor curioso... através de algumas contas conseguimos determinar a velocidade maxima do robot... o robot deve atingir facilmente os 25km/h  ?

----

Eu (sem o conheçimento da equipa (uma surpresa)) decidi adquirir algo já feito (o que até agora não tinha acontecido)... vai um bocado contra a nossa politica de fazer tudo mas neste caso (e visto que não temos ainda conheçimentos para o fazer) decidi gastar umas boas notas ;)

O objectivo é entreter-me nas férias (que se aproximam ;))... e aqui deixo duas imagens iniciais do "objecto":

http://mega.ist.utl.pt/~bfbm/fair/lynx01.jpg

http://mega.ist.utl.pt/~bfbm/fair/lynx02.jpg

Se quiserem ver mais só no site :D

http://mega.ist.utl.pt/~bfbm/fair/lynx.html

E assim o projecto ficou com 3 frentes...

1. Braço

2. Controlo dos motores (podemos dizer q até agora foi a coisa mais complicada q encontrámos)

3. Leitura dos Sensores (as tais novidades devem estar para chegar ;))

PS: O braço custou quase 2x o resto de tudo o que já tinhamos para o robot!  :o

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim senhor! É com projectos destes que Portugal anda prá frente!

Achei extremamente interessante e curioso, e de facto até é simples de compreender, pelo menos a parte da distância transmitida ao pc por código binário. Isto no IST é só malta da pesada  :D  :D  :D  :D  :D

talvez um dia lá chegue.....embora não nessa vertente.... ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

PIC - O nosso modelo (PIC16F876-A) foi encomendado de borla (sim, para universitários é de borla) de um site dos EUA... O PIC tem 28 PIN's dos quais é importante dizer que alguns serão usados para comunicar com a porta paralela, outros com o sensor IV e outros (por fim) com o controlador dos motores.

Boas ppl..

Bruno, será que há a possibilidade de me forneceres o link desse site?

---

Também gosto muito de robotica, cheguamos a construir um Robo, e participámos no concurso do Robo Bombeiro da Guarda e ficamos em 1º lugar.

1 abraço a todos e boa sorte.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bruno, tenho algumas dúvidas :

1º Qual a capacidade em termos de memória que essa PIC tem ?

2º Os elementos do teu grupo são todos do mesmo curso/ano ?

3º Quais os custos de construir um briquedo desses ? E quanto mais irás gastar no futuro ?

E por agora só são estas as minhas dúvidas. Um aparte interessante, no outro dia vi um robot idêntico ao teu mas em vez de utilizar um portátil, usava uma TI-83 e era muito mais pequeno, no entanto só podias contar com ela para assembler contudo já se anda a fabricar uma maneira de correr linux em processadores z80 o que facilita mais a vida

Bem talvez consiga entrar no IST este ano.. =)

Estás aonde ? Alameda ou Tagus ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Bruno, tenho algumas dúvidas :

1º Qual a capacidade em termos de memória que essa PIC tem ?

2º Os elementos do teu grupo são todos do mesmo curso/ano ?

3º Quais os custos de construir um briquedo desses ? E quanto mais irás gastar no futuro ?

E por agora só são estas as minhas dúvidas. Um aparte interessante, no outro dia vi um robot idêntico ao teu mas em vez de utilizar um portátil, usava uma TI-83 e era muito mais pequeno, no entanto só podias contar com ela para assembler contudo já se anda a fabricar uma maneira de correr linux em processadores z80 o que facilita mais a vida

Bem talvez consiga entrar no IST este ano.. =)

Estás aonde ? Alameda ou Tagus ?

Boas o Bruno não se encontra cá de momento visto que está de férias. Quando ele voltar tenho a certeza que te retira as duvidas todas.

strong regista-te e começa a colaborar com o forum que nós colaboramos contigo.

Faltava-me definir as permissões nesta secção... :?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esta thread está simplesmente genial. Força com isso... :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pelo apoio e como o deathseeker25 disse e mto bem estive de férias alguns dias... Infelizmente o projecto está em stand by (até inicio de Setembro)! (não imaginam os problemas encontrados no controlo dos motores :s)

Em relação  s perguntas...

Bruxinho8: O site é http://samples.microchip.com/Default.aspx mas recentemente (tv por mtos abusarem) eles agora já so mandam para quem se regista com um e-mail de uma universidade (não sei ao certo como eles verificam isso... mas posso-te dizer q com o meu do IST dá)

Não tens site referente ao robot q fizeram?

strong: Estou na Alameda e a ver se entras no IST :P Em relação  s respostas:

1ª Não nos preocupamos mto com isso, ele chega bem para o que queremos (uma vez que o nosso PIC n está a ser o sistema central...). No datasheet do mesmo encontramos:

Program Memory Type Enhanced Flash

Program Memory Size (bytes) 14336

RAM Size (bytes) 368

Data EEPROM Size (bytes) 256

I/O pins 22

2ª Houve uma rapariga que saiu, portanto agora somos 3, 2 de Informática e 1 de LCI (Ciências Informáticas) e os anos não são os mesmos... (e espero que brevemente haja mais alguem q possa ajudar :D)

3ª Eu acho q a nossa ideia foi evoluindo ao longo da construção... eu diria que a nossa ideia inicial era fazer algo simples (motores fracos e servir só para se desviar dos obstáculos) e penso q isso se conseguia com 120/1300‚¬! Mas como fomos fazendo e nos motivando tentamos fazer algo q começe por ser simples e permita evoluir facilmente (por exemplo, adicinar um braço/um aspirador/etc) e isso levou-nos a aquisição de uns bons motores e a valores actuais de +- 2200‚¬ (fora o braço).

Quanto mais irá custar depende da precisão que queiramos... tipo se virmos um sensor como um olho (obviamente trata-se de uma comparação parva, mas é perceptivel) tu preferias ter 500 sensores... de momento temos 4, brevemente pensamos numa webcam... portanto é dificil dizer qt iremos gastar... mas penso q até ao final do ano n devemos gastar mais de 30/500‚¬ (tv na webcam)

Se houver mais dúvidas força :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

EU confesso que não percebo nada de robótica, mas vi o vosso projecto, seu que têm tentado poupar, mas acho um projecto interessante. Sei que têm limitações monetárias, mas aqui fica uma pequena ideia para futuras actualizações do projecto.

Tenho visto que usam um portátil para controlar o Robot, mas já pensaram usar uma motherboard miniITX ou nanoITX da VIA. Estas motherbords são muito pequenas e podem usar pequenas quantidades de energia, assim como baterias. As motherboards já possuem processadores incluídos e têm suporte suporte para monitores tft auto-alimentados. Seria um formato interessante para melhorar o aspecto do robot.

Aqui fica uma ideia, não sei se é útil ou não. Boa sorte com o projecto.

Com os melhores cumprimentos,

Sérgio Matias

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
EU confesso que não percebo nada de robótica, mas vi o vosso projecto, seu que têm tentado poupar, mas acho um projecto interessante. Sei que têm limitações monetárias, mas aqui fica uma pequena ideia para futuras actualizações do projecto.

Tenho visto que usam um portátil para controlar o Robot, mas já pensaram usar uma motherboard miniITX ou nanoITX da VIA. Estas motherbords são muito pequenas e podem usar pequenas quantidades de energia, assim como baterias. As motherboards já possuem processadores incluídos e têm suporte suporte para monitores tft auto-alimentados. Seria um formato interessante para melhorar o aspecto do robot.

Aqui fica uma ideia, não sei se é útil ou não. Boa sorte com o projecto.

Com os melhores cumprimentos,

Sérgio Matias

Eu quando li esta thread lembrei-me das WRAP boxes e um modulo de rádio Wi-fi encavado na miniPCI para controlo remoto do robot, mas não é bem esse o objectivo do projecto.

O robot tem que se guiar sozinho...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O colocar um outro pc em vez do portatil (tenho ali um amd 1200) tem um único problema... como alimentá-lo!? :P

Essas boards que falas consomem qt? Onde há baterias para elas? Aqui o problema actual de n usar um pc mais a sério é mesmo esse... como alimentá-lo (sem uso de fio)?

Por exemplo o braço robotico consome uma pilha de 9v em 30 minutos :P

Estamos agora a tentar que ele retire a energia das baterias dos motores...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma hipótese seria usar uma ups sem o som activado, isto de uma maneira rudimentar.

Estive  procura e existe alguma informação sobre o uso de baterias em boards ITX.

http://www.epiacenter.com/modules.php?name=Sections&sop=viewarticle&artid=59

Existe a hipótese de com um adaptador de corrente usar baterias de carro de 12V/24V, e penso existirem algumas de 12V bastante pequenas e com boa autonomia. Além disso os processadores incluídos nas boards gastam pouca energia, libertam pouco calor (existem versões sem fan).

Em relação ao formato ITX fica aqui outro site:

http://www.mini-itx.com/

O formato itx é muito bom para ser usado em micro computadores, firewalls, media centers, computadores para carros com touch e tft's e possuem muitos acessórios. A imaginação é o limite deste formato. No site mini-itx.com existem construções extremamente interessantes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora