21st Oct 2008

X Congresso Científico da UnP e I Mostra de Robótica da UnP

Salve Pessoal,

Sempre assim, meses depois sem postar venho com esse meu sinismo quebrar o silêncio e prometer³, pela décima vez concecutiva, que tentarei atualizar o blog com maior frequência, de fato nunca o consigo fazer, mas enfim…

Bom, depois de quebrar o silêncio venho até  aqui tornar público alguns eventos muito interessantes que acontecerão nos próximos dias:

congresso-p-copy.jpg

X Congresso Científico da UnP

Durante o congresso científico farei apresentação de dois trabalhos, são eles:

23/10/2008 - Quinta-feira | 19:00 - 20:30 | Salgado FIlho - Sala 203 -  Palestrante convidado: Aspectos de Controle na Engenharia Espacial

Tive o prazer de ser convidado pelo Prof. Dr. Oscar Gabriel Filho, autoridade em Sistemas de Controle, para ministrar esta palestra. Abordarei temas que envolvem controle na Eng. Espacial, como controle e rastreio de satélites, além de mostrar a teoria de controle por trás de um projeto que tenho desenvolvido, aqui em Natal, no INPE/CRN, o desenvolvimento de uma interface de controle para o sistema da antena da EMMN (Estação Multi-Missão Natal).

24/10/2008-Sexta-feira |17:15 - 17:30| Salgado FIlho - Sala 210 - DESENVOLVIMENTO DE UMA INTERFACE GRÁFICA PARA O SISTEMA DE CONTROLE DA ANTENA DA ESTAÇÃO MULTIMISSÃO DE NATAL EMMN (Segue resumo do trabalho)
O presente trabalho, que teve início em março de 2008, objetiva dar continuidade ao projeto de Iniciação Científica em andamento desde agosto de 2007, visando o desenvolvimento de uma interface gráfica, em plataforma GNU/Linux, C/C++ e biblioteca gráfica Qt3, para o software de rastreio e gerência do sistema de controle da antena da Estação Multimissão de Natal – EMMN. Na fase anterior foi desenvolvido um software em C/C++ para rastreio e gerência da estação, tendo sido utilizadas as bibliotecas ncurses, Comedi e Comedili sendo que ncurses foi aplicada na construção de interface em prompt para controle da antena. Comedi e comedilib, foram usadas para controle da placa de conversão A/D e D/A da National Instruments, modelo PCI-6025E, que atua sobre o controlador do posicionamento da antena. Atualmente, a Estação é composta de Sistema de Antena, Sistemas de Acionamento e Controle do Posicionador, Sistema de Aquisição de Dados, Sistema de Referência de Relógio UTP e Microcomputadores. Dentro da estrutura atual do trabalho o paradigma de controle e gerência deixa de ser centrado em um sistema único, composto de software e hardware conectados fisicamente e utilizando o software em C++ e biblioteca ncurses. O novo sistema, escopo deste trabalho, será baseado na arquitetura cliente/servidor. Esta arquitetura é composta de estrutura onde o programa cliente,  usando interface gráfica conectar-se-á via rede Ethernet através do protocolo TCP/IP. O TCP/IP é implementado através da biblioteca sys/socket padrão do C++. O Programa servidor  estará comunicando-se diretamente via hardware  ao controlador da antena. A conexão no servidor entre software e o hardware de controle da antena acontece como na fase anterior, utilizando a placa de conversão A/D e D/A da National Instruments. No programa cliente, ter-se-a toda a estrutura para recebimento e envio de informações para controle. O programa cliente também poderá enviar comandos para que o servidor execute  determinadas tarefas sobre o controlador. Os comandos poderão ser feitos de forma manual, interagindo com a interface ou de forma automática, onde o operador carrega antecipadamente o arquivo de coordenadas (efemérides) e o programa servidor fica encarregado de executar o rastreio mediante leitura do arquivo carregado.

Untitled-1.jpg

I Mostra de Robótica ( 23/10/2008 - Quinta-feira | 14:00 - 22:30 | Salgado FIlho)
A I Mostra de Robótica da UnP, evento promovido pelo curso de Engenharia de Computação, reunirá trabalhos aprovados para apresentação na modalidade mesa demonstrativa no X Congresso Científico da UnP, que tratam da aplicação de tecnologias de automação usando sistemas robóticos. Apresentar as noções básicas de robótica, aproximando o estudante e desmistificando este ramo da ciência que engloba mecânica, eletrônica e computação. A robótica surge como uma resposta à necessidade de execução de tarefas exaustivas ou perigosas, onde o ser humano seja por cansaço físico ou psicológico, está sujeito a cometer alguma falha que possa comprometer a produtividade ou a qualidade dos produtos. São aplicados também a tarefas executadas em lugares onde a presença humana se torna difícil, arriscada e até mesmo impossível, como áreas explosivas, o fundo do mar ou o espaço.

Alguns trabalhos:

ROBO AUTO-CONSTRUTOR 3D (meu)

auto_robo_3d2.JPG     auto_robo_3d.JPG

AUTOROBIX

(SEM FOTOS)

MANIPULAÇÃO DE MATERIAIS QUÍMICOS UTILIZANDO KIT DE ROBÓTICA ROBIX

robo_quimico.jpg

DESENVOLVIMENTO DE UM RÔBO MANIPULADOR PARA REALIZAÇÃO DE CÁLCULOS ARITMÉTICOS EM ÁBACO

robo_abaco.JPG

Posted by Moisés Souto under geral | No Comments »

27th Apr 2008

Twitter, facebook e FISL em fotos

Olá pessoal,

Postei as fotos com toda a cobertura fotográfica que fiz do FISL 9… vocês podem acessar em http://www.flickr.com/photos/themoises/

Ah, novidade ! Criei minha conta no Twitter, e de lá farei pequenas coberturas do meu dia a dia…
Tamém criei minha conta no facebook

Posted by Moisés Souto under geral, fisl | 1 Comment »

18th Apr 2008

[Drops FISL] Conheci o criador do PHP e o diretor de engenharia da Mozilla… em 1 dia só

Hoje durante o segundo dia de FISL tive oportunidade de ver de perto 2 ícones do desenvolvimento web atual. Um deles é o Rasmus Lerd que criou o a linguagem de programaçao PHP.

rasmus

E encontrei o diretor de engenharia da Mozilla, Chris Hoffman,pude tirar foto :) , ele é muito atencioso, conversamos um pouco, tentei falar o quanto a Mozilla foi importante para meu desenvolvimento profissional.

cris

Em breve mais notícias.

Posted by Moisés Souto under fisl | 2 Comments »

16th Apr 2008

Prontos pro FISL

Olá galera, chegamos em Porto Alegre agora a pouco, 23:25. Não tivemos atraso em nenhuma das conexões, saímos de natal às 15:10, de lá seguimos até o Rio de Janeiro onde chegamos às 18:50, aguardamos e aguardamos o tempo de conexão previsto, até embarcarmos por volta de 21:20… seguem fotos do nosso roteiro de viagem de hoje…

1

Eu e Maria Fernanda (Check-in em Natal)

2

Eu e Acácio pouco antes do embarque (Natal)
3

Sobre Natal

4

Viagem muito agradável, com vista espetacular do litoral

5

Chegada no Galeão no Rio.

As fotos de POA, só postarei hoje, ao final do primeiro dia de evento. Acompanhem tudo pelo blog.

Posted by Moisés Souto under geral | 2 Comments »

15th Apr 2008

Vou pro FISL 9

Ae galera… muito tempo que não posto (engraçado, em todos os últimos posts eu tenho dito isso frequentemente, irônico, rs)… rs rs rs… sempre achei estranho rir com esses “rs”, mas o fiz de forma intencional, apesar de ser uma forma meio pífia de denotar, através de um sentido totalmente desconexo e não sei porque raios tive essa idéia, de associar as risadas (e quem sabe fazer uma piada engraçada onde pelo menos eu conseguisse achar, sei lá, mas isso eu não consegui) ao fato que irei pro Rio Grande do Sul !!!!..

Fisl é Forúm Internacional de Software Livre, e esta é a edição de número 9, realizada anualmente. A sede do evento é Porto Alegre, e o evento acontece nas dependências do centro de eventos da PUC-RS. Será nos dias 17,18 e 19 de abril. Evento que conta com os maiores nomes do Open Source mundial. Este é o maior e melhor forúm do gênero no país, e eu poderei participar, é mais um sonho virando realidade.
Viajo para Porto Alegre, hoje (16/04) às 15:20, faço conexão no Rio de Janeiro e lá vamos pra POA (Porto Alegre).

Tentarei fazer a minha cobertura do evento através deste blog, portanto fiquem atentos, logo mais teremos fotos e talvez vídeos.

Posted by Moisés Souto under geral, fisl | No Comments »

01st Jan 2008

2008

Untitled-1.jpg

Ano novo. Mudanças e tudo de novo que o novo sugere.
O ano começa em tom de saudosismo, e este é o intuito deste post, com a empresa que disponibilizará todas as informações do mundo on-line, homenageando a invenção que permitiu que o termo on-line tenha se popularizado tanto. O google em sua doodle de ano novo, que faz homenagem aos 25 anos da invenção do protocolo tcp/ip.

syn-synack-ack-hidden-message.gif

Quem fez a interessante descoberta da homenagem quase que subliminar do google foi Haochi do blog Googlified. Segundo Haochi, ao examinar o logo foi possível ler na parte inferior a seguinte mensagem: SYN SYN/ACK ACK que seria uma seqüencia de pacotes para estabelecer uma conexão, também conhecida como “Three-Way Handshake”.

Posted by Moisés Souto under geral, google, internet | 3 Comments »

21st Nov 2007

Web 2.0: Muito além do ajax (códigos apresentados durante a palestra)

Bom, estou devendo as pessoas que assistiram minha palestra no III EPSL os códigos que utilizei. Pessoa desculpas pela demora, é que as semanas que se seguiram após o EPSL foram de correria extrema.

Primeiro vamos as funções que utilizei para utilizar o ajax, aconselho que elas estejam em um arquivo separado e o incluam em suas páginas, estas são funções em JavaScript.

  1. // —————————– FUNÇÕES DO AJAX ———————————–
  2. //Fila de conexões
  3. fila=[]
  4. ifila=0
  5. function ajaxPOSTRun(url,parameters){
  6. xmlhttp.onreadystatechange = alertContents;
  7. xmlhttp.open(’POST’, url, true);
  8. xmlhttp.setRequestHeader(”Content-type”, “application/x-www-form-urlencoded”);
  9. xmlhttp.setRequestHeader(”Content-length”, parameters.length);
  10. xmlhttp.setRequestHeader(”Connection”, “close”);
  11. xmlhttp.send(parameters);
  12. }
  13. function ajaxHTML(id,url,carr){
  14. //Carregando…
  15. if (typeof carr == “undefined”)
  16. document.getElementById(id).innerHTML=”Carregando…”;
  17. //Adiciona à fila
  18. fila[fila.length]=[id,url]
  19. //Se não há conexões pendentes, executa
  20. if((ifila+1)==fila.length)ajaxRun()
  21. }
  22. //Executa a próxima conexão da fila
  23. function ajaxRun(){
  24. //Abre a conexão
  25. xmlhttp.open(”GET”,fila[ifila][1],true);
  26. //Função para tratamento do retorno
  27. xmlhttp.onreadystatechange=function() {
  28. if (xmlhttp.readyState==4){
  29. //Mostra o HTML recebido
  30. retorno=unescape(xmlhttp.responseText.replace(/\+/g,” “))
  31. //retorno=xmlhttp.responseText
  32. document.getElementById(fila[ifila][0]).innerHTML=retorno
  33. //Roda o próximo
  34. ifila++
  35. if(ifila
  36. if(document.getElementById(’calendario’)){
  37. var myTips = new Tips($$(’#calendario .agenda_data_marcada’),{maxTitleChars:200,onShow:function(x){x.setOpacity(0.9)}});
  38. $$(”.tool-tip”).each(function(x){
  39. x.setStyle(”visibility”,”hidden”);
  40. });
  41. }
  42. }
  43. }
  44. //Executa
  45. xmlhttp.send(null)
  46. }
  47. //Tenta criar o objeto xmlHTTP
  48. try{
  49. xmlhttp = new XMLHttpRequest();
  50. }catch(ee){
  51. try{
  52. xmlhttp = new ActiveXObject(”Msxml2.XMLHTTP”);
  53. }catch(e){
  54. try{
  55. xmlhttp = new ActiveXObject(”Microsoft.XMLHTTP”);
  56. }catch(E){
  57. xmlhttp = false;
  58. }
  59. }
  60. }

Pronto, estas são as funções genéricas para utilizar o ajax, e que abstraem o trabalho o tornando mais simples. Vamos agora criar a função javascript que vai chamar a função ajaxHTML dessas nossas funções. Utilizar essa abstração é muito simples como veremos.

Na página onde queremos que o evento aconteça colocaremos a seguinte função javascript, no exemplo que tratei na palestra é um sistema de acompanhamento de obras de uma construtora, o “ajax” serve para tornar a aplicação mais leve, rápida e interessante ao usuário. Temos uma obra e vinculada a esta temos etapas da construção, cada etapa pode conter diversos álbuns, como seriam muitas miniaturas, e conseqüentemente um temo de espera maior, resolvi implementar o ajax para maximizar a experiência do usuário, como disse anteriormente.

Temos 2 funções uma que chama o “ajax” para fazer a requisição das etapas da construção que temos cadastradas no banco para obra, cujo o id passei como parâmetro na função, chamei essa função de CarregarAlbuns(id_obra), onde passo o id da obra e o “ajax” chama a página de apoio que contém o select no banco para retornar os álbuns associados aquela obra. Segue a função:

  1. function {
  2. axHTML(”div_album”,’albuns.php?id_obra=’+id_obra);
  3. };

Para chamar a função passamos 3 parâmetros necessários e 1 extra para chamar uma imagem enquanto o ajax carrega as informações. Primeiro parâmetro é a div onde desejamos que o ajax atue, em nosso exemplo utilizaremos a div_album, que deve estar no código porém vazia (o ajax a preencherá futuramente ). O segundo parâmetro é a pagina de apoio que terá a ação para preencher a div que setamos no primeiro parâmetro (no nosso caso a div_album), em nosso exemplo chamamos a página albuns.php?id_obra=”" que contém um select para achar os albuns associados a obra, cujo o id passamos por get para a págian albuns.php. O que for “ecoado” (usando a função echo do PHP) nessa página (albuns.php), será escrito dentro da div_album quando a função CarregarAlbuns(id_obra) for chamada, em nosso exemplo chamamos tal função utilizando o evento onclick no link Ver Fotos da obra. OBS: $_db é onde estão dados buscados no banco. As tags estão cortados para pode serem reproduzidas corretamente, lembrem de corrigir.

  1. Ver fotos da obra…/a>/p>

Então a div será preenchida com conteúdo, movendo o conteúdo colocado depois do fim da div_album para baixo, o que dará a impressão de movimento.

2.jpg

Logo depois de termos carregado a listagem dos álbuns que temos, queremos agora listar as imagens que temos para aquele álbum, então devemos acrescentar uma função junto a função anterior (CarregarAlbuns(id_obra)) chamada CarregarFotos(id_album):

  1. function CarregarFotos(id_album){
  2. ajaxHTML(”div_fotos”,’fotos.php?id_album=’+id_album);
  3. };

Ao carregarmos as etapas temos o link para cada álbum, que através do evento onclick chamamos a função que criamos, esse caso é similar a anterior, me refiro aos parâmetros da função o que muda é que a div_fotos que é onde escreveremos as fotos usando ajax (da mesma maneira como foi feito na função anterior), a div vazia deve estar contida dentro da página de apoio anterior, exatamente após o título da etapa de construção.

3.jpg

No final de tudo podemos incrementar a aplicação utilizando o Slimbox

4.jpg

Você pode encontrar os slides da palestra em PDF no link palestras no menu acima.

Posted by Moisés Souto under geral, ajax, web | 2 Comments »

11th Nov 2007

Novo RSS

Olá todos…

Este post é apenas para informar que o blog mudou de RSS. Aos assinantes do Feed RSS, favor mudar para http://feeds.feedburner.com/msouto

Posted by Moisés Souto under geral, blog | No Comments »

07th Nov 2007

Toolbox de Redes Neurais do Matlab

Olá,

Está semana tivemos de fazer um trabalho para a disciplina de Inteligência Artificial, ministrada pelo professor Allan Martins, foram diversos assuntos que o professor distribuiu em grupos, o meuobjetivava predizer o consumo de energia elétrica em minha casa, eu daria o valor das 4 ultimas medições mensais e rede iria calcular a do mês seguinte.

Primeiramente, treino a rede atribuindo como entradas (Localização:matriz P) os valores de cada mês, cada entrada é composta de 4 valores de medições de meses anteriores, esta (cada entrada) aponta para um target(Localização:vetor T), que é um valor correto e conhecido do valor real do quinto mês (que tentarei predizer após este treinamento).

Após este treinamento posso modificar P (entradas) passando 4 valores de meses anteriores e a rede calcula o mês subsequente.
Utilizando o toolbox do Matlab (for linux) para redes neurais implementei da seguinte maneira:

=== SOURCE ===

%Definindo os targerts que servirão para o treinamento da rede
T = [262 250 287 242];
%As entradas que servirão pra o treinamento da rede
P = [250 287 242 244;
287 242 244 306;
242 244 306 295;
244 306 295 259];

%Instanciando a rede com 16 neurônios na camada oculta e 1 neurônio na camada de saída
net = newff(minmax(P),[16 1],{’tansig’ ‘purelin’});

%Treinando a rede
net = train(net,P,T);

%Definindo as entradas para a rede calcular a previsão de saída
% Exemplo:
P=[250;
287;
242;
244];

%Fazendo a rede calcular apartir das entradas dadas no passo anterior
Y = sim(net,P);

=== /SOURCE ===

O algoritmo de ‘Backpropagation’ utiliza o método do Gradiente Descendente para corrigir os valores sinápticos. Neste método, calculamos o gradiente da função objetivo (MSE) a se minimizar e atualizarmos o valor das sinapses somando-se a ele o valor do gradiente com o sinal invertido. O gradiente, neste caso, é a derivada parcial da função erro médio quadrático em relação à sinapse. Este processo faz com que o erro médio quadrático do problema “caminhe” sempre no sentido contrário de seu máximo crescimento. Resumindo, podemos dizer que a equação básica do Algoritmo de ‘Backpropagation’ é:

Wk+1 = Wk - ok Vk(Fo)

onde:

Wk+1 é o vetor de pesos sinápticos no instante k+1;

Wk é o vetor de pesos sinápticos no instante k;

ok é uma constante chamada Passo de treinamento;

Vk(Fo) é vetor gradiente da função objetivo.

O passo de treinamento é uma constante que controla a velocidade de convergência do algoritmo, ou seja, a rapidez com que os valores sinápticos levam o MSE para um mínimo local ou global na superfície de erro do problema. Para pequenos valores de o, a atualização das sinapses é mais lenta, fazendo com que se percorra com maior precisão a superfície de erro do problema. Para valores altos de o, apesar da convergência ocorrer de maneira mais rápida, pode acontecer oscilações no treinamento, podendo ás vezes até impossibilitar a convergência para um mínimo local ou global.

Suas principais características são:

  • Classe de tarefas: reconhecimento de padrões (ex.: controle adaptativo de braços de robôs) e processamento de fala;

  • Propriedades dos neurônios: são do tipo perceptron e possuem valores contínuos. A função de ativação é a sigmóide;

  • Propriedades das redes: rede acíclica de três camadas, no mínimo;

  • Aprendizado: utiliza técnica de Correção de Erros com o uso da regra delta generalizada.

O maior problema da utilização do algoritmo de retropropagação ocorre quando a rede neural obtém uma solução que corresponde a um mínimo local da função do erro. Existem diversas alternativas que visam a diminuir a ocorrência de mínimo local. As mais utilizadas são:

  • diminuição da taxa de aprendizado: se a taxa de alteração dos pesos é diminuída progressivamente, então o algoritmo do gradiente decrescente está apto a alcançar uma solução melhor;

  • adição de unidades internas: é possível considerar que quando um mínimo local é apresentado como solução, duas classes diferentes são classificadas como a mesma. Para evitar isso, ao serem colocadas mais unidades na camada escondida, a rede fará um reconhecimento melhor, diminuindo a ocorrência de mínimo local;

  • introdução de um termo de momento: termo introduzido para que se possa aumentar a taxa de aprendizado sem que ocorra oscilação.

Outro problema enfrentado pela retropropagação é a quebra de simetria, ou seja, se os pesos começam todos com o mesmo valor e se a solução só pode ser alcançada com pesos diferentes, o sistema não poderá aprender. Isto ocorre porque o erro é retropropagado em proporção ao valor dos pesos, o que significa que todas as unidades escondidas conectadas diretamente às unidades de entrada e saída cometem erros iguais. Como a modificação dos pesos depende deste erro, os pesos destas unidades em relação às unidades de saída serão sempre os mesmos.

Posted by Moisés Souto under geral, matlab, engenharia_de_computação, ia | No Comments »

29th Oct 2007

III EPSL

Estamos a poucos dias do III EPSL, que este ano conta com um outro evento simultâneo o “Além das Redes
de Colaboração”. Evento sempre de grande importância para toda a comunidade de SL Potiguar, além de ser um dos eventos de mais força ,na parte de computação, aqui do estado.

Este ano tive novamente a felicidade de ter um trabalho aprovado pra apresentação, meu trabalho intitulado Web 2.0: Muito além do Ajax trata sobre a tendência que reforça o conceito de troca de informações e colaboração dos internautas com sites e serviços virtuais, conceito básico da WEB 2.0. Pretendo mostrar como tais conceitos podem ser aplicados em serviços que podem ser agregados em um site dos mais antigos a um novo projeto, ou mesmo como pensar um projeto nestes moldes.

Farei demonstrações de algumas implementações de uso de Ajax, onde pretendo exibir uma classe para agilizar o uso do Ajax (sim é possível). Explanações sobre mash-ups e softwares livres consagrados para a WEB 2.0, tais como: Wiki e Wordpress.
Participe do III Encontro Potiguar de Software Livre: “Além das Redes
de Colaboração” que acontecerá de 07 a 10 de Novembro de 2007, no
auditório do CEFET-RN (unidade sede), em Natal-RN.

O III EPSL tem como objetivo principal promover e estimular o
desenvolvimento e uso do Software Livre em nosso estado, com isso:
+ Atingir as diversas áreas das ciências humanas através de um debate
qualificado que trate uma mudança de paradigma não só na questão do
compartilhamento de código, mas sim do conhecimento, do acesso à
tecnologia e à informação;
+ Mostrar e discutir alternativas de geração de negócios, renda e de
como construir uma sociedade melhor e justa através da democratização
do conhecimento e da tecnologia;
+ Promover a inclusão digital e social, através da educação
tecnológica ampla e irrestrita, onde o acesso aos mecanismos de
construção e desenvolvimento estarão sempre acessíveis;
+ Através de todas essas iniciativas, estimular o desenvolvimento
tecnológico e humano local, através do uso e desenvolvimento de
Softwares Livres e da difusão da Cultura Livre.

A programação do evento estrutura-se em três tipos de sessões:
exposição de soluções tecnológicas de Software Livre; discussões
relacionados à mídia, arte e cultura livre; ciclos de debates “Além
das Redes de Colaboração: Diversidade Cultural e as Tecnologias do
Poder” - projeto da Casa de Cinema de Porto Alegre e da Associação
Software Livre produzido localmente pelo Projeto Software Livre do RN.

A grade de programação está disponível:
http://rn.softwarelivre.org/portal/programacao

A inscrição no evento tem como custo a contribuição de 2 kg de
alimentos não perecíveis (exceto sal) que serão doadas a 3
instituições carentes.

Inscrições e mais informações sobre o evento pelos sites:
http://alemdasredes.softwarelivre.org ou http://rn.softwarelivre.org

Posted by Moisés Souto under geral | 5 Comments »