Especificacoes Software

Marcelo Maurin Martins
Attachments

Visão Geral do Software

O software do Robotinics é dividido em 2 blocos, conforme sua atribuição:
1) Software embarcado Linux/Raspberry PI
2) Software embarcado Arduino MEGA/UNO

Nota do Desenvolvedor

Muitas das funcionalidades aqui não tem a pretensão de serem entregues no TCC.
Espero e tenho fé que este projeto faça parte de um grande esforço para criar uma solução open source.
Eu por meu lado continuarei fazendo meu papel de formiga, tentando criar no que for possível, e no que Deus me permitir as funções no meu tempo livre.

Acredito piamente que alguém, algum dia criará um projeto como este, e tenho certeza que se não for eu, será outro. Então porque não tentar?

O processo lógico e a proposta foram geradas, se não forem totalmente entregues no TCC espero entregar no meu futuro mestrado, que tenho a pretensão também de fazer.

Felizmente muito já foi feito, e tenho convicção que o que foi aqui proposto não é impossivel, tendo muito já feito, o que vejo só é que é trabalhoso.

Funcionamento

Cada módulo possui uma série de programas destinados a funções diferentes.

Programas do Raspberry PI

O modulo raspberry PI faz o gerenciamento e comunicação com o mundo externo, gerenciando os demais equipamentos.

Veja detalhes do Bloco de atuação do Raspberry PI:
https://sourceforge.net/p/robotinics/wiki/Especificacoes%20Software/attachment/processos%20do%20robotinics.jpg

Cada recurso no raspberry pi é tratado como um job (thread) e se comunica com outra thread a través de um socket.
Acima na imagem é possivel identificar as seguintes informações por thread:
1) Nome do arquivo do programa em c
2) Função que faz referencia ou controla
3) (*Opcional) - Descrição em ingles
4) Porta que utiliza para comunicar

Descrição das Aplicações

[fala.c] - Responsável pelo controle do que o robô fala, esta sub rotina tem a incumbência de permitir falar. O que será dito não é controlado aqui, porem como é dito e os códigos responsáveis pelo gerenciamento do hardware sim.

[mp3.c] - Responsável pelo controle de tocar mídias (audios mp3), esta rotina permite tocar scripts pré configurados. O funcionamento desta recurso ainda esta pendente de definição.

[srvMonitor.c] - Responsável pelo gerenciamento das informações do Arduino Base (MEGA), nele tanto funções de leitura dos parâmetros como comandos de ação são executados.

[srvMonitor2.c] - Responsável pelo gerenciamento das informações do Arduino UNO, nele tanto funções de leitura dos parâmetros como comandos de ação são executados.

[srvRaspberry.c] - Mesmo esta aplicação sendo no próprio raspberry, algumas ações de gerenciamento devem ser necessárias, tais como identificação do IP da máquina, configurações de portas USB , etc. Este aplicativo torna estas tarefas realizadas, agendando e executando tais tarefas.

[CAM.c] - Rotinas relacionadas a aquisição de frames de video são realizadas e processadas com codigos opencv, esta rotina permite que sejam reconhecidos estes padrões e passados a diante.

[Memory.c] - Para um robô funcionar a principal capacidade que é inerente é a memoria, não a memória física, mas sim armazenamento de padrões necessários que podem ser solicitados posteriormente. Estes padrões devem ser armazenados em banco de dados Mysql e posteriormente encaminhados ao solicitante.

[Neural.c] - Uma rede neural é um mecanismo hábil para reconhecer padrões, para tanto ele recebe informações e analisa estatisticamente baseado em uma parâmetro que foi treinado. A rotina responsável por pedir tais parâmetros para a Memory.c, recebendo informações de outros recursos e processando saídas é o Neural.c. Esta rotina é altamente complexa, não tendo eu a pretensão de criar uma forma de vida artificial. Porem muito pode ser feito com pequenos truques de reconhecimento de padrão. Espero incluir alguns para processar certos padrões, como reconhecimento facial entre outros.

[Websrv.c] - Um servidor Web sempre é útil para permitir compartilhar informações com o usuários. Tanto para permitir entrada de comandos, como receber informações de saída.

[srvDevices.c] - Alguns dispositivos como tablets, ou aplicações externas podem ser conectadas diretamente ao robô, para permitir maior integração com o ambiente. Estes dispositivos são integrados através deste código.

Programas do Arduino

O modulo Arduino Mega, alem de controlar os dispositivos de I/O do robo , como braços e sensores, também faz a ponte de comunicação com o Arduino UNO.

Detalhes técnicos dos dispositivos

[MCabeca] - Detalhamento do software MCABECA
[Arduino%20Robotinics] - Detalhamento do software Arduino Robotinics

Tools

Para o desenvolvimento de um conjunto de recursos como este, algumas ferramentas de teste serão necessárias.
Para prover estes testes, serão utilizados ambiente vnc juntamente com Lazarus.

O Lazarus, é uma ferramenta opensource e permite criar aplicações tanto para Raspberry quanto para PC.
Desta forma ganhamos tempo implementando aplicações intercambiáveis.

São considerados ferramentas de teste:
. Simulação de comunicação entre os serviços
. Leitura dos dispositivos
. Simulação de Comandos para os serviços.
. Simulação de comandos do PC para o Arduino


Related

Wiki: Arduino Robotinics
Wiki: MCabeca
Wiki: Menu principal

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks