Página 2 de 2

Re: [MINDSTORMS] LEGO barcode scanner

Enviado: 20 jan 2020, 12:01
por CyberX
o código já está funceminando... foi bem mais fácil do que pensava, uma lista para aqui, uma recursividade para ali e já tá.

Isto faz-me lembrar os malfadados pointers do Pascal e do C... cheira-me a memory leaks não tarda nada mas enfim, quem nunca viu um segfault que atire a primeira pedra.

Re: [MINDSTORMS] LEGO barcode scanner

Enviado: 20 jan 2020, 13:42
por AVCampos
Ora, não se lembram que era costume em todos os eventos estar a construir (e no fim a destruir) com bricks as paredes e balizas do campo de TechBall? Aqui faz-se o mesmo! ;D

Re: [MINDSTORMS] LEGO barcode scanner

Enviado: 20 jan 2020, 13:44
por Conchas
AVCampos Escreveu: 20 jan 2020, 13:42 Ora, não se lembram que era costume em todos os eventos estar a construir (e no fim a destruir) com bricks as paredes e balizas do campo de TechBall? Aqui faz-se o mesmo! ;D

Não deve ser do tempo do @CyberX ! ;D

Re: [MINDSTORMS] LEGO barcode scanner

Enviado: 20 jan 2020, 13:51
por CyberX
AVCampos Escreveu: 20 jan 2020, 13:42 Ora, não se lembram que era costume em todos os eventos estar a construir (e no fim a destruir) com bricks as paredes e balizas do campo de TechBall? Aqui faz-se o mesmo! ;D
Fake news. Nunca vi tal coisa donde se conclui que nunca ocorreu.

Re: [MINDSTORMS] LEGO barcode scanner

Enviado: 20 jan 2020, 20:48
por gads
Muito fixe o barcode scanner :clapping:
A ideia de dar isso aos putos para descobrirem a saída de um labirinto foi algo que me veio logo à cabeça também. Era uma experiência interactiva com o público que não exigiria muito mais do que já está feito ;D

Re: [MINDSTORMS] LEGO barcode scanner

Enviado: 21 jan 2020, 12:15
por CyberX
Segunda versão do EV3 Code Pilot agora mais funcional:
- record and play de comandos
- operação relativamente simples e assistida por voz (por enquanto em inglês apenas)
- explicitamente prevista a remoção do scanner (o que permite, por exemplo, a utilização de um scanner apenas com 'n' robots num mesmo evento)



O hub USB não é necessário, eu é que gosto de complicar as coisas. Dispensado wi-fi, basta ligar o EV3 com o microSD do ev3dev lá dentro, navegar a estrutura de ficheiros até ao meu programa e mandar executá-lo, inserindo o scanner quando necessário e removendo-o quando desnecessário. Plug and play.

A próxima versão já deverá ter um conjunto de instruções ligeiramente mais rico (por exemplo a escolha de tempos de execução diferentes para cada passo ou notas musicais, à semelhança do Code Pilot original) e aceitam-se sugestões (esqueçam coisas como loops ou variáveis, não estou para desenvolver uma pseudo-linguagem de programação).

Agora o paleio técnico-maçónico do costume para parecer que percebo bué disto:
- cada código de barras é armazenado no programa python como um "dicionário", uma estrutura de dados que basicamente é um array que armazena o valor numérico do código de barras, uma palavra que contextualiza a função a executar (como "Forward") e a instrução em python que deve ser executada (no caso de "Forward" um comando da API ev3dev que comanda 2 motores em simultâneo)
- a cada código de barras lido é verificado se existe no dicionário e em caso afirmativo é adicionado o campo da intrução a uma lista (outra estrutura de dados)
- quando estamos satisfeitos retiramos o scanner e mandamos percorrer a lista de instruções, executando-as com uma função fantástica de python chamada "exec" e que permite executar código python dentro de python

Tudo isto sem ponteiros nem outras coisas que me horrorizavam em C/Pascal - as estruturas de dados em Python já incorporam tudo o que é necessário.

Como habitualmente todos os desenvolvimentos deste projecto incluindo código fonte, PDF's e sabe-se-lá mais o quê estarão disponíveis online free as in beer and free as in speech: https://ofalcao.pt/blog/series/barcode

Re: [MINDSTORMS] LEGO barcode scanner

Enviado: 21 jan 2020, 20:31
por CyberX
entretanto adicionei mais uns comandos:
- escolha do tempo que cada comando de movimento dura a executar (1, 2, 3, 4 ou 5 segundos ou um valor aleatório de entre estes 5)
- escolha da "velocidade" aplicada aos motores (20, 40, 60, 80 e 100%)

Com isto fiz uma nova folha de comandos mas fiz um erro - para poupar espaço coloquei 2 comandos por linha e o scanner tem dificuldades em distingui-los porque varre a folha toda de um lado ao outro, tenho de tapar um dos comandos com a mão. Terei de imprimir nova folha noutro formato.

Amanhã tentarei alguns sons pré-gravados e as notas músicais básicas de modo a ficar mais parecido com o Code Pilot original. Esse também tinha 2 comandos para ler um sensor de toque mas não estou a pensar implementar.

Re: [MINDSTORMS] LEGO barcode scanner

Enviado: 22 jan 2020, 23:27
por agadoijo
Gosto muito do conceito disto! Bom trabalho!
:clapping: :clapping: :clapping:

Re: [MINDSTORMS] LEGO barcode scanner

Enviado: 22 jan 2020, 23:35
por AVCampos
Seria mais fácil de usar por crianças (e muito mais difícil de programar) dividir o campo em células, como um labirinto desenhado em papel quadriculado, e o robot mover-se-ia uma célula de cada vez e rodaria 90º (assumindo células quadradas).

Re: [MINDSTORMS] LEGO barcode scanner

Enviado: 23 jan 2020, 00:05
por CyberX
AVCampos Escreveu: 22 jan 2020, 23:35 Seria mais fácil de usar por crianças (e muito mais difícil de programar) dividir o campo em células, como um labirinto desenhado em papel quadriculado, e o robot mover-se-ia uma célula de cada vez e rodaria 90º (assumindo células quadradas).
baseplates de 2 cores dispostas como num tabuleiro xadrez?
um sensor de cor a apontar para baixo para determinar a mudaça de quadricula, um giro para garantir que 90º são mesmo 90º...
fazivel mas acho que não tenho tempo para desenvolver isso até Oeiras. O código está aberto, se alguém quiser experimentar força!

Re: [MINDSTORMS] LEGO barcode scanner

Enviado: 23 jan 2020, 00:18
por AVCampos
CyberX Escreveu: 23 jan 2020, 00:05 um giro para garantir que 90º são mesmo 90º...
Com o tempo isso irá acumular erro, talvez fosse melhor dois sensores de cor lado a lado para, quando um detectasse a mudança de cor, o robot rodaria sobre si mesmo até o outro também detectar.