Skip to main content

Requisitos Funcionais

Revisão e atualização dos requisitos

Durante a primeira sprint, foram mapeados requisitos funcionais, que são basicamente as funcionalidades essenciais do projeto. Porém, no decorrer do tempo, o entendimento sobre o projeto em questão mudou, alterando também o rumo do desenvolvimento. Dessa forma, aqui nessa seção, serão detalhados os requisitos funcionais com todas as alterações realizadas.

RequisitoDescriçãoUser story relacionadaCritérios de aceitaçãoCaso de teste
RF01A interface de usuário permite que o robô seja controlado de maneira teleoperadaUser story 1 do DanilloO sistema apresenta acompanhamento das imagens enviadas pela câmera em tempo real, além de contar com uma interface de controle do robôVerificação da transmissão de imagem em tempo real e do funcionamento do controle
RF02É possível acessar dados sobre uma inspeçãoUser story 2 do JairoÉ possível visualizar numa tabela qual a quantidade de canos sujos em uma inspeçãoVisualizar a tela de visualização de dados
RF03O operador deve ser capaz de cancelar a inspeção a qualquer momento, de modo que o robô pare sua ação em no máximo 10 segundos.User story 4 do Danillo ChrystianO robô para sua ação em no máximo 10 segundos quando a inspeção é cancelada.Pressionar o botão de cancelar durante a inspeção e verificar se o robô para sua ação em no máximo 10 segundos.
RF04Deve ser possível saber a proximidade do robô em relação às paredes, a fim de ser possível parar o robô antes de uma colisãoUser story 3 do Jairo Santos.A interface possui um aviso indicando a aproximação de um obstáculoAproximar o robô de um obstáculo e visualizar o sistema de alarme na tela
RF05O sistema deve processar as imagens capturadas para identificar sujeira ou resíduos, utilizando algoritmos de visão computacional.User story 2 do Jairo Santos.O sistema processa as imagens capturadas para identificar sujeira ou resíduos.Capturar imagens. Verificar se o sistema identifica sujeira ou resíduos.
RF06O robô deve enviar os dados referentes à limpeza de cada tubo para uma base de dados.User story 3 do Jairo Santos.O robô envia os dados referentes à limpeza de cada tubo para uma base de dados.Realizar a limpeza de um tubo. Verificar se o robô envia os dados corretamente para a base de dados.

Mapeamento dos testes

Com base nos requisitos funcionais, é possível mapear os testes que comprovam o funcionamento do sistema.

Pontos principais a serem testados

  • Interface e controle de Teleoperação;
  • Transmissão de imagem em tempo real;
  • Visualização de dados (funcionamento da conexão com o banco de dados).

Preparação para os testes

  • Hardware: Realizar a inicialização do robô, utilizando o método de conexão por ssh para rodar o bringup, que inicializa vários protocolos para o funcionamento do Turtlebot. Para isso, é só abrir um terminal no computador e rodar o comando ssh bobolins@10.128.0.24, e digitar a senha para finalizar a conexão. Após isso, é só rodar o comando de bringup, que é ros2 launch turtlebot3_bringup robot.launch.py. Após isso, posicionar o robô em um ambiente seguro para a testagem, como uma pista.

  • Software: Inicializar o Backend, que é composto por serviços ROS, a API da aplicação web e o modelo de visão computacional que irá avaliar as fotos dos tubos.

  • Interface de Controle: Deixar a interface de controle aberta num dispositivo móvel que será entregue posteriormente ao testador.

Público alvo dos testadores

Por não ser possível testar com os funcionários que utilizarão o sistema na Atvos, foi selecionado um grupo de 4 pessoas com um letramento digital básico, com uma média de idades de 27 anos e uma familiarização média/baixa com robótica.

Realização dos testes

Aqui serão explicados os cenários de teste e como será a realização deles. Cada um dos tópicos abaixo indica uma tarefa que o testador irá ter que cumprir.

Tarefas do usuário durante o teste

Teste de Teleoperação (RF01):

Acesse a interface de controle e verifique a transmissão de imagens em tempo real. Envie comandos ao robô e observe se a mudança das imagens acompanha a movimentação do robô.

Teste de Visualização de Dados (RF02):

Visualize a tela de dados e tente achar a informação de quantos canos sujos foram detectados na última inspeção realizada.

Teste de Cancelamento de Inspeção (RF03):

Inicie uma inspeção e, após alguns segundos, pressione o botão "kill". Veja se o robô parou imediatamente o seu funcionamento.

Teste de Proximidade (RF04):

Aproximar o robô de diferentes obstáculos e observe o sistema de aviso na interface. Registre se os alertas foram acionados adequadamente e se houve alguma falha no sistema de prevenção de colisão.

Teste de Processamento de Imagens (RF05):

Capture imagens de tubos em diferentes condições (limpos, sujos, com resíduos). Verifique se o sistema identifica corretamente a sujeira ou os resíduos e como ele reporta esses dados.

Teste de Envio de Dados (RF06):

Verificar se os dados que constam na página de dados condizem com a realidade: data, número de canos sujos, entre outros.

Função do avaliador

Documentação: Registre todos os resultados dos testes, incluindo falhas encontradas, desempenho do sistema e feedback dos testadores.

Captura de Evidências: Caso o testador autorize, grave os testes para documentar o comportamento do sistema e das interfaces.

Avaliação de Conformidade: Compare os resultados obtidos com os critérios de aceitação definidos para cada requisito funcional.

Identificação de Problemas: Anote quaisquer discrepâncias ou problemas encontrados durante os testes e categorize-os por prioridade.

Coleta de feedbacks: Após a finalização do teste, pergunte ao testador como foi a experiência, e se ele tem pontos de melhoria que gostaria de compartilhar.

Conclusões

Os testes foram realizados no dia 10/06/24, com 4 pessoas diferentes. A interface web foi apresentada num notebook, isto porque a transmissão de imagens no celular estava muito lenta, o que prejudicava a teleoperação. Alguns insigths que foram retirados dessa experiência foram:

  • A sensibilidade do controle dificulta um pouco a movimentação do robô;
  • Como o teste foi realizado em computador, o controle por joystick não foi muito intuitivo para os usuários, sendo um feedback comum que o controle pelas setas do teclado seria mais fácil;
  • Troubleshooting: Foram localizados alguns erros de conexão com o frontend na parte de detecção dos obstáculos;
  • Enquanto o teste foi realizado, as partes de visualização de dados e de visão computacional ainda não estavam integradas ao sistema, então os requisitos relacionados a essas funções (RF02, RF05 e RF06) não puderam ser validados no teste.

A seguir, serão repassados cada teste e como foi o desempenho deles, problemas encontrados e pontos positivos.

Teste de Teleoperação (RF01):

Foi um sucesso em 100% das sessões de teste. A transmissão de imagem em tempo real foi útil e suficiente para a localização do robô no espaço. Porém, em alguns raros momentos, foram registrados alguns travamentos, que foram facilmente resolvidos com uma atualização da página.

Teste de Cancelamento de Inspeção (RF03):

Foi um sucesso em 75% das sessões de teste e o robô parou após o botão ser pressionado, não sendo possível movimentá-lo. Porém, na vez em que o comando não funcionou, a interface travou fazendo com que o robô ficasse rodando incessantemente e o controle do mesmo fosse perdido. Como a interface travou, apertar o botão de kill não paralizou o robô, o que chamou a atenção para a eficácia desse mecanismo em condições reais de emergência.

Teste de Proximidade (RF04):

Apesar de ser uma funcionalidade implementada desde a terceira Sprint, houve erros de conexão com o frontend durante os testes, fazendo com que o robô detectasse a presença de obstáculos e bloquasse a movimentação do robô nas direções que o fariam colidir, mas não retornando na interface (para o usuário) os alertas informando a proximidade de um obstáculo. Dessa forma, apesar do impedimento de colisões ter funcionado 100% das vezes, o retorno de alertas no frontend não foi apresentado em nenhum dos testes.

Em conclusão, os testes foram de suma importância para validar algumas das funcionalidades e observar problemas de usabilidade e integração do sistema criado. Os feedbacks coletados irão impactar o desenvolvimento da Sprint a seguir, visando corrigir os problemas encontrados, além de incluir a realização dos testes que se relacionam com os requisitos de funcionamento da detecção de sujidade nos tubos (visão computacional) e visualização de dados.