Proposals - Propostas | |||
Main | Project Members | Robots | Research | Publications | Status | Pics and Movies | Press | Links | Contact |
Conceber e implementar um sistema de projecto e controlo de missão de uma equipa de robots cooperantes, baseado em Redes de Petri.
A definição da missão ou tarefa a efectuar por um robot é um dos componentes fundamentais de um robot autónomo e dotado de inteligência-máquina. A missão deve ser baseada na execução sequencial e/ou concorrente de tarefas primitivas (por exemplo: move_to, follow_vehicle, locate_object, take_object_to, go_home), sendo a comutação entre tarefas resultante da ocorrência de eventos que assinalam o final com sucesso ou insucesso da tarefa primitiva actual, obrigando à execução de uma nova tarefa primtiva. Quando se pretende definir a tarefa de uma equipa de robots cooperantes, é necessário contar também com primitivas de comunicação entre os robots, que permitam a execução de tarefas de uma forma sincronizada, bem como criar primitivas que exprimam a realização de uma tarefa em conjunto por mais do que um robot, estabelecendo uma relação entre estes (por exemplo, no futebol robótico, um robot executa a primitiva passar_bola e outro a primitiva receber_bola, implementando os dois efectivamente a primitiva passe.)
Neste trabalho, pretende-se conceber e implementar um sistema de projecto e controlo de missão de uma equipa de robots cooperantes, baseado em Redes de Petri. Deverá ser construído um parser da linguagem de definição da rede, que estabelecerá as instruções disponíveis para um programador de missão. Estas deverão necessariamente incluir o adicionar de lugares representando tarefas primitivas e a sua interligação por transições com eventos associados. Os lugares e os eventos deverão ser associados a funções de mais baixo nível que implementam as primtivas e detectam os eventos. Cada robot terá a sua própria Rede de Petri, mas poderão existir interligações explícitas entre os robots, através de arcos e transições que permitem comunicação entre as redes individuais, para exprimir acções cooperativas. O sistema deverá depois ser capaz de executar a missão programada, assumindo-se que estarão disponíveis as primitivas necessárias, cujo desenvolvimento não é objecto deste TFC.
A linguagem de programação a utilizar deverá ser JAVA, dado que pelas suas características permitirá a definição de uma missão através da Web e uma interface fácil com a linguagem em que estarão definidas as primitivas, provavelmente C ou C++.
As Redes de Petri poderão ser definidas graficamente, através de uma linguagem gráfica que crie código na linguagem de programação de uma rede definida no TFC, ou geradas automaticamente por um sistema de planeamento da missão. Estes serão temas contemplados por outros TFCs a propôr.
No final do TFC os alunos intervenientes terão enriquecido a sua experiência nos seguintes campos: