LusoRobótica - Robótica em Português

Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: ricard0g0mes em 19 de Julho de 2009, 22:46

Título: Rasteiro
Enviado por: ricard0g0mes em 19 de Julho de 2009, 22:46
Boas,


Estou a começar a desenvolver um robot, com lagartas e que seja capaz de evitar obstáculos, e saber voltar sempre ao local de onde partiu.

Deixo cá um pequeno video da fase actual.
Neste momento já se mexe, em todas as direcções e com velocidade variável por pwm.

O controlador é um PIC18F4550.

Como o meu tempo livre é muito pouco, isto acho que vai levar uns mesitos mas... é por gosto. ;)

http://www.youtube.com/watch?v=cIt2ICiQmCA (http://www.youtube.com/watch?v=cIt2ICiQmCA)


Título: Re:Rasteiro
Enviado por: ricard0g0mes em 19 de Julho de 2009, 22:50
Para já está tb com alimentação directa de uma fonte externa. No futuro, terá concerteza umas baterias ;)
Título: Re:Rasteiro
Enviado por: Njay em 19 de Julho de 2009, 22:56
Continua ;)!
Título: Re:Rasteiro
Enviado por: ricardo-reis em 19 de Julho de 2009, 23:00
tens aí uma boa base.. força nisso..
Título: Re:Rasteiro
Enviado por: metRo_ em 19 de Julho de 2009, 23:11
Está com melhor aspecto o Robot que as filmagens :P
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 19 de Julho de 2009, 23:13
lol... pois... estive a filmar com o telele. quando fizer mais progressos ja filmo com camera ;)
Título: Re:Rasteiro
Enviado por: amando96 em 19 de Julho de 2009, 23:36
bem fixe, quero ver no final.

onde arranjaste ess base?? :o :o
Título: Re:Rasteiro
Enviado por: TigPT em 20 de Julho de 2009, 01:01
Muito bom aspecto, continua...

(realmente, senti-me de pernas para o ar :P )
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 20 de Julho de 2009, 08:41
Boas,

A base foi comprada na DAGU(China). custou $24
Já vem com as lagartas e com os motores e caixas redutoras.
;)
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 20 de Julho de 2009, 09:46
já agora, podem ver cá um projecto com a mesma plataforma e arduino.
http://letsmakerobots.com/node/5351#comment-27474
Título: Re:Rasteiro
Enviado por: andnobre em 20 de Julho de 2009, 10:22
ja tens ai um bom trabalho força nisso.
abraço
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 20 de Julho de 2009, 13:47
Algumas fotos do projecto:


Interface para o controlador dos motores DC:
http://twitpic.com/azvg8
http://twitpic.com/azvxl
http://twitpic.com/azvyn

Interface USB(para ficar disponivel na parte lateral do robot, de maneira a ser possivel alterar o firmware a qq altura):
http://twitpic.com/azvzw

Placa principal desenhada por mim:
http://twitpic.com/azw2l
Título: Re:Rasteiro
Enviado por: DanBar em 20 de Julho de 2009, 13:50
Sempre gostei de lagartas.

Um dia tenho que adquirir essa base.
Título: Re:Rasteiro
Enviado por: TigPT em 20 de Julho de 2009, 14:52
Não conhecia esse pololu, faz-me lembras os stamp da paralax.
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 20 de Julho de 2009, 15:06
Não conhecia esse pololu, faz-me lembras os stamp da paralax.

Pois, este é muito porreiro.
Dá 1A por cada motor e controle de velocidade, etc.
http://www.sparkfun.com/commerce/product_info.php?products_id=8905

7,12€ cada.
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 28 de Julho de 2009, 16:47
Pequena actualização:

Já tenho o PIC a receber e interpretar um comando nunchuck que comprei por 4,5€ no ebay ;)
Agora vou passar à parte de controlo da direcção de acordo com as ordens que lhe dê com o comando.

O próximo passo será criar um sistema de "mapeamento" em X, Y utilizando os encoders rotativos que comprei. Já agora, se alguém tiver um exemplo de programa que use esses encoders ou idênticos, agradeço.
Eles usam o código gray... ainda tenho de o estudar antes... :(

Título: Re:Rasteiro
Enviado por: ricard0g0mes em 28 de Julho de 2009, 17:02
Bem, fica aqui um exemplo que encontrei na rede:

Citar
Citar
//This is the decoder for a change in the quadrature inputs. Called on
//port B change
//interrupt, using the fast return stack.
void quad(void) {
   static int old;
   static int new;
   static int value;
   //Here I have an edge on one of the quadrature inputs
   new=input_b();
   //Now I have to decode the quadrature changes. There are four
   // possibilities:
   //I can have a rising or falling edge, on each of the two inputs. I have to
   //look at the state of the other bit, and increment/decrement according
   //to this.
   value=new^old;
   //'value', now has the bit set, which has changed
   if (value & 0x10) {
      //Here the low bit has changed
      if (new & 0x10) {
         //Here a rising edge on A
         if (new & 0x20) --position;
         else ++position;
      }
      else {
         //Here a falling edge on A
         if (new & 0x20) ++position;
         else --position;
      }
   }
   else {
      //Here the high bit (B) must have changed
      if (new & 0x20) {
         //Here a rising edge on B
         if (new & 0x10) ++position;
         else --position;
      }
      else {
         //Here a falling edge on B
         if (new & 0x10) --position;
         else ++position;
      }
   }
   old=new;
   bchanged=0;
}

'position', is a global value containing the current shaft position.
Now, this code looks long, but if you track it through, each possible path, for the different input combinations, involves only reading the port, an XOR, two logic tests, and then incrementing/decrementing the position variable.
Used with the normal interrupt handlers, and reasonable speed on the PIC, this should work fine. However I used it with a minimised 'global' handler, that doesn't save most registers, and like this, it happily handled a servo at up to 5000RPM, on a 128 line encoder.

Título: Re:Rasteiro
Enviado por: Pauleta em 28 de Julho de 2009, 18:46
Viva as Pics!!!  ;)

Essa coisa do mapeamento dá me uma ideia para o meu robot semelhante ao teu. Quem sabe de futuro lhe meta um módulo GPS ou assim. Mas para já ainda o tenho de meter a circular...

Título: Re:Rasteiro
Enviado por: ricard0g0mes em 29 de Julho de 2009, 00:09
Só uma pequena brincadeira:

http://twitpic.com/byl76 (http://twitpic.com/byl76)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg37.imageshack.us%2Fimg37%2F9416%2Fimage181f.jpg&hash=96db1df4073048413bf3ed8a273c256d8e021aee)

... agora já tenho um LCD a funcionar para diagnostico... não havendo porta serie no portátil... teve de ser ;)


Título: Re:Rasteiro
Enviado por: Pauleta em 29 de Julho de 2009, 19:10
sempre podes usar um cabo conversor RS232 para USB...
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 30 de Julho de 2009, 08:36
sempre podes usar um cabo conversor RS232 para USB...

pois, eu sei. eu tenho um que emprestei a alguém que já não sei quem...
ja comprei um novo pelo ebay... estou à espera que chegue.
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 30 de Julho de 2009, 15:14
Boas,

Já agora, fica aqui o esquema da placa que desenhei juntamente com um amigo para fazer a pcb para interface com o pic18f4550.

todas as portas estão disponíveis por "Molex's", e a comunicação por RS232 e usb tem uns jumpers associados para o caso de se querer usar as portas RC4, RC5, RC6 e RC7 para outros fins que não as comunicações.

Tem tb os botões para reset e entrada em bootloader.


http://twitpic.com/c4qgs

se alguem quiser os gerber files, posso arranjar.

P.S- o esquema tem um erro na max232 (falta ligar os pinos 8, 10 e 15 ao GND e ligar um condensador entre o pino 15 e a GND).

Título: Re:Rasteiro
Enviado por: ricard0g0mes em 02 de Agosto de 2009, 22:58
Fica cá um pequeno video com o robot em movimento comandado com o joystick do nunchuck.
Para activar os motores tenho de premir os botões C e Z. A velocidade já depende da pressão que faça do joystick para a frente ou para trás em 3 níveis.

http://www.youtube.com/watch?v=VeqBawgmtWQ
Título: Re:Rasteiro
Enviado por: metRo_ em 02 de Agosto de 2009, 23:04
Para colocares o vídeo basta colocar o link do youtube :)
Ainda não definis-te para os lados?
Quando isso ficar sem fios!
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 03 de Agosto de 2009, 08:28
Para colocares o vídeo basta colocar o link do youtube :)
Ainda não definis-te para os lados?
Quando isso ficar sem fios!

pois... o tempo tem sido mesmo muito pouco... uns minutitos por dia.
para os lados é já a seguir... sem fios, para já não é prioridade.
Título: Re:Rasteiro
Enviado por: Rebel em 03 de Agosto de 2009, 17:38
Uma ideia: Usar um nunchuck wireless (As ligações devem ser as mesmas)
Título: Re:Rasteiro
Enviado por: Pauleta em 03 de Agosto de 2009, 22:53
Altamente!

Engraçado, o meu projecto é semelhante ao teu... essa base de lagartas parece muito porreira. Acho muita piada as lagartas mesmo.

Tenho de pensar também na questão da velocidade variável dos motores.
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 04 de Agosto de 2009, 11:50
Altamente!

Engraçado, o meu projecto é semelhante ao teu... essa base de lagartas parece muito porreira. Acho muita piada as lagartas mesmo.

Tenho de pensar também na questão da velocidade variável dos motores.

isso é muito fácil de fazer com o pwm e um controlador como o que usei.

Título: Re:Rasteiro
Enviado por: tr3s em 04 de Agosto de 2009, 12:07
Partilha connosco as tuas conclusões, "lessons learned". Como chegaste a essa solução e porquê!
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 04 de Agosto de 2009, 15:54
Partilha connosco as tuas conclusões, "lessons learned". Como chegaste a essa solução e porquê!


qual solução? a do controlador?
ou de utilizar um pic?
usei pic pois estou habituado a trabalhar com eles deste o tempo de universidade, em que usava o 16f876 (acho que era assim).
alem disso, tinha por cá algumas free samples ;)

Título: Re:Rasteiro
Enviado por: ricard0g0mes em 06 de Agosto de 2009, 21:00
http://www.youtube.com/watch?v=Ls-pJkb5UN4

:D
Título: Re:Rasteiro
Enviado por: ricardo-reis em 06 de Agosto de 2009, 21:04
n dá nd, isso, pá..

EDIT: já dá..
Título: Re:Rasteiro
Enviado por: metRo_ em 06 de Agosto de 2009, 21:52
Estava a ver que ele ia subir a caixa :)
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 04 de Setembro de 2009, 11:52
boas,

depois de algum tempo de descanço, vou voltar hoje a pegar no bichinho...

vou agora começar a pensar no sistema de mapeamento (encoder's rotativos, rato optico, outros)... ainda nao sei qual vou usar.

o que aconcelham?
queria o mais simples possivel apenas para saber posição em XY e direcção.
não preciso de velocidade.
Título: Re:Rasteiro
Enviado por: ricardo-reis em 04 de Setembro de 2009, 13:43
é mt teórico, mas usa o sensor do rato optico e tenta calcular a distancia percorrida pelo teu robot em função do tempo que o mandas deslocar..
Título: Re:Rasteiro
Enviado por: maurosmartins em 04 de Setembro de 2009, 13:54
ricard0g0mes, penso que a maneira mais fácil, é usares encoders ópticos.

o que estás a usar como motores, servos alterados?!

pergunto isto porque ando a fazer uns encoders para aos servos.

Ainda não os testei, (não tenho a PCB feita). assim que tenha testado coloco os resultados!

Cumprimentos, Mauro.
Título: Re:Rasteiro
Enviado por: ricard0g0mes em 04 de Setembro de 2009, 14:40
sao motores DC.
para encoders opticos, tinha de comprar ou fazer o disco.
tenho uns encoders rotativos de 12 passos:
http://www.sparkfun.com/commerce/product_info.php?products_id=9117
Título: Re: Rasteiro
Enviado por: ricard0g0mes em 24 de Março de 2010, 15:19
desenterrando este tópico... pois estive uns mesitos com isto parado...

voltei a carga com o meu robot e tenho algumas novidades...

em relação a sensores de distancia, encontrei uns excelentes por ultra sons, e comunicação directa em RS232
Referencia: URM37 3.2
http://milesburton.com/wiki/index.php?title=URM37_Ultrasonic_Distance_Measurement_Library (http://milesburton.com/wiki/index.php?title=URM37_Ultrasonic_Distance_Measurement_Library)

Quanto a encoders para as rodas, vou usar uns simples optoacopladores deste genero:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.soselectronic.com%2Fa_info%2Fimg_data%2Fd%2Fico_KTIR0621DS.jpg&hash=ef50c5293938e5cd89fca0ed30e41c48479882f2)

Estou agora a desenhar uma nova placa que irá incluir tudo o que preciso para o robot e possibilidade de expansão :D

fica aqui a imagem da placa como está neste momento... ainda vai levar alterações antes de enviar para ser feita.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fgrupomotard.com%2Fplaca_v1.jpg&hash=e3cab3cd2963b45ef21b781ba8ecd9e1a3fb644c)

Já agora, quais os melhores locais onde fazer as placas? queria dupla face, e se possivel, com serigrafia.
pode ser online em qq pais... desde que chegue cá... heehhe

tenho usado a circuitotal cá de Aveiro, mas fica um pouco caro.

thanks
Título: Re: Rasteiro
Enviado por: TigPT em 24 de Março de 2010, 15:37
Testa a http://futurlec.com/ (http://futurlec.com/)

Força com o projecto, está a ir muito bem ;)
Título: Re: Rasteiro
Enviado por: Njay em 24 de Março de 2010, 15:57
Posso dar-te umas dicas para usar a futurlec, já usei os serviços deles. Têm aqui um simulador de preço:

http://futurlec.com/PCBService.shtml (http://futurlec.com/PCBService.shtml)

Os custos de envio são

# For orders up to US$29, Delivery Charge - US$4.00.
# For orders US$30 to US$49, Delivery Charge - US$6.00
# For order US$50 to US$99, Delivery Charge - US$9.00
# For order US$100 and above, Delivery Charge - US$14.00

Deves fazer o teu PCB respeitar as regras de design (vê os links no inicio da página do simulador), nomeadamente as distâncias mínimas entre pistas e, principalmente, os tamanhos de furo suportados.

Os preços são bons, demora é muito tempo. Os PCBs vão levar na melhor das hipóteses cerca de 4 semanas (uns dias para eles verificarem os ficheiros e pagares, uma semana para fabricar, e 1.5 a 2 semanas para chegar cá).
O envio que aconselho e a que se referem os preços acima é correio aéreo registado. Deves "ficar à coca" de quando o pacote chega a Portugal para ver se entra na alfandega e, se ficar e ficar lá "retido", ligas para os CTT (707 26 26 26) a pedir o número local do pacote (dando o número de registo) e depois envias um email para internacional@ctt.pt a indicar o preço da encomenda (por exemplo uma cópia do resultado do simulador de PCBs mais o preço dos portes) para que o desalfandegamento seja o mais rápido possível (senão bem podes contar com mais umas 3 a 4 semanas só em Portugal).
Título: Re: Rasteiro
Enviado por: ricard0g0mes em 25 de Março de 2010, 20:19
estado actual do desenho da nova placa em eagle:

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fgrupomotard.com%2Fplaca_v1.png&hash=23bcb140dd1f17b126add241fae92383c6b0718b)


;)
Título: Re: Rasteiro
Enviado por: amando96 em 25 de Março de 2010, 21:07
A orientação do ''jack'' de usb será adequada?  :o
Título: Re: Rasteiro
Enviado por: DanBar em 25 de Março de 2010, 21:30
Isso é um bug do programa 3D. Acontece comigo também.  ???
Título: Re: Rasteiro
Enviado por: ricard0g0mes em 25 de Março de 2010, 23:55
Isso é um bug do programa 3D. Acontece comigo também.  ???

lol... pois, eu sei... sao alguns pormenores ainda a ver ;)
Título: Re: Rasteiro
Enviado por: ricard0g0mes em 01 de Abril de 2010, 11:17
já agora, quem quiser usar este sensor de ultrasons com arduino, tem aqui uma pequena ajuda:
http://milesburton.com/index.php/URM37_Ultrasonic_Distance_Measurement_Library (http://milesburton.com/index.php/URM37_Ultrasonic_Distance_Measurement_Library)

;)
Título: Re: Rasteiro
Enviado por: ricard0g0mes em 05 de Abril de 2010, 21:17
bem, acho que terminei o desenho da minha pcb...
ja fiz a placa em eagle e o route está a 100%.

agora, queria certificar-me que está tudo dentro dos limites minimos para mandar fazer as placas na Futurlec...

Haverá cá alguem a quem eu pudesse enviar o ficheiro do eagle com ja alguma experiencia com a Futurlec para verificar que está tudo em ordem?

Ou entao, alguém que me possa enviar o ficheiro de configuração das regras necessárias para carregar directamente no eagle de maneira a que ele redesenhe a pcb de acordo com o pedido...

é que aquilo tem para lá parametros que nunca mais acaba... nao me entendo com aquilo... acho eu... :D
Título: Re: Rasteiro
Enviado por: Njay em 05 de Abril de 2010, 21:23
Eagle não uso por isso não te posso ajudar, mas as regras a respeitar são simples, consistindo essencialmente na distância mínima entre pistas, largura minima de pistas e os furos, que têm que ser um tamanho que eles suportem (está na página da Futurlec).

O meu conselho logo à partida é usar pistas e ilhas o mais largas possível e o mais espaçadas possível. Se tiverem espaço, engrossem as pistas e afastem-nas equatitativamente. Quando mais largas menos possibilidades de a coisa sair mal, mais resistentes são ao calor da soldadura, mais resistentes são mecanicamente, mais aixa será a sua resistência eléctrica, menos cobre será diluído nos ácidos, mais fácil é soldar, enfim, só vantagens.
Título: Re: Rasteiro
Enviado por: ricard0g0mes em 13 de Março de 2013, 23:26
Reabrindo este topico...

o meu robot agora está com um novo cerebro... o arduino ;)

Segue abaixo um video onde se pode ver ele já a circular usando apenas odometria para se localizar e um algoritmo para se mover até um dado ponto em XY.

Rasteiro v2.6 (http://www.youtube.com/watch?v=___MEYxXpmQ#ws)
Título: Re: Rasteiro
Enviado por: kast em 14 de Março de 2013, 00:24
Só com odometria ?

Não tem nenhum magnetometro ? ou algo do género ?
Pareceu-me que o rasteiro sabia bem para onde queria ir, só com odometria ... parece-me dificil.

Mas gostei bastante de ver o rasteiro ... até já fiquei com mais vontade de fazer um tb. :D
Título: Re: Rasteiro
Enviado por: Hugu em 14 de Março de 2013, 03:18
o video nao funca.. ou é só cmg? ???
Título: Re: Rasteiro
Enviado por: dio123 em 14 de Março de 2013, 11:15
exprimentei agora e consegui visualizar o video.

se nao der exprimentar noutro browser.
Título: Re: Rasteiro
Enviado por: Hugu em 14 de Março de 2013, 16:44
ja consegui ver  :)

o robot memoriza posiçoes ou memoriza deslocamentos?
Título: Re: Rasteiro
Enviado por: ricard0g0mes em 19 de Junho de 2013, 20:55
boas,

o robot está constantemente a vigiar a posição, orientação e a comparar com o destino pretendido.
para diminuir erros acumulados, queria agora adicionar uma busssola digital, mas acho que estou com bastantes problemas com interferencias dos motores (acho que será por isso....)

Não, no video ainda só usava mesmo odometria. ;)