Como foi referido anteriormente, a execução do ambiente de simulação RoboDix é realizada com o auxílio da interface denominada SinaDix, a qual consiste numa interfa- ce que tem como propósito realizar a ligação entre a base de dados da instalação de me- dicina nuclear, o utilizador e o ambiente de simulação. De modo a obter um melhor de- senvolvimento e resposta do programa, foi criada uma interface com opções simples que permitam realizar tantas experiências como necessárias. Para o desenvolvimento da interface utilizou-se o Lazarus, a qual é uma ferramenta de programação potente e com- plexa, que irá ser utilizada como ambiente de desenvolvimento integrado (IDE) em lin- guagem Free Pascal (FPC).
De forma a estabelecer uma comunicação clara e precisa, foram criados parâmetros de entrada e de saídas universais para o projeto de SinaDix e RoboDix. Estas mensagens ou telegramas seguiram uma estrutura semelhante entre todos eles, a qual pode ser ob- servada na Figura 67. As mensagens são compostas por uma palavra-chave e um ou mais parâmetros, sendo estes separados por ponto e virgula.
Figura 67 Exemplo de uma mensagem.
Para cada uma das ações onde é necessário o envio duma mensagem criou-se uma palavra-chave específica, evitando desta forma a sobreposição de processos. Na Tabela 4 podem observar-se cada uma das mensagens utilizadas durante o desenvolvimento deste projeto.
Tabela 4 Tipos de mensagens utilizadas durante a simulação.
Mensagem Resposta Descrição
ELT ELT Eluição
MSR MSR Medição
CTN CTN Continuar eluição
FNE FNE Finalização da eluição
PTT;xxx;yyy;zzz PTT Partição:
xxx: PRE ou PHA; yyy: 005 ou 010;
zzz: distância em milímetros;
FNP FNP Finalização da partição
Como apresentado na Tabela 4, para cada mensagem é assinalada uma função em concreto, composta por três carateres. No caso da partição, o telegrama possui 3 parâ- metros adicionais, perfazendo 15 carateres, onde se encontra codificada a informação necessária para a realização deste processo:
O primeiro parâmetro é relativo à seleção do material radiativo a ser utiliza- do, isto é se se pretende a utilização do radioisótopo puro ou de um radiofár- maco
O segundo parâmetro, assinalado por ‘yyy’, faz menção da seringa a ser utili- zada, isto é uma seringa de 5 ml ou uma de 10 ml
O último parâmetro indica a distância em milímetros, que irá ser percorrida pelo êmbolo (equivalente ao volume de material radiativo desejado).
A interface criada para funcionar como suporte para as sucessivas repetições realiza- das durante o processo de criação do ambiente robotizado apenas é utilizada para a rea- lização de testes. Esta interface consiste numa janela com quatro botões, uma memo e uma caixa de texto, tal como pode ser observado na Figura 68.
Figura 68 Interface auxiliar.
Os botões situados na coluna à esquerda, tal como o seu nome indica, permitem o envio de mensagens ao simulador referente a ações pré-definidas. O botão situado à direita realiza o envio das mensagens escritas na caixa de texto situada abaixo do botão. A memo é uma caixa de texto que apresenta os telegramas enviados pelo V-REP, po- dendo, por exemplo, visualizar quando as mensagens estão a ser enviadas e se não exis- tem erros de comunicação entre as duas aplicações. Como apresentado na Figura 69, o tipo de comunicação utilizado entre a aplicação desenvolvida em Lazarus e o V-REP é através de UDP (User Datagram Protocol).
Figura 69 Componentes de comunicação utilizados.
O protocolo fornecido em UDP não garante a comunicação na rede de duas aplica- ções. O protocolo UDP consiste no envio de pacotes independentes de dados, chamados
datagramas, de uma aplicação para outra. O envio de datagramas é similar ao envio de uma carta pelo correio, na qual a ordem de entrega não é importante e não é garantida, e cada mensagem é independente de qualquer outra.
Para muitas aplicações a garantia de confiança é crítica para o sucesso da transferên- cia de informação, desde uma extremidade de conexão até à outra extremidade, mas algumas aplicações existentes não exigem um protocolo estrito. Os casos em que exi- gem uma garantia de envio e de entrega da mensagem, os envios podem ver-se afetados
pela sobrecarga do sistema de envio, o que provoca a anulação do envio da mensagem. Para evitar a sobrecarga ou garantir a rapidez do envio da mensagem utiliza-se o proto- colo de mensagens por UDP.
Para realizar a ligação entre a aplicação desenvolvida em Lazarus e o V-REP, define- se inicialmente a porta pela que irão ser enviadas e recebidas as mensagens. O código utilizado na aplicação de interface para efetuar a conexão é composto pelas seguintes linhas:
UDP.Listen(13332);
UDPSend.Connect('127.0.0.1', 8278);
Entretanto, as linhas de código utilizadas no V-REP para corresponder à ligação com a aplicação de interface são:
local host, port = "127.0.0.1", 13332 local socket = require("socket")
local ip = assert(socket.dns.toip(host)) udp = assert(socket.udp())
Desta forma é aberto um canal de comunicação entre os dois programas, o que quer dizer que o envio de mensagens entre eles já é admissível. Quando o utilizador pretende comandar o robô desde a interface para executar uma dada fase, por exemplo a fase de eluição, o utilizador seleciona o botão (no caso da janela auxiliar) ‘Elution’, e desta forma envia a mensagem que corresponde à fase da eluição. Este envio é efetuado utili- zando as seguintes linhas de código na aplicação de interface:
UDPSend.SendMessage('ELT');
Quando a aplicação de interface envia a mensagem, o V-REP está em escuta com a utilização do código apresentado a seguir, pelo que em qualquer instante o V-REP é capaz de receber a mensagem.
local data, ip, port = udpRec:receivefrom()
O V-REP também consegue enviar mensagens para a aplicação de interface, e suces- sivamente esta também consegue receber mensagens do V-REP. O código utilizado pelo V-REP para o envio de mensagens é:
local host, port = "127.0.0.1", 13332 local socket = require("socket")
local ip = assert(socket.dns.toip(host)) udp = assert(socket.udp())
assert(udp:sendto("FNS", ip, port))
E o código da aplicação da interface para receber a mensagem é:
UDP.Listen(13332);
Através das linhas de código apresentadas anteriormente, é possível estabelecer-se a conexão entre os dois softwares. Na Figura 70 observa-se quando é realizada a ligação entre o simulador e a interface, sendo esta ligação confirmada quando a caixa de texto da interface apresenta a mensagem ‘anything’.
Figura 70 Ligação entre o V-REP e a aplicação de interface.
Quando o utilizador seleciona o botão de ‘Elution’, a interface envia a mensagem ‘ELT’. Quando o simulador recebe a mensagem, realiza o processo relativo à primeira fase, tal como se apresenta na Figura 71.
Figura 71 Resposta do simulador após receber a mensagem da interface.
Após receber a mensagem da aplicação de interface o robô executa todos os proces- sos da primeira fase até chegar ao processo em que o braço robótico insere o adaptador no calibrador de dose. Nesta posição, o robô não pode continuar até que o utilizador realize a medição da atividade radioativa do frasco. Para o utilizador saber que é neces- sária a extração do valor dado pelo calibrador de dose, o robô envia uma mensagem ao utilizador a indicar que pode realizar a medição, processo que pode ser observado na Figura 72.
Figura 72 Resposta do simulador após receber a primeira mensagem.
O utilizador realiza a medição e após registar o valor na base de dados, indica ao ro- bô que já pode continuar com a segunda parte do processo da eluição, selecionando o botão ‘ContinueElution’, que envia a mensagem ‘CTN’, (ver Figura 73).
Figura 73 Mensagem de retorno da aplicação de interface.
Desta forma o simulador pode executar cada uma das fases programadas no V-REP, e através do envio das mensagens é possível controlar cada um dos processos mencio- nados durante este trabalho.