Buscar

Prévia do material em texto

Mestrado em Engenharia Eletrónica e de 
Computadores 
 
Robótica Avançada 
 
 
Ivo Dias nº16998 
Rafael Fernandes nº1699 
Pedro Guimarães nº16992 
 
2021/2022 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
2 29 de julho de 2022 
Resumo 
Este relatório é parte integrante do trabalho realizado na unidade curricular de Robótica 
avançada, cujo objetivo consiste em aprofundar o conhecimento sobre Robôs industriais, 
e a infinidade de soluções que estes podem ter e como estes podem ser programados para 
atingir esses resultados. 
A partir da Terceira Revolução Industrial, a automatização no chão de fábrica tem se 
desenvolvido cada dia mais, com processos e máquinas inteligente e avançadas. O que 
algum dia fez parte apenas de filmes, como “Tempos Modernos”, hoje já faz parte das 
indústrias e os robôs industriais são peças fundamentais nesse processo. 
Robôs industriais são máquinas que desempenham tarefas que necessitam de esforços 
repetitivos, precisão, resistência, rapidez e força. Ele pode mover ferramentas, 
dispositivos especiais, peças e outros itens. Optar por um robô industrial aumenta a 
produtividade e reduz os custos da empresa. 
Além dos robôs industriais tradicionais, existem também os robôs colaborativos, aqueles 
que trabalham em parceria com os humanos, o que traz mais conforto e segurança para 
os funcionários. Afinal, nada mais enfadonho e cansativo do que fazer gestos repetitivos 
como encaixar uma peça sempre no mesmo lugar. Então, por que não deixar um robô 
fazer esta tarefa, enquanto o funcionário fica responsável por gerir o trabalho ou assumir 
outra atividade com maior valor agregado? 
 
 
 
 
 
 
 
 
 
Palavras-Chave (Tema): Indústria, KUKA, Interrupção 
Palavras-Chave (Tecnologias): Kinect, Comunicação 
https://pollux.com.br/blog/robos-colaborativos-os-robos-que-estao-revolucionando-o-chao-de-fabrica/
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
3 29 de julho de 2022 
Índice 
1. Introdução.................................................................................................................. 5 
1.1 Enquadramento .................................................................................................. 5 
1.2 Apresentação do Trabalho ................................................................................. 5 
1.3 Tecnologias utilizados ....................................................................................... 5 
1.4 Organização do relatório .................................................................................... 5 
2. Contexto Teórico ....................................................................................................... 7 
2.1 Tipos de Robôs ....................................................................................................... 8 
2.1.1 Robôs Cartesianos ............................................................................................ 8 
2.1.2 Robôs SCARA ................................................................................................. 9 
2.1.3 Robôs Delta ...................................................................................................... 9 
2.1.4 Robôs Articulados .......................................................................................... 10 
2.1.5 Robôs Cilíndricos ........................................................................................... 11 
2.2 Qual o robô ideal ................................................................................................... 12 
3. Implementação Prática ............................................................................................ 13 
4. Discussão ................................................................................................................. 30 
5. Conclusão ................................................................................................................ 31 
 
 
 
 
 
 
 
 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
4 29 de julho de 2022 
Índice de Ilustrações 
Figura 1 - Robô Cartesiano ........................................................................................................................... 9 
Figura 2 - Robô SCARA .............................................................................................................................. 9 
Figura 3 - Robô Delta ................................................................................................................................. 10 
Figura 4 - Robô Articulado ......................................................................................................................... 11 
Figura 5 - Robô Cilíndrico ......................................................................................................................... 12 
Figura 6 - KUKA KR 6 R900 ..................................................................................................................... 13 
Figura 7 - Axis data .................................................................................................................................... 14 
Figura 8 - Espaço de trabalho ..................................................................................................................... 14 
Figura 9 - Arquitetura dos elementos do projeto ........................................................................................ 15 
Figura 10 - Imagens onde a bola ficava sem detalhe e com arrasto............................................................ 16 
Figura 11 - Imagem explicativa das diferenças entre FPS, com a bola a percorrer a mesma velocidade quanto 
maior for os fps maior é a nitidez da bola .................................................................................................. 17 
Figura 12 – Representação da distancia focal numa lente .......................................................................... 17 
Figura 13 – Fotos tiradas a posição da bola em diferentes ângulos ............................................................ 18 
Figura 14 – Plot das retas traçadas que mostram a posição da bola ........................................................... 18 
Figura 15 - Mini rede criada com dois PC´s ............................................................................................... 19 
Figura 16 - Sistema de deteção de imagem com duas câmaras .................................................................. 19 
Figura 17 -Leep motion e algumas imagens da mesma .............................................................................. 20 
Figura 18 – Sistema do projeto final .......................................................................................................... 20 
Figura 19 - Fotos de calibração .................................................................................................................. 21 
Figura 20 - Código python de calibração ................................................................................................... 21 
Figura 21 - Comparação da imagem depois da distroção ........................................................................... 22 
Figura 22 - Linha de código da distorção de imagem ................................................................................. 22 
Figura 23 - imagem da bola utilizada no projeto ........................................................................................ 22 
Figura 24 - Código da Segmentação da bola .............................................................................................. 23 
Figura 25 - Código da deteção da bola ....................................................................................................... 23 
Figura 26 - Imagens reais da deteção da bola .............................................................................................24 
Figura 27 - Código dos cálculos para obter a posição da bola .................................................................... 24 
Figura 28 - Código da regressão linear para detetar a trajetória da bola .................................................... 25 
Figura 29 - Imagem modelo para calibração .............................................................................................. 25 
Figura 30 - Código que envia para a KUKA as coordenadas com um nível de segurança ......................... 26 
Figura 31 – Sistema de comunicação do nosso projeto .............................................................................. 27 
Figura 32 – Código Kuka ........................................................................................................................... 27 
Figura 33 – Código KUKA SAVEBALL() ................................................................................................ 28 
Figura 34- Código KUKA EMERGENCY() .............................................................................................. 28 
Figura 35 – Código KUKA loop ................................................................................................................ 29 
 
 
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221389
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221391
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221394
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221395
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221396
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221397
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221398
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221399
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221399
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221400
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221401
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221402
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221403
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221404
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221405
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221406
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221408
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221413
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221419
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221420
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221421
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221422
file:///C:/Users/rafae/OneDrive%20-%20Instituto%20Politécnico%20do%20Cávado%20e%20do%20Ave/IPCA/Mestrado/2º%20Semestre/Robótica/Relatório-robotica.docx%23_Toc110221423
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
5 29 de julho de 2022 
 
1. Introdução 
1.1 Enquadramento 
Trabalho prático realizado no âmbito da unidade curricular de Robótica avançada do 
2º semestre do 1º ano do mestrado em Engenharia Eletrónica e de Computadores 
lecionada pelo docente João Vilaça. 
 
1.2 Apresentação do Trabalho 
A realização deste projeto tem como objetivo aprofundar o conhecimento sobre Robôs 
industriais, e a infinidade de soluções que estes podem ter e como estes podem ser 
programados para atingir esses resultados. 
Para tal foram abordados, a nível prático, o funcionamento do braço robótico da 
KUKA e como este poderia ser utilizado, através da sua programação e utilização de 
inputs e outputs. 
 
1.3 Tecnologias utilizados 
Para a realização deste projeto também foram utilizados alguns softwares. Para a 
realização da parte do projeto utilizada no computador, controlando assim a câmara 
Kinect, foi utilizado o programa PyCharm. Este é um Ambiente de Desenvolvimento 
Integrado ou IDE com um editor de código e um compilador para escrever e compilar 
programas em uma ou várias linguagens de programação. Para a programação do braço 
robótico através do computador foi utilizado o software OrangeEdit. Este é o ambiente 
de edição mais popular para programas de robôs. 
 
1.4 Organização do relatório 
Este relatório assenta numa estrutura com um total de 5 capítulos onde, no primeiro 
capítulo, é realizada uma breve exposição do conteúdo que será apresentado ao longo do 
documento, assim como a sua organização. O desenvolvimento surge de seguida com a 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
6 29 de julho de 2022 
explicação detalhada do funcionamento de todas as componentes necessárias para a 
implementação do sistema. Por fim são apresentados os resultados e as conclusões do 
projeto, assim como as possibilidades para o desenvolvimento de trabalhos futuros. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
7 29 de julho de 2022 
2. Contexto Teórico 
Em 1961, o primeiro robô industrial foi instalado numa fabricante de automóveis em 
New Jersey, nos EUA. Ele pegava em peças aquecidas de metal e empilhava-as. Desde 
então, houve uma crescente adoção dessa tecnologia que surpreende pela precisão, 
velocidade e robustez. Atualmente, com a constante evolução, há uma variedade enorme 
de robôs industriais aptos a auxiliar o trabalho nas fábricas. 
Robôs industriais são manipuladores multiuso reprogramáveis e controlados 
automaticamente, programáveis em vários eixos. Esta definição é dada pela Organização 
Internacional de Normalização (ISO). Os robôs possuem diferentes graus de liberdade 
que identificam a sua versatilidade. 
Ou seja, o número de movimentos individuaisdas articulações pode variar. Apresentam 
base fixa ou móvel e são usados em aplicações de automação industrial. 
Os robôs são capazes de mover peças, dispositivos, materiais ou ferramentas, auxiliando 
diversas operações na cadeia produtiva. 
Possuem características similares na sua composição: 
• braço mecânico para manipulações controlável; 
• componentes rígidos que atuam como elos, conhecidos como links; 
• conexões de juntas rotativas ou lineares; 
• atuadores, que podem ser, por exemplo, motores elétricos, pneumáticos ou 
hidráulicos; 
• extremidades manipuladoras (garra, pinça ou ferramenta) nos seus 
braços robóticos. 
Estes robôs têm como atividades comuns a fundição, pintura, soldadura e montagem. 
Além disso, eles são aplicados em movimentação de cargas, inspeção de produtos e 
deslocamento. 
https://blog.kalatec.com.br/tipos-de-automacao/
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
8 29 de julho de 2022 
Podem, ainda, manipular, explorar, transportar e armazenar materiais. Isso contribui 
inclusive para livrar os operários de atividades não ergonômicas. 
Além dos modelos multitarefa, existem também os chamados robôs colaborativos – que 
interagem com os trabalhadores. Esse tipo é seguro para trabalhar no chão de fábrica, sem 
a necessidade de isolamentos. 
Há ainda outros robôs que fazem a transferência de itens ou produtos por toda a extensão 
das linhas de produção, atuando como verdadeiros operadores. O investimento na 
tecnologia robótica é fundamental para inserir a empresa no conceito de Indústria 4.0. 
 
2.1 Tipos de Robôs 
2.1.1 Robôs Cartesianos 
 
Este modelo de robô realiza movimentos perpendiculares usando os eixos cartesianos X, 
Y e Z. Também conhecido como robô retilíneo. Com anatomia retangular, é muito 
adotado para a soldadura. 
A sua configuração é bastante flexível, podendo ser personalizado para diversas tarefas 
industriais, como: selecionar itens, montar, colocar, carregar e descarregar materiais. 
A programação e operação destes são consideradas simples. Além disso, são rentáveis, 
tornando-se um modelo de robô muito atrativo para as fábricas. 
 
 
 
 
 
 
https://blog.kalatec.com.br/chao-de-fabrica/
https://blog.kalatec.com.br/linha-de-producao/
https://blog.kalatec.com.br/industria-4-0/
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
9 29 de julho de 2022 
 
 
 
 2.1.2 Robôs SCARA 
 
Esta sigla é originada da denominação em inglês Selective Compliance Assembly Robot 
Arm, que significa Braço Robótico para Montagem de Conformidade Seletiva. 
Também conhecido como robô paralelo, é semelhante ao modelo cartesiano. 
Muito utilizado em processos de montagem e aplicações de peças, por conta da 
capacidade de girar o final de seu braço robótico. 
Este robô consegue estender e retrair seu braço, com uma área de trabalho em forma de 
anel. Tem boa repetibilidade e é fácil de programar. 
 
Figura 2 - Robô SCARA 
 
 
 2.1.3 Robôs Delta 
 
Figura 1 - Robô Cartesiano 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
10 29 de julho de 2022 
Também conhecido como robô de link paralelo ou robô aranha. O layout é formado por 
ligações paralelas de junções unidas a uma base, configurando uma pirâmide invertida. 
Excelente para transferir e coletar materiais devido a sua alta precisão de movimentos. 
Opera em alta velocidade, graças ao fácil controle de cada um de seus braços. Este robô 
é muito utilizado nas indústrias farmacêutica, eletrónica e alimentar. 
 
 
 
 
 
 
 
 
 
 
 
 
 2.1.4 Robôs Articulados 
 
Chamado também de antropomórfico, este tipo de robô apresenta pelo menos três juntas 
de rotação, garantindo alta mobilidade. Amplamente utilizado na indústria, tem um braço 
robótico ligado a uma base, permitindo o movimento giratório. 
Sua estrutura imita a anatomia do braço humano. Pode alcançar altas velocidades e alinha 
facilmente a coordenadas. É flexível para atuar em pequenos espaços. Este tipo de robô é 
o que será utilizado e abordado ao longo deste trabalho prático. 
 
Figura 3 - Robô Delta 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
11 29 de julho de 2022 
 
Figura 4 - Robô Articulado 
 
 2.1.5 Robôs Cilíndricos 
 
Este modelo de robô industrial redundante opera ferramentas em diversas posições. Sua 
estrutura é composta de ao menos uma junta prismática e uma junta rotativa, permitindo 
movimentos de duas translações e uma rotação. 
Sua forma de trabalho é baseada em sua estrutura cilíndrica. É capaz de realizar 
movimentos lineares verticais e horizontais. Indicado para aplicações como recolher, 
girar e colocar. 
 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
12 29 de julho de 2022 
 
Figura 5 - Robô Cilíndrico 
 
2.2 Qual o robô ideal 
 
Para escolher os robôs industriais ideais, é preciso saber quais serão as suas aplicações. 
Geralmente, os equipamentos eleitos para manufatura estão entre os tipos demonstrados 
acima. 
Eles são definidos de acordo com a função que irão realizar e quais suas vantagens para 
a empresa em questão. 
Também é preciso considerar o número de eixos, a sua velocidade, o alcance e a 
capacidade de carga, de maneira que atenda às exigências de cada negócio. 
Um dos benefícios principais de um robô é a sua capacidade de executar funções 
repetitivas sem erros, podendo atuar em ambientes considerados perigosos. Sendo assim, 
além de aumentar a produtividade, ele também eleva a segurança do trabalho. 
 
 
 
 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
13 29 de julho de 2022 
3. Implementação Prática 
Para a realização deste projeto foi utilizado o braço robótico articulado da KUKA, com o 
modelo KR 6 R900 sixx, demonstrado na figura seguinte. 
 
 
 
 
 
 
 
 
Além de ser funcional, o compacto KUKA R900 Sixx estabelece o padrão de segurança, 
simplificando a interação humana e máquina. 
Este é composto por: 
• 6 eixos 
• Carga máxima de 6kg 
• Alcance máximo de 901.5 mm 
• Peso de aproximadamente 52 kg 
 
Estes 6 eixos, numerados de A1 a A6 têm diferentes alcances de movimento, 
demonstrados na figura seguinte. 
 
 
Figura 6 - KUKA KR 6 R900 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
14 29 de julho de 2022 
 
 
 
 
 
 
Este deve estar a uma temperatura ambiente entre 5 e 45ºC, contendo também um índice 
de proteção IP54, em que o primeiro dígito (5), refere-se à proteção limitada contra a 
entrada de pó e resíduos e o segundo dígito (4), a este ser protegido de spray de água de 
qualquer direção. 
Este robô, tem vários tipos de montagem diferentes, poderá ser montado na vertical, para 
baixo ou para cima, ou na horizontal, por exemplo numa parede. 
Na figura seguinte, está representado um gráfico relativo ao espaço de trabalho em que 
este consegue operar. 
 
 
 
 
 
 
 
 
 
 
 
Figura 7 - Axis data 
Figura 8 - Espaço de trabalho 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
15 29 de julho de 2022 
4. Projeto 
4.1 Projeto Inicial versão 1.0 
O projeto inicial apresentado na disciplina de robótica tinha como conceito a construção de 
um sistema em que a KUKA iria jogar ping pong, onde iriamos ter uma kinect que com ajuda de 
um programa Python iria detetar a bola e executar todos os cálculos necessários para prever a 
trajetória da bola e trespassar para a KUKA essa informação para esta se mover para o respetivo 
lugar e devolver a bola para o outro lado da mesa. 
 
 
 
 
 
 
 
 
 
Como podemos observar a Kinect iria ser disposta numa posição obliqua para obter uma 
melhor visão de todo ao espaço e da bola, para executar os cálculos da trajetória da bola com 
exatidão. 
No projeto inicialmente idealizado foi executado uma pequenainterface de interação as 
imagens a seguir mostram um pouco dessa interface. 
Figura 9 - Arquitetura dos elementos do projeto 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
16 29 de julho de 2022 
4.1.1 Testes e conclusões 
Com o decorrer do projeto deparamo-nos com alguns problemas um dos primeiros 
problemas foi os baixos FPS que a Kinect nos fornecia (que era no máximo 30 FPS e por vezes 
apenas dava 20, 15) o que fazia com que a deteção da bola fosse impossível pois em certas 
velocidades, a bola ficava com arrasto e era impossível detetar o centro da mesma com exatidão. 
Explicando um pouco o porque deste desfoque, é só pensar que a câmara tem 30 fps ou seja por 
segundo ela capta 30 imagens, se a bola percorrer a uma velocidade de 1 m/s em diferenças de 
frame a bola percorre 3 cm, como a bola tinha 2 cm ela aparecia em dois frames o que criava o 
arrasto e falta de precisão na deteção do centro. 
 
 
Figura 10 - Imagens onde a bola ficava sem detalhe e com arrasto 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
17 29 de julho de 2022 
 
 
 
 
 
 
 
 
 
Então a solução passou por tentar arranjar câmaras com mais fps, para então mitigar esta 
perda de informação devido ao arrasto, posto isto optamos por câmaras do telemóvel com 60 fps 
onde a diferença de frames era de 1.6 cm o que já dava uma precisão melhor. 
Com a perspetiva que agora tudo iria dar certo usamos então duas câmaras com 60 fps para 
detetar a posição 3D da bola. A estratégia usada levou algum tempo e estudo até conseguirmos 
alcançá-la com exatidão, pois era necessário ter um pouco de estudo na aré de projeção 3D com 
planos 2D. Mas basicamente cada câmara detetava a bola e de seguida era criada uma reta se 
serial projetada num espaço 3D, esta reta era criada sabendo a distância focal da câmara em uso 
o que por sua vez não era fácil de descobrir, (era preciso alguma pesquisa), sabendo a distância 
focal, e a posição da bola no plano da câmara criava-se a reta virtual em espaço 3D. 
Executando este método em ambas as câmaras temos então duas retas descritas num plano 
3D que apesar de não se cruzarem devido a erros de calibrações e as câmaras serem diferentes, 
entre outros fatores, elas ficam próximas no ponto onde a bola se encontra, então é aplicada uma 
Figura 11 - Imagem explicativa das diferenças entre FPS, com a bola a percorrer a 
mesma velocidade quanto maior for os fps maior é a nitidez da bola 
Figura 12 – Representação da distancia focal numa lente 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
18 29 de julho de 2022 
função que mostra a reta com os pontos mais próximos das duas retas e o ponto medio dessa reta 
é o centro da nossa bola. Como mostra a figura a seguir foi capturada duas imagens em ângulos 
diferentes. 
 
 
 
 
 
 
 
E executou-se o método anterior descrito e obteve-se o resultado descrito na figura 
a seguir onde conseguimos ver claramente que o método deteta com pouco erro a posição 
da bola 
 
 
 
 
 
 
 
 
 
Porem com esta evolução para 2 câmaras surgiu um problema que foi a sincronização das 
mesmas, ou seja, ambas as câmaras tirarem o mesmo frame. Foram realizados testes fizemos uma 
pequena rede onde tínhamos dois PC ligados, onde um era o server e outro o cliente era mandado 
um trigger do cliente, para ser capturada a imagem no server e no cliente, para fim de testes 
colocamos um cronometro até a escala de milissegundos para ver o desfasamento das imagens e 
Figura 14 – Plot das retas traçadas que mostram a posição da bola 
Figura 13 – Fotos tiradas a posição da bola em diferentes ângulos 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
19 29 de julho de 2022 
concluímos que era um desfasamento que iria trazer problemas na exatidão da localização da bola 
pois num dos frames a bola iria estar. 
 
 
 
 
 
 
Com isto decidimos usar Raspberry pi para fazer esta sincronização de câmaras pois 
lemos um artigo que seria possível, então decidimos experimentar, configuramos a Raspeberry pi 
com todas as librarias necessárias usamos uma câmara usb e uma câmara dedicada para Raspberry 
pi apesar de termos conseguido mitigar o tempo de desfasamento das imagens tivemos o problema 
de FPS como antigamente era muitos poucos FPS, acreditamos que fosse pelo falta de 
processamento das Raspeberry pi então demos um upgrade para um versão a cima mas o mesmo 
acontecia reparamos que o processador aquecia muito, então compramos um dissipador de calor 
mas obtivemos os mesmos resultados, iriamos precisar de um dissipador com ventoinha. 
 
 
 
 
 
 
 
Por última tentativa de continuar com a ideia inicial, decidimos tentar com duas Leep 
motion uma câmara que deteta infra vermelhos onde a ideia era pintar a bola com uma cor 
refletora, ou colocar um led infravermelho dentro da bola para a câmara detetar, ao inicio 
gostamos dos resultados que estávamos a ter, porem deparamo-nos com um problema que foi o 
facto de que a câmara tinha pouca resolução e uma angulo de visão enorme então iriamos perder 
o detalhe ou seja a distancia entre pixéis era enorme uma vez que a nossa bola era muito pequena. 
Figura 15 - Mini rede criada com dois PC´s 
Figura 16 - Sistema de deteção de imagem com duas câmaras 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
20 29 de julho de 2022 
 
 
 
 
 
 
 
Em suma concluímos que o material necessário seria câmaras com trigger´s, com bons FPS e 
com uma ótima resolução, como não tínhamos material desse a mão decidimos então alterar a 
abordagem. Então decidiu-se aumentar o tamanho da bola e fazer um jogo diferente. 
4.2 Projeto versão 2.0 
Depois de todas as conclusões tiradas ao longo do tempo de testes, vimos que a nossa 
abordagem estava muito difícil de se concretizar, então decidimos aumentar o tamanho a bola e 
trocar o conceito do jogo, este agora consistia em atirarmos a bola ao longo de uma mesa e a 
KUKA servir como guarda-redes depois de apanhar a bola iria guardar em diferentes caixas 
dispostas numa mesa ao lado. 
 
 
 
 
 
 
 
 
 
 
4.2.1 Visão 
 Para obter a posição de interseção da bola e da KUKA, vários passos foram necessários 
para tornar este processo possível e fiável. Todos os passos necessários estão descritos abaixo. 
Figura 17 -Leep motion e algumas imagens da mesma 
Figura 18 – Sistema do projeto final 
View 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
21 29 de julho de 2022 
4.2.1.1 Calibração da câmara 
Com o objetivo de remover a distorção ótica da imagem, foi necessário um processo de 
calibração. Este processo consiste em usar um tabuleiro de xadrez para conseguir obter os 
parâmetros intrínsecos da câmara, para depois ser possível, remover a distorção da imagem. 
 
Figura 19 - Fotos de calibração 
Foram tiradas 45 fotos ao tabuleiro de xadrez, tentado apanhar todos os cantos da imagem para 
conseguir remover a distorção de forma uniforme. 
Após isso, os vértices dos quadrados do xadrez foram detetados. Com isso é possível calcular a 
matriz fundamental da imagem (distancia focal e centro ótico) e obter os coeficientes de distorção 
da KINECT. 
A figura 21 destaca o código usado para a calibração 
 
Uns exemplos dos resultados da remoção da distorção encontram-se registados na figura 22 
Figura 20 - Código python de calibração 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
22 29 de julho de 2022 
 
Figura 21 - Comparação da imagem depois da distorção 
Após ser obtido um frame é sempre necessário remover a distorção utilizando os coeficientes 
obtidos na calibração (ver figura 23) 
 
Figura 22 - Linha de código da distorção de imagem 
4.2.1.2 Segmentação da bola 
Para detetar a posição da bola no espaço, primeiro é preciso detetar a bola da imagem 
capturadapela Kinect. Para isso foi usada uma bola rosa, para que a sua segmentação fosse mais 
fácil e precisa. A bola tinha cerca de 20cm de diâmetro e encontra-se ilustrada na figura 23 
 
 
Figura 23 - imagem da bola utilizada no projeto 
O primeiro passo para conseguir detetar a bola, é converter a imagem do espaço RGB para o 
espaço HSV, que nos permite mais facilmente segmentar a cor Rosa. Após a cor rosa ter sido 
segmentada é aplicado um filtro de erosão seguido de uma dilatação, com o objetivo de diminuir 
qualquer espécie de ruido ou pequenos pontos que tenham ficado após a segmentação da cor. 
A figura 24 corresponde ao código usada para segmentar a bola. 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
23 29 de julho de 2022 
 
Figura 24 - Código da Segmentação da bola 
Após a cor estar segmenta é usada a função “cv2.findContours()” que vai procurar contornos na 
imagem. O objetivo é detetar os contornos da bola, para poder detetar o seu centro. 
Como este processo não é perfeito, por vezes contornos serão detetados que não são a bola. Para 
fazer uma seleção de qual dos contornos detetados é a bola, primeiro contorno com uma área 
menor do que 125 pixels são eliminados. 
Após isso, será testado se o contorno detetado é redondo. Para isso, é desenhado um círculo no 
centro do contorno, com o raio correspondente a um círculo com a área do contorno. Assim é 
possível contar quantos pixels do contorno se encontram dentro desse círculo. Se mais de 25% 
dos pixels estiverem fora do contorno, o objeto não é considerado redondo, logo não é a bola. 
Se um dos contornos detetados verificar estas condições é considerado a bola. 
A figura 26 apresenta o código correspondente á deteção da bola. 
Figura 25 - Código da deteção da bola 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
24 29 de julho de 2022 
A figura 27 representa o processo descrito previamente. 
 
Figura 26 - Imagens reais da deteção da bola 
4.2.1.3 Interpolação 3D 
Para obter a posição mundo da bola, são necessários alguns parâmetros previamente obtidos 
durante a fase de calibração da câmara. 
• Centro – Centro ótico da imagem (pixels) 
• Focalp – Distancia focal (pixels) 
• Dist_mesa = distancia da Kinect á mesa 
 
Figura 27 - Código dos cálculos para obter a posição da bola 
Com isto obteremos a posição mundo da bola em relação á câmara. Depois será necessário 
converter para o mundo da KUKA. 
4.2.1.4 Cálculo da Trajetória 
Este processo está dividido em duas fases: 
• Análise da Trajetória 
• Cálculo da trajetória e do ponto de Interseção 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
25 29 de julho de 2022 
A análise da trajetória começa quando a bola estiver a mover-se em direção á KUKA, e se 
encontrar dentro do espaço de análise, que é determinado pelo utilizador. Este espaço é necessário 
pois se a decisão for tomada tarde a KUKA não terá tempo suficiente para atingir a posição. 
 Neste momento, a cada frame captado pela câmara, a posição munda da bola e guardada 
sucessivamente. Após a bola passar o espaço de análise, é calculado a trajetória que melhor 
descreve o movimento da bola, e em seguida, é calculado o ponto de interseção para onde a 
KUKA se irá mover. 
Para calcular a trajetória que melhor descreve o movimento da bola, foi usado uma regressão 
linear baseado numa rede neuronal. Esta rede assemelha o movimento da bola a uma reta “y = mx 
+ b”. Após isso é calculado o ponto mais próximo desta reta á posição onde a KUKA se encontra, 
que é a posição HOME. 
 
Figura 28 - Código da regressão linear para detetar a trajetória da bola 
4.2.1.5 Enviar para a KUKA 
Para ser possível calibrar as coordenadas da câmara com a KUKA, é necessário ajustar a base da 
KUKA para coincidir com base da câmara. 
Para isso foi usada a seguinte imagem: 
 
 
Figura 29 - Imagem modelo para calibração 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
26 29 de julho de 2022 
 
Esta imagem era colocada em cima da mesa, e era detetada a sua posição no mundo. De 
Seguida, o ponto preto era definido como a origem da Base. Assim este ponto será a origem da 
KUKA (0,0,0) e no teremos a coordenada correspondente ao mundo da câmara (cx, cy, cz), o que 
torna possível calcular o offset. 
Para finalizar é necessário alinhar os eixos X e Y da KUKA com os da câmara. Para isso a imagem 
é movida no sentido X da câmara e é definido como eixo dos X na base da KUKA. O mesmo é 
feito para o eixo dos Y. 
Com os eixos alinhados, será apensas necessário subtrair o offset (cx,cy,cz) ao ponto resultante 
da etapa anterior (calculo da trajetória), para obtermos o ponto para envia á KUKA. 
Após obter o ponto é necessário enviar a informação num frame que será reconhecido pela KUKA 
(ver figura 31). 
Caso o valor para enviar á KUKA fosse superior ao seu WORKSPACE, o código emitia uma 
mensagem de erro e parava o programa. 
 
Figura 30 - Código que envia para a KUKA as coordenadas com um nível de segurança 
 
4.2.3 KUKA código 
Em paralelo ao Código python foi executado o código da KUKA que iria controlar a 
mesma para executar todos os movimentos idealizados e processar os dados enviados do 
python para ela na imagem a seguir mostra a arquitetura de ligações do nosso projeto. 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
27 29 de julho de 2022 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A KUKA antes de começar o seu programa é calibrada com as duas bases que iram ser usadas no 
programa. A base do apanhar a bola é calibrada em conjunto com a câmara já explicado 
anteriormente, a segunda base e calibrada manualmente. Depois são escolhidos os pontos de 
HOME e o programa está pronto a ser executado. 
O código começa inicial mente colocar a KUKA na sua posição de HOME e inicia algumas 
variáveis que vão ser utilizadas mais a frente no código, também inicializa duas funções de 
interrupção uma que é ativada por uma interrupção externa outra por uma variável enviada pelo 
python e por fim ativamos a interrupção 2. 
Figura 31 – Sistema de comunicação do 
nosso projeto 
Figura 32 – Código Kuka 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
28 29 de julho de 2022 
 De seguida iremos descrever a função SAVEBALL() está função é ativada por um sensor 
de proximidade quando a bola entrava no cesto o sensor ficava a 1 e disparava a interrupção. Esta 
executava então a desativação da respetiva interrupção, depois executava um PTP que era um 
pequeno movimento de lift e giratório para a bola não sair do cesto, de seguida definíamos a nova 
base de orientação que era a mesa com as caixas para colocar as bolas. A variável G69_X definia 
em qual base iria ser colocada a bola esta variável era decrementada e incrementada consoante a 
caixa que a bola era colocada. Se esta variável fosse 1 então a bola iria ser colocada na caixa 1 
executando os PTP definidos e de seguida a variável era incrementada se a G69_X fosse 2 então 
ela colocaria na caixa 2 a bola executando os respetivos PTP e decrementando a variável. No final 
desta função era trocado a base novamente, mas agora para a de apanhar a bola e fazia um PTP 
HOME para voltar a posição inicial de apanhar. 
A segunda função EMERGENCY() é uma função como o próprio nome diz de emergência onde 
nesta função os motores da KUKA são forçados a parar por algum motivo que vejamos 
necessário, inicialmente era para caso a câmara deteta-se uma pessoa no workspace da KUKA ou 
quando pressiona-se mos o botão da interface, que por falta de tempo não criamos. 
 
Figura 33 – Código KUKA SAVEBALL() 
Figura 34- Código KUKA EMERGENCY() 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
29 29 de julho de 2022 
Por fim temos o código do LOOP da KUKA onde o programa corre, neste LOOP temos então a 
condiçãoIF que testa se a variável enviada pelo python está ativa quanto esta está ativa ela anula 
a flag G69_ACT e ativa a G69_BUSY que faz com que o python não consiga enviar mais 
nenhuma coordenada a KUKA para não haver conflitos posto isto de seguida executa então o LIN 
REF_POS que executa o movimento para as coordenadas enviadas pelo python, depois ativa a 
interrupção 4 referente ao SAVEBALL (). A função é so ativada aqui por motivos que o sensor 
pode ativar por alguma interferência ou por algum motivo ele ativou e nos não queremos que ele 
execute e função SAVEBALL () desnecessária mente então ativamos só quando realmente a 
KUKA tem intenções de apanhar a bola. 
A razão pela qual escolhemos o movimento LIN no LOOP e não o PTP é que no PTP a KUKA 
escolhe qual o caminho mais rápido para atingir o ponto final o que fazia com que muitas vezes 
a KUKA mexe-se se nos eixos nos Z, uma vez que a tool estava muito próxima da mesa esta por 
vezes batia, então optamos pelo LIN que executa o seu movimento ao longo de uma linha reta, o 
que resolve o problema que tínhamos de a tool bater na mesa. Verificamos também que o PTP a 
velocidade de execução é muito mais rápida que o LIN então tivemos de fazer algumas alterações 
no sistema global do projeto para que a KUKA acerta-se o alvo. 
 
Figura 35 – Código KUKA loop 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
30 29 de julho de 2022 
 
5. Discussão 
 
Ao testarmos e estudarmos os diversos temas que queríamos que fossem o objetivo do trabalho 
fomos nos deparando com diversas adversidades, desde a velocidade do robô, velocidade de 
captação das câmaras até a calibração destas, que nos invalidavam o primeiro objetivo proposto 
ao docente “KUKA Pong”. 
Para nós foi um trabalho bastante esclarecedor porque foi a forma mais fácil para nos fazer 
aprender acerca do funcionamento do robô porque fomos sempre utilizando a tentativa e erro. 
O facto de termos que trabalhar com o Software PyCharm e interligar com a KUKA também nos 
fez crescer em termos da integração de várias linguagens de programação, e visto que o braço 
robótico é um elemento móvel, foi de maior agrado nosso o facto de podermos testar o nosso 
projeto, a uma velocidade baixa, mas com a perceção do funcionamento ou não deste projeto. 
 
 
 
 
 Mestrado em Engenharia Eletrónica e de Computadores Robótica Avançada 
 
 
31 29 de julho de 2022 
6. Conclusão 
 
O trabalho foi concluído com sucesso e de acordo com as nossas expectativas, porque 
conseguimos obter o que desejávamos com uma boa precisão. 
Ao longo do trabalho, fomos deparando como surgimento de várias adversidades, estando estas 
associadas a erros cometidos da nossa parte, estando estes relacionados com a falta de prática e 
erros de precisão do hardware utilizado. 
Assim, denotamos que as aulas teóricas e práticas e a ajuda do docente revelaram-se bastante 
importantes, porque estas permitiram-nos ter o suporte necessário para a realização deste trabalho. 
Finalmente, através deste trabalho somos capazes de testar e compreender diversas utilizações 
sobre braços robóticos e como os integrar com o ser humano sempre com as devidas seguranças.