Download - Software Livre para Aplicações em Robótica
Software Livre para Software Livre para aplicações em Robóticaaplicações em Robótica
Prof. Esp. Alexandre BragaProf. Esp. Alexandre Braga
[email protected]@gmail.com
Palestra sobrePalestra sobre
Robôs – O que nos vem à Robôs – O que nos vem à mente?mente?
Atualmente como são Atualmente como são usados os robôs?usados os robôs?
• Linhas de montagem• Limpeza de áreas perigosas• Desarme de artefatos explosivos• Missões de busca e resgate• Manipulação de objetos sob a água ou no espaço• Mineração profunda• Plataformas de petróleo e gás• Exploração espacial• Bichos de estimação• Veículos automáticos• Competições• Kits educativos• Personagens animatrônicos no cinema e na TV
Robótica como HobbyRobótica como Hobby
• Posso criar robôs sofisticados em casa?• Que materiais usar?• Como começar?• E a “inteligência” do robô?• Vou gastar toda a minha mesada, meu salário, minha aposentadoria?
Robótica como HobbyRobótica como Hobby
ContextualizarContextualizar ConstruirConstruir AnalisarAnalisar AbstrairAbstrair
Utilizando os componentes físicos e as ferramentas de programação temos condições de criar projetos seguindo a metodologia:
Robótica como HobbyRobótica como Hobby
Sua estrutura física (hardware)Sua estrutura física (hardware)
Sua inteligência comportamental Sua inteligência comportamental (software)(software)
Porém, para funcionar corretamente um robô precisa de duas coisas básicas:
Robótica como HobbyRobótica como Hobby
Placas de controle open sourcePlacas de controle open sourceArduino, Super Hobby, circuitos PWM, etc.Arduino, Super Hobby, circuitos PWM, etc.
Microcontroladores embarcadosMicrocontroladores embarcadosKits educacionais Lego, Modelix, VEX, etc.Kits educacionais Lego, Modelix, VEX, etc.
Hardware “enxuto” e limitado:
Robótica como HobbyRobótica como Hobby
Diagrama lógico de um microcontrolador
Robótica como HobbyRobótica como Hobby
Diagrama lógico de um microcontroladorO 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.
Robótica como HobbyRobótica como Hobby
Arduino – plataforma open source
Robótica como HobbyRobótica como Hobby
8Kb de memória Flash.8Kb de memória Flash. 1Kb de memória RAM.1Kb de memória RAM. Processador AT 16MhzProcessador AT 16Mhz 13 pinos entrada/saída digital13 pinos entrada/saída digital 5 pinos entrada/saída analógica5 pinos entrada/saída analógica
Arduino – Características
Robótica como HobbyRobótica como Hobby
Arduino – Exemplo de circuito eletrônico
Software Livre para Software Livre para aplicações em Robóticaaplicações em Robótica
JavaJava Robotics Studio (não tão livre assim!)Robotics Studio (não tão livre assim!) RIS (Robotics Invention System)RIS (Robotics Invention System) RobotC (Não é livre $$)RobotC (Não é livre $$) LuaLua Arduino (linguagem C)Arduino (linguagem C)
Existem várias ferramentas que podem ser usadas para programar robôs:
Software Livre para Software Livre para aplicações em Robóticaaplicações em Robótica
Java – Lejos é uma JVM simplificada que foi portada para trabalhar com tijolos programáveis da Lego (RCX e NXT).
• Orientada a objetos• Utiliza arrays para múltiplas funções• Recursiva• Faz uso de vários recursos das classes java.lang, java.util e java.io• Lida com exceções e com vários tipos de dados.
Software Livre para Software Livre para aplicações em Robóticaaplicações em Robótica
Lejos – Exemplo de comando usado para mover motores.
import lejos.nxt.*; // biblioteca compatível com NXTpublic class TestaMotor { public static void main(String[] args) { Motor.A.forward(); LCD.drawString(“PARA FRENTE", 0, 0); Button.waitForPress(); Motor.A.backward(); LCD.drawString(“PARA TRAS", 0, 1); Button.waitForPress(); Motor.A.reverseDirection(); LCD.drawString(“PARA FRENTE", 0, 2); Button.waitForPress(); Motor.A.stop(); } }
Software Livre para Software Livre para aplicações em Robóticaaplicaçõ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.
Software Livre para Software Livre para aplicações em Robóticaaplicações em Robótica
Robotics Developer Studio – Exemplos
Software Livre para Software Livre para aplicações em Robóticaaplicações em Robótica
Robotics Invention System (RIS) – Ferramenta para programação de robôs da linha Lego Mindstorms.
• API gráfica• Uso de blocos para criar o comportamento do robô• Simplicidade de uso para crianças e adolescentes• Limitado aos kit de robótica da Lego
Software Livre para Software Livre para aplicações em Robóticaaplicações em Robótica
Robotics Invention System (RIS) – Exemplos
Software Livre para Software Livre para aplicações em Robóticaaplicaçõ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.
Software Livre para Software Livre para aplicações em Robóticaaplicaçõ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.
Software Livre para Software Livre para aplicações em Robóticaaplicações em Robótica
Arduino – Exemplo de programa.
int ledPin = 13; // LED conectado a porta digital 13int intPin = 12; // Interruptor conectado a porta digital 12bool intEstado = LOW; // Variável que guarda o ESTADO do interruptorvoid 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}
Software Livre para Software Livre para aplicações em Robóticaaplicações em Robótica
OBRIGADO!!