terça-feira, 14 de dezembro de 2010

Robôs x Computadores (Final)

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).

Planos x Oportunidades
Um programa de computador, tipicamente, executa um plano: as coisas acontecem em uma seqüência pré-definida, as interações com o ambiente são determinísticas, as informações fornecidas pelo usuário pertencem a domínios claramente limitados. Os resultados são previsíveis, e (mediante um certo esforço) todas as situações de erro podem ser previstas e devidamente tratadas.

Já um robô ("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") necessita ser oportunista. Por exemplo, se a bateria do robô estiver com pouca carga, ele deverá dirigir-se de volta à sua base para recarregá-la. Se, no entanto, ele estiver trabalhando próximo à base e ainda restar uma tarefa a realizar, ele poderá postergar a recarga. Um algoritmo pouco flexível poderá obrigar o robô a realizar muitos deslocamentos desnecessários de volta à base, gastando sua preciosa energia justamente na recarga da mesma. Já um algoritmo mais evoluído poderá fornecer ao mesmo robô mais autonomia e fazer com que o mesmo dispenda menos tempo nos procedimentos de recarga.

Degradação Elegante
Como já dito anteriormente, um bom programa de computador, utilizado corretamente e com os dados adequados, sempre exibirá resultados corretos e adequados. Um computador corretamente utilizado tem um comportamento tipicamente previsível e determinístico.

Um robô depende de componentes mecânicos, elétricos, hidráulicos. Um robô convive com o mundo físico, poeira, água, tombos, calor e frio, e assim por diante. Sensores não são plenamente confiáveis, motores não dão respostas plenamente confiáveis, e o processamento das informações provenientes de inúmeros sensores não confiáveis, por vezes transmitindo informações contraditórias, nos leva inevitavelmente a resultados incertos e não determinísticos. Em função desta realidade complexa, o programa de controle de um robô precisa ser capaz de uma "degradação elegante" na presença de sensores defeituosos e erráticos - basicamente, um robô não pode simplesmente bloquear e emitir uma enigmática mensagem de erro, e esperar que "alguém faça alguma coisa", mas precisa ter um comportamento que ainda lhe permita manter o seu próprio controle.

Nenhum comentário:

Postar um comentário