domingo, 24 de outubro de 2010

Robôs e seus tipos (III)

Graus de Liberdade
Um conceito importante a ser introduzido neste ponto é o de Graus de Liberdade (GDL), que determinam a quantidade de movimentos possíveis de um objeto, considerando rotação e translação.

Objetos locomovem-se no espaço cartesiano (tridimensional por definição, com seus eixos X, Y e Z), executando 6 (seis) movimentos possíveis. Assim, um corpo rígido livre no espaço pode apresentar 3 rotações em torno dos eixos X, Y e Z, e mais três translações ao longo destes mesmos eixos X, Y e Z, num total de 6 GDL - em inglês, DOF (Degrees of Freedom).

Os movimentos de translação dos objetos no espaço são:
  • Para frente ou para trás (eixo Y), 
  • Para esquerda ou direita (eixo X), e
  • Para cima ou para baixo (eixo Z).

Adicionalmente, os objetos também podem girar ao redor desses eixos principais - movimentos chamados de rotação:
  • Pitch (rotação ao redor de X),
  • Roll (rotação ao redor de Y), e
  • Yaw (rotação ao redor de Z).
 
Roll, Yaw e Pitch - Fonte: http://en.wikipedia.org/wiki/Flight_dynamics

É claro que pode (deve) ocorrer uma composição de dois ou mais destes movimentos - por exemplo, o movimento de um parafuso.

Este conceito é básico na robótica, principalmente em robôs industriais.

Robôs x Computadores (II)

Este artigo é, em parte, baseado no livro Robot Programming - A Practical Guide to Behavoir-Based Robotics, de Joseph L. Jones (embora não seja mera tradução).

Execução Serial x Paralela
Na maioria das aplicações computacionais, a execução serial de instruções é suficiente para a obtenção dos objetivos. Programas típicos de computadores estabelecem um diálogo com o usuário (ou operador), analisam os dados informados e geram uma saída correspondente, seja o armazenamento de informações em uma base de dados, a criação dinâmica de uma página da internet, um relatório em tela ou papel, um gráfico, a execução de alguma música, o download de um arquivo, ou o disparo de uma arma em algum jogo qualquer. Todas as entradas são previstas, cada entrada tem um tipo de dados e uma faixa de valores que são testados, e as saídas são funções destas entradas conhecidas. Se o usuário digita alguma bobagem, o programa emite uma mensagem de erro (muitas vezes enigmática, sarcástica ou mesmo desaforada), e espera-se que o próprio usuário resolva a situação, digitando os dados corretos.

Um robô, diferentemente de um computador, exige processamento paralelo. São muitos sensores a serem lidos, diversos atuadores (tipicamente motores) a serem acionados simultaneamente. Não se pode parar um motor para acionar outro.

Mais, a atuação de um robô tem mais semelhança com a atuação de um ser vivo, pois ele precisa descobrir seu ambiente a cada instante (por meio dos sensores) e responder a este ambiente (via atuadores), buscando realizar a tarefa a ele designada. E para isto ele precisa ler e interpretar o ambiente, agindo de forma a evitar riscos e armadilhas (uma colisão ou queda, por exemplo).

Um robô também precisa - e nisto se assemelha a um note-book - monitorar constantemente seu fornecimento de energia. Mas, ao contrário do note-book, o próprio robô pode ser o responsável por tomar a iniciativa de retornar à sua base e buscar o reabastecimento.

Potência
Um computador mais potente resultará, via de regra, em uma execução mais rápida, porém com os mesmos resultados; ou, eventualmente, poderá fornecer resultados mais precisos, ou processar uma maior quantidade da mesma informação, ou melhorar substancialmente a resolução em uma aplicação gráfica.

E, ao contrário do que acontece com os computadores, um robô mais rápido não é garantia de nada, é apenas um robô mais rápido (e, eventualmente, mais propenso a acidentes).

Robôs x Computadores (I)

O mundo da computação (ao qual eu estou acostumado) é asséptico e "bem comportado": um computador é uma máquina fechada, os comandos funcionam e são claramente determinísticos, todas as variáveis são conhecidas e quando ocorrem problemas com componentes físicos você simplesmente pragueja e chama a manutenção, que irá trocar o componente defeituoso por outro equivalente. O mesmo raciocínio ocorre em relação a problemas de sistema operacional, rede, conexões e assim por diante. Um ambiente de programação é algo próximo a uma utopia, onde apenas os erros de programação conspiram contra o programador (supondo que haja uma definição exata dos requisitos de programação, o que é outra utopia, mas fora do nosso escopo).

O mundo da robótica é quase o posto disto. Dificuldades na obtenção de componentes, sensores com respostas não lineares, soldas frias, fios com encapamento derretido, motores sem especificação, ruídos, histerese, circuitos impressos, curtos-circuitos, queima de componentes, caixas, relés barulhentos, e por aí segue a confusão. Os tempos de resposta não são desprezíveis, e nem sempre previsíveis: algo que funciona em teoria na prática nem se move - ou, pelo contrário, sai saltando descontroladamente. É o mundo físico, cuidadosamente escondido nos computadores, que aflora com sofreguidão e sem piedade. É, tipicamente, um mundo "mal comportado", rebelde, que necessita ser domesticado.

Uma questão crucial no mundo da robótica é o relacionamento do robô com o ambiente: como interpretar o ambiente, quais variáveis devem ser lidas, quais são mais importantes, como agir em caso de conflito de informações, como detectar objetos e evitar colisões, como agir sobre o ambiente. Por trás de tudo isto haverá um programa de computador tentando ser inteligente, tentando tomar decisões, tentando otimizar o consumo de energia (problema crítico na robótica, e que deve ser levado em consideração na hora do projeto).

Antes de mais nada, um robô precisa ser concebido levando em consideração:
  • em que meio (terra, ar, água, espaço sideral) o robô irá se locomover;
  • quais tarefas irá realizar;
  • que conhecimento terá do ambiente;
  • como será controlado.
Enquanto isto, quando você quiser comprar um computador, escolhe o modelo conforme as aplicações desejadas, entra na internet (ou na loja física), e compra o que desejar, sem se preocupar com projeto de nada.

    sexta-feira, 22 de outubro de 2010

    Robôs e seus tipos (II)

    Automação
    A idéia da automação é complementar ou substitur a mão de obra humana:
    • em trabalhos muitos pesados, sujos ou perigosos para os seres humanos,
    • em trabalhos que exijam uma precisão de que o ser humano não é capaz, ou
    • quando a automação é possível e seu custo é menor do que a despesa com a mão de obra humana.
    Existem diversas formas de classificar os robôs (além do controle, como já vimos), e não existe unanimidade quanto aos critérios.

    Aplicações
    Quanto à aplicação: a maior aplicação de robôs ocorre nas linhas de produção da indústria, onde ocorre uma grande substituição de mão de obra humana. Outras aplicações relevantes estão em áreas completamente distintas, como medicina, militar, exploração espacial e subaquática, mineração, regaste e salvamento, e busca de minas terrestres. Há robôs domésticos, como cortadores de grama, aspiradores de pó, e assim por diante. Também na educação a robótica está se tornando forte, bem como na área de entretenimento. Em diversos países (especialmente o Japão) existem robôs que fazem companhia a pessoas, quase da mesma forma que animais domésticos (e sem fazer tanta sujeira). E, claro, também existe a nanorobótica.

    Assim, poderíamos agrupar as seguintes aplicações:
    • industrial
    • medicinal
    • militar
    • mineração
    • exploração espacial
    • uso subaquático
    • resgate e salvamento
    • educação
    • doméstico
    • entretenimento
    • nanorobótica

    Locomoção
    Quanto à locomoção, os robôs são:
    • fixos
    • móveis
    No caso dos robôs fixos, basicamente os industriais, a disposição dos membros e juntas em um robô determina os possíveis movimentos do mesmo. As categorias cinemáticas destes robôs incluem: articulados, cartesianos, paralelos e SCARA.

    Os robôs móveis são divididos em terrestres, aéreos e subaquáticos.

    quinta-feira, 21 de outubro de 2010

    Robôs e seus tipos (I)

    Definições
    Afinal, o que é um robô? Conforme a definição da RIA (Robotics Industries Association) , "um robô (ou robot) é um dispositivo, ou grupo de dispositivos, eletromecânicos ou biomecânicos, capaz(es) de realizar trabalhos de maneira autônoma, pré-programada, ou através de controle humano" (Wikipedia).

    O termo robô tem origem na palavra tcheca robota, que significa "trabalho forçado". Os robôs tiveram origem na peça "R.U.R" (Rossum's Universal Robots), do dramaturgo Karel Čapek, encenada em 1921, na qual existia um autômato com forma humana, capaz de fazer tudo em lugar do homem; era introduzido o conceito de uma linha de montagem que utilizava robôs para tentar construir mais robôs.

    De uma forma geral, um robô pode ser descrito como um dispositivo eletromecânico ou biomecânico que possui conexões de realimentação (feedback) entre seus sensores, atuadores e o ambiente, e que é capaz de realizar alguma forma de movimento e executar alguma tarefa controlada.

    Os sensores são responsáveis por informar o controle do robô sobre as condições do ambiente (em todos os seus aspectos). Variáveis como temperatura, umidade, aceleração, velocidade, inclinação, coordenadas geográficas, luminosidade, força, distância, contato físico, presença de gases, e assim por diante.

    Os robôs executam tarefas através de atuadores (elétricos, pneumáticos, sonoros, etc.), produzindo sons, acendendo leds ou displays, movendo braços e abrindo ou fechando uma garra robótica, ou realizando o seu próprio deslocamento através de rodas, esteiras ou pernas, ou de outra forma.

    O controle é provido por algoritmos que relacionam os sensores (entradas) e os atuadores (saídas) do robô, através de unidades de processamento eletrônicas (microprocessadores ou, mais comumente, microcontroladores) e de softwares. O controle pode envolver desde um joystick, um circuito eletrônico mais ou menos complexo, um computador pessoal ou até outro robô.

    Quanto ao controle, um robô pode ser:
    • totalmente controlado por pessoas;
    • parcialmente controlado por pessoas;
    • automático.
    O grau de automatização de um robô varia de zero (caso de um robô controlado, por exemplo, por um joystick), até o nível de aprendizado automático, dependendo da aplicação do robô e, obviamente, dos algoritmos utilizados.

    Um dos principais focos da robótica atualmente é a busca por robôs autônomos ou robôs cognitivos cada vez mais auto-suficientes, o que leva ao campo da inteligência artificial, e também dispara uma discussão sobre limites éticos para a robótica.

    Uma interessante definição é colocada por Joseph L. Jones em seu livro Robot Programming - A Practical Guide to Behavoir-Based Robotics: "a device that connects sensing to actuation in an intelligent way", ou seja, "robô é um dispositivo que conecta sensores a atuadores de uma maneira inteligente". O autor reconhece que a definição é minimalista e que não encerra as discussões sobre o assunto, mas ela introduz um conceito necessário - a inteligência (caso contrário, um portão automático ou um sensor/atuador de nível de água poderiam ser confundidos com um robô).

    O próprio Jones define o que entende por inteligência (em robôs): "intelligence in this context is that the robot processes sensor information into actuator outputs with some minimum level of complexity" (deve haver um nível mínimo de complexidade no processamento das informações fornecidas pelos sensores, para acionar os atuadores).

    Pessoalmente, com base nas definições anteriores, eu arriscaria que robô é um dispositivo eletromecânico ou biomecânico, que conecta sensores a atuadores de uma maneira inteligente, dotado de alguma forma de movimento e responsável por executar alguma tarefa controlada.

    quarta-feira, 20 de outubro de 2010

    Arduino UNO e Arduino Mega 2560

    Foi lançado o Arduino Uno, nova versão do Arduino. É uma placa de microcontrolador baseado no ATmega328, possuindo 14 pinos de entrada/saída digital (dos quais 6 podem ser usados como saídas PWM), 6 entradas analógicas, um cristal oscilador de 16MHz, uma conexão USB, uma entrada de alimentação, uma conexão ICSP e um botão de reset.
    Arduino Uno (fonte: http://arduino.cc/en/uploads/Main/ArduinoUnoFront.jpg) 

    Da mesma forma que seus antecessores, o Arduino Uno contém todos os componentes necessários para suportar o microcontrolador. A diferença está na substituição do chip FTDI, antes utilizado para conversão do sinal serial, por um ATmega8U2, programado como conversor de USB para serial.

    Este novo chip USB poderá ser reprogramado para interfacear com outros dispositivos, como Teclado, Mouse, MIDI e Joysticks. A placa possui a certificação CE mark e o processo de homologação para a FCC está em andamento.

    Arduino Mega 2560
    Foi feita também uma atualização no modelo Arduino Mega. Com a substituição do chip, houve aumento significativo de memória para armazenamento de programas

    Para uma comparação com as outras versões, veja o índice de placas Arduino. Também foi lançada versão da IDE compatível com o Uno e o Mega 2560, a versão 0021.

    Blogs do Wordpress

    Interessante relação de Blogs do Wordpress:

    Blog do Professor Lelino Pontes (Robótica Educacional)

    Mais um site brasileiro sobre robótica: o blog do Professor Lelino Pontes é destinado a todas as pessoas que gostam de robótica e profissionais de educação que queiram aprender a fazer projetos educacionais usando robôs, ou seja,  aprender a fazer um projeto de Robótica Educacional (RE).