Software Livre para Aplicações em Robótica

14,065 views

Published on

Palestra realizada por Alexandre Braga no FLISOL 2010 Maceió.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
14,065
On SlideShare
0
From Embeds
0
Number of Embeds
27
Actions
Shares
0
Downloads
245
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Software Livre para Aplicações em Robótica

  1. 1. Software Livre para aplicações em Robótica Prof. Esp. Alexandre Braga [email_address] Palestra sobre
  2. 2. Robôs – O que nos vem à mente?
  3. 3. Atualmente como são usados os robôs? <ul><li>Linhas de montagem </li></ul><ul><li>Limpeza de áreas perigosas </li></ul><ul><li>Desarme de artefatos explosivos </li></ul><ul><li>Missões de busca e resgate </li></ul><ul><li>Manipulação de objetos sob a água ou no espaço </li></ul><ul><li>Mineração profunda </li></ul><ul><li>Plataformas de petróleo e gás </li></ul><ul><li>Exploração espacial </li></ul><ul><li>Bichos de estimação </li></ul><ul><li>Veículos automáticos </li></ul><ul><li>Competições </li></ul><ul><li>Kits educativos </li></ul><ul><li>Personagens animatrônicos no cinema e na TV </li></ul>
  4. 4. Robótica como Hobby <ul><li>Posso criar robôs sofisticados em casa? </li></ul><ul><li>Que materiais usar? </li></ul><ul><li>Como começar? </li></ul><ul><li>E a “inteligência” do robô? </li></ul><ul><li>Vou gastar toda a minha mesada, meu salário, minha aposentadoria? </li></ul>
  5. 5. Robótica como Hobby <ul><li>Contextualizar </li></ul><ul><li>Construir </li></ul><ul><li>Analisar </li></ul><ul><li>Abstrair </li></ul>Utilizando os componentes físicos e as ferramentas de programação temos condições de criar projetos seguindo a metodologia:
  6. 6. Robótica como Hobby <ul><li>Sua estrutura física (hardware) </li></ul><ul><li>Sua inteligência comportamental (software) </li></ul>Porém, para funcionar corretamente um robô precisa de duas coisas básicas:
  7. 7. Robótica como Hobby <ul><li>Placas de controle open source </li></ul><ul><li>Arduino, Super Hobby, circuitos PWM, etc. </li></ul><ul><li>Microcontroladores embarcados </li></ul><ul><li>Kits educacionais Lego, Modelix, VEX, etc. </li></ul>Hardware “enxuto” e limitado:
  8. 8. Robótica como Hobby Diagrama lógico de um microcontrolador
  9. 9. Robótica como Hobby Diagrama lógico de um microcontrolador O processador do Arduino é um AT mega 8 com clock de 16MHz. A velocidade parece baixa quando comparada ao computador, pois hoje um computador de médio desempenho possui um clock de 3GHz. Isto significa que o computador trabalha em uma freqüência aproximadamente 200 vezes superior ao controlador. Esta diferença se deve às características do controlador e do computador. O computador precisa trabalhar em uma freqüência muito elevada para processar informações e realizar cálculos repetitivos em uma velocidade altíssima. O microcontrolador não necessita um processamento tão elevado, pois as tomadas de decisão dele são muito inferiores.
  10. 10. Robótica como Hobby Arduino – plataforma open source
  11. 11. Robótica como Hobby <ul><li>8Kb de memória Flash. </li></ul><ul><li>1Kb de memória RAM. </li></ul><ul><li>Processador AT 16Mhz </li></ul><ul><li>13 pinos entrada/saída digital </li></ul><ul><li>5 pinos entrada/saída analógica </li></ul>Arduino – Características
  12. 12. Robótica como Hobby Arduino – Exemplo de circuito eletrônico
  13. 13. Software Livre para aplicações em Robótica <ul><li>Java </li></ul><ul><li>Robotics Studio (não tão livre assim!) </li></ul><ul><li>RIS (Robotics Invention System) </li></ul><ul><li>RobotC (Não é livre $$) </li></ul><ul><li>Lua </li></ul><ul><li>Arduino (linguagem C) </li></ul>Existem várias ferramentas que podem ser usadas para programar robôs:
  14. 14. Software Livre para aplicações em Robótica Java – Lejos é uma JVM simplificada que foi portada para trabalhar com tijolos programáveis da Lego (RCX e NXT). <ul><li>Orientada a objetos </li></ul><ul><li>Utiliza arrays para múltiplas funções </li></ul><ul><li>Recursiva </li></ul><ul><li>Faz uso de vários recursos das classes java.lang, java.util e java.io </li></ul><ul><li>Lida com exceções e com vários tipos de dados. </li></ul>
  15. 15. Software Livre para aplicações em Robótica Lejos – Exemplo de comando usado para mover motores. import lejos.nxt.*; // biblioteca compatível com NXT public class TestaMotor { public static void main(String[] args) { Motor.A.forward(); LCD.drawString(“PARA FRENTE&quot;, 0, 0); Button.waitForPress(); Motor.A.backward(); LCD.drawString(“PARA TRAS&quot;, 0, 1); Button.waitForPress(); Motor.A.reverseDirection(); LCD.drawString(“PARA FRENTE&quot;, 0, 2); Button.waitForPress(); Motor.A.stop(); } }
  16. 16. Software Livre para aplicações em Robótica Robotics Developer Studio – Ferramenta desenvolvida pela Microsoft para simulação de robôs em ambiente 3D ou para controle de robôs reais.
  17. 17. Software Livre para aplicações em Robótica Robotics Developer Studio – Exemplos
  18. 18. Software Livre para aplicações em Robótica Robotics Invention System (RIS) – Ferramenta para programação de robôs da linha Lego Mindstorms. <ul><li>API gráfica </li></ul><ul><li>Uso de blocos para criar o comportamento do robô </li></ul><ul><li>Simplicidade de uso para crianças e adolescentes </li></ul><ul><li>Limitado aos kit de robótica da Lego </li></ul>
  19. 19. Software Livre para aplicações em Robótica Robotics Invention System (RIS) – Exemplos
  20. 20. Software Livre para aplicações em Robótica Linguagem LUA – Criada na PUC do Rio de Janeiro em 1993, também está sendo usada atualmente para controlar robôs devido a sua simplicidade de uso e poucos requisitos de memória.
  21. 21. Software Livre para aplicações em Robótica Arduino – Todo um conjunto open source de hardware + software. Ambiente de desenvolvimento é uma API feita em Java, mas que permite total modificação ou customização para uso de várias maneiras diferentes.
  22. 22. Software Livre para aplicações em Robótica Arduino – Exemplo de programa. int ledPin = 13; // LED conectado a porta digital 13 int intPin = 12; // Interruptor conectado a porta digital 12 bool intEstado = LOW; // Variável que guarda o ESTADO do interruptor void setup() { // executa uma vez, ao energizar pinMode(ledPin, OUTPUT); // configura ledPin como porta saída pinMode(intPin, INPUT); // configura intPin como porta entrada } void loop() { // roda repetidamente e infinitamente intEstado = digitalRead (intPin); //lê a porta do interruptor if ( intEstado == HIGH ) digitalWrite(ledPin, HIGH); //Liga o LED else digitalWrite(ledPin, LOW); //Desliga o LED }
  23. 23. Software Livre para aplicações em Robótica OBRIGADO!!

×