IA robotinics
Apresentação de Proposta de Projeto IoT – Uninove

O trabalho a baixo será apresentado em um seminário, em 17/11/2021, para alunos da uninove, sobre o robotinics. Este trabalho é referente a IoT, e faz parte integrante da minha Pós graduação em aprendizado de máquina.

O material a seguir, é um complemento a apresentação que será feita.

O Robotinics é uma plataforma open hardware para desenvolvimento de robótica educacional.

Possui documentação própria: http://maurinsoft.com.br/index.php/robotinics-3/

Apresentando uma visão do ROBOTINICS, e proposta de rede neural aplicada.

Abaixo o treinamento para o seminário, onde apresentei aos colegas da turma, onde refinaremos os detalhes da apresentação.

Treinamento para a apresentação do seminário

O Objetivo do seminário é a apresentação de proposta de IoT, usando redes neurais.

Neste contexto, apresentei a proposta acima, utilizando o robotinics.

O Material a seguir, são detalhes que apresentarei apenas como comentário, onde nos vídeos abaixo, mostro o detalhe do assunto abordado.

Como tudo começou – A 8 anos atras.

Neste vídeo vimos minhas filhas ainda pequenas, recortando o isopor que deu idéia ao projeto.

Minhas filhas fazendo os primeiros recortes

Neste contexto, o projeto nasceu como uma brincadeira de criança, onde eu como pai, acabei criando um projeto por me sentir compelido a provar que podemos sim criar robôs.

Do momento da brincadeira, até hoje, passaram mais de 8 anos.

Apresentação da Cabeça do robô

Neste vídeo explico a cabeça do robô, onde mostro o seu processo construtivo, envolvendo a eletrônica.

Mostro como foi construído, e o que fiz para simplificar alguns processos que foram sendo corrigidos nesta longa caminhada.

Agora apresentando a detecção de face

Apresento detalhes da detecção de face, usando os script do shell, integrado com motion.

Detecção de face através de python

Neste processo, mostro o script de python, usando opencv, que foi utilizado, para detectar faces humanas.

FANN Lib no robotinics

Neste vídeo apresento o processo de instalação da FANN lib, para utilização no raspberry.

No livro, na segunda revisão, apenas apresento, a instalação da libFANN, onde mostro sua execução.

De forma geral, a escolha desta lib, foi em função de sua velocidade e da diminuta utilização de recursos.

Controles e comandos do Robotinics

Neste vídeo apresento o controle remoto do robô, que permite controlar através de Bluetooth, dando comandos ao robô, de forma de telepresença.

Neste método, podemos através de uma aplicação em Desktop, controlar remotamente o robô.

O Robô na época não possuia nenhum padrão de IA, por isso era quase totalmente controlado remotamente (Telepresença).

Inclusive, foram criados aplicações desktop para permitir seu controle.

No vídeo apresento alguns destes softwares, rodando no robô.

Montagem das peças

Neste vídeo apresento algumas peças, o processo de montagem das mesmas.

O processo de produção passa desde o projeto em SOLIDWORKS, até sua impressão em uma impressora 3D.

montagem das peças no solidworks

Muito foi aprendido para chegar nesse nível, pois tive que fazer curso técnico de mecânica industrial, para conseguir obter o conhecimento necessário para chegar neste ponto. Inclusive o trabalho foi o TCC deste curso.

Neste outro vídeo apresento a montagem do tronco do robô.

Podemos ver, o processo de montagem, no solid, alem das peças mecanicas, tambem são montadas os componentes eletrônicos.

O Robô se movimentando

Este vídeo foi logo no começo, as peças 3D ainda não estavam prontas, mas o robô já se movimentava através de um script.

Primeiros ensaios de movimento do robô.

Neste vídeo o projeto de hardware já estava pronto, porem ainda não sonhava com reconhecimento de imagem e outras melhorias.

Podemos ver neste primeiro ensaio, que o robô era totalmente feito de isopor. Pois a idéia é criar um projeto que não necessáriamente precise de impressão 3D para ser criado. As peças foram usadas globos de isopor, muito usados em festas. As peças eram envolvidas em cola de madeira, depois epoxi diluido com um pouco de cetona e depois pintadas.

Parte inferior do robô

Neste vídeo apresento detalhes da parte inferior do robô.

processo construtivo alternativo.

Podemos ver o controlador arduino mega e algumas outras peças.

Podemos ver tambem, que muitas partes eram feitas em isopor.

IA pós graduação
Algoritmos Genéticos

O Objetivo do algoritmo genéticos é recombinar soluções possíveis de problemas, filtrando estas soluções sempre pelo grau de acerto. Criando descendentes mais adaptados.

Um exemplo de uso, seria encontrar conjuntos de solução que melhor se adapte. Exemplo, alocação de professor em horario de aula.

Fornecendo gerações mais adaptadas a resolução de problemas, até que na Enézima geração encontrar a melhor solução possível.

Os critérios de Parada

O Critério de parada, é utilizado para determinar o fim das interações genéticas.

  • Tempo de Execução
  • Número de Gerações
  • Melhor solução a resposta alcançada.

Seleção de individuos

Nos algoritmos genéticos, usamos os individuos criados na seleção anterior, avaliando os resultados obtidos.

Utilizando para proxima geração apenas os individuos que apresentaram as melhores soluções.

Seleciona apenas os individuos mais adaptados

Propriedades de uma geração

São propriedades da geração:

  • Taxa de reprodução
  • Probabilidade de mutação
  • Controle populacional
  • Critérios de parada
  • Restrições de ambiente

Cromossomo

O Cromossomo, é a represantação da geração, quanto as informações e funcionalidades presentes no individuo, quanto a resolução do problema proposto.

Codificação

É a transformação da informação em valores posicionais para representar informações presentes no algoritmo genético.

Podemos representar a codificação do cromossomo, através da expressão do peso (Valor) .

Como exemplo iremos atribuir os seguintes itens:

  1. Caracteristica 1 – V1=2
  2. Característica 2 – V2=4
  3. Característica 3 – V3=8
  4. Característica 4 – V4=16

Em uma matriz binária, poderiamos representar nosso gene, através de um sistema binário.

Car1CAR2CAR3CAR4
1001

Na representação acima, podemos ver que a caracteristica 1 e 4 estão presentes no gene.

População Inicial

É a população que possui caracteristicas généticas que serão cruzadas entre sí, gerando diversidade genética.

Mutação

É o relacionamento entre individuos de genética diferente, criando prole diversa, com características misturadas dos individuos PAIS.

Cruzamento de características

Valor Fitness ou adaptabilidade

É o valor de adaptação do genoma, que irá expressar o grau de adaptação ao ambiente que queremos otimizar.

O individuo com menor valor será o mais apto.

Seleção e Reprodução

Taxa de Reprodução é o percentual da população que gerará descendentes. Pode ir de 100% até 0%.

Seleção, é o crivo que determinará se um individuo esta apto a propagar seu gene para a próxima geração.

Avaliação de elegibilidade reprodutiva

Probabilidade ou peso genético

Pega-se o valor fitness do cromossomo, dividindo pelo total do fitness dos cromossomos.

Peso de cromossomo

O Peso do cromossomo, é a soma de todos os genes ativos de um individuo.

Exemplo:

Car1CAR2CAR3CAR4
1001

No exemplo acima, podemos calcular o peso, sendo 1×2+0x4+0x8+1×16= 18.

Podemos determinar um limitador, que será o peso de corte, onde não incluiremos individuos, com valores genéticos acima de um valor. Para evitar chegarmos a valores genéticos totais.

Corte de cromossomo

É o ponto de cruzamento dos cromossomos, no momento da passagem de gene para seus descendentes.

O local de corte é proximo ao ponto central, porem é aleatório.

Otimização

É o processo de tentar encontrar a melhor solução dentre as possíveis para resolução de um problema.

Elementos do Algoritmo genético

  • Alelo – Valor que pode representar um gene.
  • Gene – Representa uma parte ou característica que forma o cromossomo
  • Cromossomo – Representa uma solução genética, formado por genes
  • Individuo – Um possivel solução, contendo um conjunto de dados cromossomicos.
  • `População – Um conjunto de individuos, que serão cruzados
Fila
Nova versão do Guichê

O Software Guichê recebeu uma nova versão a 1.18.

Com esta mudança, houve algumas mudanças cosméticas.

Mudanças de User Ex

Incluindo repaginação da interface do atendente.

Também, houve a inclusão da solicitação dos itens na tela principal.

Esta planejado para 1.18, inclusão das marcações na arvore
Configuração ganhou uma tela

Interface de configuração

A configuração foi separada da tela principal, onde tambem não é necessário mais permissão administrativa.
Tela de Log, que armazena as informações do processo interno.

Melhoria no Instalador

O instalador sofreu melhorias, sendo corrigido os links, que estavam errados na revisão 17.

Fila

O fila foi melhorado, em paralelo, testados em conjunto com o painel.

Fila
Nova Versão do Fila

Saiu uma nova versão do Fila.

As mudanças estão acontecendo no sistema principalmente em melhoria visual.

Fila Novo Visual

Agora a interface ganhou uma nova roupagem, com mais estilo.

Guichê Novo Visual

Com um visual mais atrativo, o Guichê esta caminhando para se tornar uma interface mais robusta e interativa.

Esperamos trazer em breve novidades, finalizando as melhorias visuais do Guichê.

Entre as mudanças estão:

  • Melhoria de interface
  • Árvore de números chamados.
  • Alerta de numero chamado melhorado.
  • Melhoria da gravação de parametros, sem necessidade de modo administrador.
  • Setup otimizado.

Muito do código antigo foi refeito, com novas melhorias previstas na versão 1.17.

Para ver todas as informações deste projeto click no link ao lado.

Projeto Fila
Dicas
Trato em Parreiral

Vou sair um pouco da area de tecnologia, e apresentar minha segunda paixão.

Minhas plantas:

Uvas agora em 7/2021

Vamos abordar alguns cuidados com as parreiras:

  • Poda em junho, preferencialmente no sosticio de inverno.
  • Adubação a cada 2 meses no inverno, e uma vez por mês na primavera e no verão.
  • Irrigação diaria
Uvas em ponto de consumo 2020
pós graduação Sem categoria
Métodos de Busca

Assim, considerando o grafo da Figura 2, que representa a sub-região circulada na Figura 1, e a tabela heurística da Figura 3, represente o problema (Estado, S, s0, G, A e Matriz de Adjacências) e apresente soluções (caminho e custo em Km) para o problema descrito utilizando os seguintes algoritmos de busca: Menor Custo, Dijkstra (árvore), Melhor Estimativa e A*.

Observação: Para referenciar uma cidade use apenas as três primeiras letras.

Exercício

Usar método de menor custo de Itapevi até Osasco.

Tabela de distância até Osasco em linha reta

CidadeDistância KM
Barueri12
Carapicuíba6
Cotia17
Embú15
Itapevi23
Jandira18
Osasco0
Taboão da Serra8

Estimativa de distância até Osasco

Diagrama de conexões

Conexões e custos associados

Árvore de busca de menor custo Itapevi/Osasco

Nesta arvore usamos o custo associado de deslocamento, fazendo todas as conexões possíveis.


Ficando definido a melhor rota Itapevi/Jandira/Carapicuíba/Osasco.

Árvore Dijkstra

Nesta arvore usamos o custo, associado a podas, ignorando os métodos que tem maior custo.

Este método tem podas em Carapicuíba (26) Taboão (36), conforme figura abaixo:


Ficando definido a melhor rota Itapevi/Jandira/Carapicuíba/Osasco.

Árvore Melhor Estimativa

Neste método, usamos a distância até Osasco, pegando sempre a menor distância e ignorando as demais.

Árvore A*

Nesta arvore somamos o custo a distância, criando um valor ficticio. Que será a base da poda.

É uma arvore heuristica, ou seja toma decisões.

Neste método somamos os valores.

Sendo:

JAN(4) = 6+18

COT(4)= 8+17

BAR(3) 11+12

CAR(2) 9+6

OSA(1) 9+0

JAN(6) 9+18

Fila
Fila Versão 1.16

Foi liberado no git a versão 1.16.

Itens modificados:

Melhoria visual do FILA

Conforme figura abaixo:

A opção de fechamento e movimentação tambem foi bloqueada, para não permitir que usuário altere a interface.

Hardware Homologado

O Hardware POS5811-DD, foi incluído no instalador, que agora é suportado por este equipamento.

POS-5811DD

C/C++ Sem categoria
Criando um driver linux

Iremos abordar neste artigo, como criar um device driver em linux.

Pré requisitos

Instale os seguintes pacotes:

sudo apt-get install linux-headers-generic

apt-get install linux-headers-`uname -r`

Instale o gcc:

sudo apt-get install gcc

sudo apt-get install build-essential

apt-get install linux-virtual

GIT do Projeto

https://github.com/marcelomaurin/devicedriver_sample

Compilando o projeto

Abaixo o vídeo explicativo do tópico que será abordado aqui:

Agora vamos ao nosso código, crie um programa hello.c, conforme o código abaixo:

/*
 *  hello.c - The simplest kernel module.
 */
#include <linux/init.h>
#include <linux/module.h>	/* Needed by all modules */
#include <linux/kernel.h>	/* Needed for KERN_INFO */

static int hello_init(void)
{
	printk(KERN_INFO "Hello world 1.\n");

	/*
	 * A non 0 return means init_module failed; module can't be loaded.
	 */
	return 0;
}

static void hello_exit(void)
{
	printk(KERN_INFO "Goodbye world 1.\n");
}

module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("MARCELO MAURIN MARTINS");

Agora crie o Makefile:

obj-m += hello.o

all:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Carregando o Módulo do Kernel

Para carregar o módulo é necessário primeiro entender alguns comandos:

lsmod

Lista os módulos carregados do kernel.

Exemplo de lsmod

insmod

Carrega um módulo no kernel.

Carrega o módulo na memória

dmesg

Mostra mensagens do sistema

Retorno do modulo carregado em dmesg

rmmod

Remove um modulo da memória do kernel

Remove um módulo do kernel
Lista mensagens do kernel

Referências

Este artigo esta sendo baseado em vários artigos, o principal é esse:

https://tldp.org/LDP/lkmpg/2.6/html/x181.html

How to Write a Hello World Program in Linux Device driver

Linux Device Driver – Alessandro Rubini

Sem categoria
Site invadido

Portuguese

Pessoal, hoje sofri uma invasão, o cara não só roubou os dados com também tirou o site fora do ar.

Pessoal, este site é opensource, invadir o site, não vai agregar nada, porque todas as informações aqui disponibilizadas, são abertas.

Não há um programa aqui que já não esteja em meus gits ou nos projetos.

Então senhores, peço que não o façam, porque isso apenas prejudica quem precisa das informações aqui disponibilizados.

Estudantes e pessoas que buscam no google.

Tudo o que esta aqui, já é aberto.

E o conteúdo integral do site já pode ser baixado no git.

Estou fazendo esse trabalho de formiguinha, então colaborem não prejudicando outros.

Grato.

pt_BRPortuguese