FACULDADE ASSIS GURGACZ HAMILTON JOSÉ DA SILVA SENA CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIONAL CASCAVEL 2011 FACULDADE ASSIS GURGACZ HAMILTON JOSÉ DA SILVA SENA CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIONAL Projeto de pesquisa apresentado ao Curso de Graduação em Engenharia de Controle e Automação da Faculdade Assis Gurgacz para elaboração do Trabalho de Conclusão de Curso. Professor Orientador: Arthur Schuler da Igreja. CASCAVEL 2011 1. TÍTULO Controle robótico referenciado por sistema de visão computacional 1.1. TEMA Controlar o robô didático ED-7220C referenciado por um sistema de visão computacional para reconhecimento e localização de objetos 1.2. DELIMITAÇÃO DO TEMA Possibilitar o controle do braço robótico didático ED-7220C através do software Matlab® sendo que a posição do robô será referenciada por um sistema de visão computacional utilizando o sensor Kinect®. 2. O PROBLEMA Atualmente a disciplina de robótica tem o objetivo de prover o conhecimento no desenvolvimento e análise de modelos de robôs industriais e a programação de robôs manipuladores, com esse intuito a Faculdade Assis Gurgacz dispõem em seu laboratório de um robô didático, porém esse robô didático desenvolvido pela empresa coreana ED-Laboratory fornece um software proprietário para controle, simulação e testes, que tem poucas opções de integração a outros meios de controle via software, impedindo assim a interação do robô a projetos criados em diversas outras disciplinas correlatas. Esse impendimento estende-se também a própria disciplina de robótica, onde o ensino da interação do robô com o ambiente, é de extrema importância, principalmente pela concepção de utilização de robôs, onde há a necessidade de ser flexível na atuação em ambientes dinâmicos de forma robusta e versátil mantendose operacional diante de mudanças em ambientes não estruturado. Outro problema é a falta de um ambiente didático para testes de visão computacional, onde geralmente o ensino fica restrito a simulações via software, impedindo assim, um modelo onde poderia potencializar a elaboração de trabalhos mais sofisticados na área robótica e no campo da visão computacional. 3. DELIMITAÇÃO DA PESQUISA Serão realizados estudos no âmbito de mapeamento, controle e atuação dos sistemas robóticos, a utilização do Matlab® para controle do robô didático, mapear o protocolo de comunicação da controladora do robô didático ED-7220C e efetuar o controle do robô didático via visão de maquina . 4. JUSTIFICATIVA Um ambiente de robótica didática pressupõe a existência de professor, aluno e ferramentas que propiciam a montagem, automação e controle de dispositivos mecânicos. Alunos e professores interagindo entre si e com essas ferramentas produzem novos conhecimentos [1]. Propiciando assim um ambiente de fomentação de linhas de pesquisa na área robótica. A robótica, segundo estudos realizados no Japão e EUA, deve ser uma das 10 linhas de pesquisa com mais trabalhos, a nível mundial, nas próximas décadas. O avanço tecnológico tem permitido a realização de cálculos computacionais necessários em tempo real, e este fato tem possibilitado que novas descobertas e aplicações possam ser feitas em sistemas de robótica, tornando essa área uma fonte quase que inesgotável de pesquisa [2]. Nesse contexto surge a necessidade de ambientes de testes e simulação onde as ferramentas propiciem potencializar o conhecimento e a difusão da pesquisa no âmbito da robótica, principalmente pelo fato de áreas como a da inteligência artificial, sistema de controles avançados, sensores e atuadores, controle de processo, programação, redes, microcontroladores, identificação de sistemas, entre outras, possam unir-se para como foi dito anteriormente propiciar trabalhos mais sofisticados. Para permitir a utilização desse trabalho para futuros projetos, serão disponibilizados comandos via MATLAB® para controle do robô, pois o controle atual é feito pelo software do fabricante do robô. Um outro ponto que justifica o desenvolvimento desse trabalho é o uso do Kinect® enquanto sensor (sendo este um sensor por sistema de visão computacional comercializado como controle para videogames pela empresa Microsoft), pois para referenciar um robô, são utilizados inúmeros sensores que em ambientes não estruturados podem não ser efetivos, e que o Kinect pelo sensoriamento de profundidade é um passo além dos sistemas de visão computacional que tem esta restrição. Com isso, o tema escolhido para esse trabalho, baseia-se na grande relevância tanto para o ambiente industrial como acadêmico em nossa atual conjuntura mundial. 5. OBJETIVOS DA PESQUISA 5.1. OBJETIVO GERAL Desenvolver um sistema que controle o robô didático ED-7220C através do software MATLAB® efetuando o reconhecimento de objetos para referenciamento do robô via Kinect®. 5.2. OBJETIVOS ESPECÍFICOS − Estabelecer a comunicação com o controlador do robô com o software MATLAB®; − Elaborar o controle de cinemática inversa do sistema; − Identificar e obter o posicionamento de objetos através de visão computacional; − Integrar o sistema de visão computacional com o controle do robô; − Futuramente integrar esse sistema de controle do robô referenciado pela visão computacional a bancadas e esteiras contidas nos laboratórios da FAG; 6. FUNDAMENTAÇÃO TEÓRICA 6.1. ROBOTICA 6.1.1. Robótica Industrial O termo robô foi originalmente utilizado em 1921 pelo dramaturgo tcheco Karen Capek, na peça teatral “Os Robôs Universais de Russum (R.U.R.)” como referência a um autômato que acaba rebelando-se contra o ser humano. Robô deriva da palavra "robota" de origem eslava, que significa "trabalho forçado". Na década de 40, o escritor Isaac Asimov tornou popular o conceito de robô como uma máquina de aparência humana não possuidora de sentimentos, onde seu comportamento seria definido a partir de programação feita por seres humanos, de forma a cumprir determinadas regras éticas de conduta. O termo robótica foi criado por Asimov para designar a ciência que se dedica ao estudo dos robôs e que se fundamenta pela observação de três leis básicas: – Um robô não pode fazer mal a um ser humano e nem consentir, permanecendo inoperante, que um ser humano se exponha a situação de perigo; – Um robô deve obedecer sempre às ordens de seres humanos, exceto em circunstâncias em que estas ordens entrem em conflito com a primeira lei; – Um robô deve proteger a sua própria existência, exceto em circunstâncias que entrem em conflito com a primeira e segunda leis [3]. Segundo a Robotic Industries Association (RIA), robô industrial é definido como um "manipulador multifuncional reprogramável projetado para movimentar materiais, partes, ferramentas ou peças especiais, através de diversos movimentos programados, para o desempenho de uma variedade de tarefas” [4]. Uma definição mais completa é apresentada pela norma ISO (International Organization for Standardization) 10218, como sendo: "uma máquina manipuladora com vários graus de liberdade controlada automaticamente, reprogramável, multifuncional, que pode ter base fixa ou móvel para utilização em aplicações de automação industrial"[3], conforme é mostrado na figura 1. Fonte: [7] Figura 1: Célula de trabalho robotizada Um robô industrial é formado pela integração dos seguintes componentes: Manipulador mecânico: refere-se ao aspecto mecânico e estrutural do robô. – Elos; – junta; – Sistema de transmissão; Atuadores: São componentes que convertem energia elétrica, hidráulica ou pneumática, em potência mecânica. – atuadores hidráulicos e pneumáticos; – atuadores eletromagnéticos; Sensores: Fornecem parâmetros sobre o comportamento do manipulador. Unidade de controle: Responsável pelo gerenciamento e monitoração dos parâmetros operacionais do robô. Unidade de potência: É responsável pelo fornecimento de potência necessária à movimentação dos atuadores. Efetuador: É o elemento de ligação entre o robô e o meio que o cerca. 6.1.2. Classificação dos robôs Os robôs industriais podem ser classificados de acordo com o numero de juntas, o tipo de controle, o tipo de acionamento, e a geometria. É usual classificar os robôs de acordo como o tipo de junta, ou, mais exatamente, pelas 3 juntas mais próximas da base do robô. Também pode ser classificados em relação ao espaço de trabalho, ao grau de rigidez, a extensão de controle sobre o curso do movimento e de acordo com as aplicações adequadas ou inadequadas a eles. – Robô de Coordenadas Cartesianas; – Robô de Coordenadas Cilíndricas; – Robô de Coordenadas Esféricas; – Robô SCARA; – Robô Paralelo; – E o robô Articulado ou Antropomórfico (caso de estudo desse trabalho); Na configuração antropomórfica, existem ao menos três juntas de rotação. O eixo de movimento da junta de rotação da base é ortogonal às outras duas juntas de rotação que são simétricas entre si. Este tipo de configuração é o que permite maior mobilidade a robôs. Seu volume de trabalho apresenta uma geometria mais complexa em relação as outras configurações[5]. Na Figura 2 é demostrado esse tipo de robô e a sua representação do volume de trabalho. Fonte: [6] Figura 2: Robô Articulado ou Antropomórfico com seu respectivo volume de trabalho. 6.1.3. Modelagem Cinemática Um manipulador mecânico consiste de elos, conectados por juntas prismáticas ou rotacionais. Cada par junta-elo constitui um grau de liberdade. Assim, para um manipulador com N graus de liberdade, tem-se N pares juntas-elos, onde o primeiro elo é a base de sustentação do robô (sistema de coordenadas inerciais fixado) e no seu último elo é incorporada a sua ferramenta de trabalho. O conhecimento completo das variáveis articulares de um robô q i , determina o posicionamento de sua ferramenta no sistema de coordenadas de trabalho. De um modo geral, os três primeiros graus de liberdade de um robô são responsáveis pelo posicionamento de sua ferramenta no espaço de tarefas e os restantes pela sua orientação. Na maioria das aplicações industriais, a programação de tarefas de robôs, é realizada por aprendizagem, consistindo no movimento individual de cada junta. Assim sendo, a programação de trajetórias de um robô torna-se muito fácil, não necessitando de um conhecimento do modelo, sendo a fase de aprendizagem basicamente uma operação de armazenamento de uma sequência de incrementos necessários para que o conjunto de variáveis articulares determine um posicionamento final X i , especificado a partir de um perfil de trajetórias fornecido (robô controlado a partir do sistema de coordenadas de juntas). Como um robô é controlado através de suas variáveis articulares, a realização do controle de posição em relação ao sistema de coordenadas cartesianas implicará no desenvolvimento de metodologias para transformação de coordenadas. A transformação de coordenadas articulares para cartesianas é normalmente realizada em tempo real, onde a partir do conjunto de variáveis articulares serão obtidas a posição e orientação de sua ferramenta[6]. A cinemática de robô manipulador pode ser dividida em dois tipos de cinemática a cinemática direta e a inversa. Fonte: [do Autor] Figura 3: Cinemática direta e inversa 6.1.4. Cinemática direta Na cinemática direta deseja-se obter a posição e velocidade do efetuador, para uma dada posição das articulações, ou seja, implementar a cinemática direta de um manipulador é determinar as relações que exprimem um ponto no espaço cartesiano, em função de um ponto no espaço das juntas. 6.1.5 Cinemática inversa Enquanto a cinemática direta resulta no desenvolvimento imediato das expressões do manipulador, a cinemática inversa procura determinar o conjunto de valores das juntas que se adequam a uma dada configuração do espaço operacional ou cartesiano. A cinemática inversa pode ser vista com o conjunto de processos para determinar as funções inversas do sistema das expressões da cinemática direta.[6] 6.1.6. Notação de Denavit-Hartenberg A evolução no tempo das coordenadas das juntas de um robô representa o modelo cinemático de um sistema articulado no espaço tridimensional. A notação de Denavit-Hartenberg (DH) é uma ferramenta utilizada para sistematizar a descrição cinemática de sistemas mecânicos articulados com N graus de liberdade[5]. 6.1.7. Visão de máquina Visão computacional é "O conjunto de métodos e técnicas através dos quais sistemas computacionais podem ser capazes de interpretar imagens. A interpretação de uma imagem pode ser definida em termos computacionais como a transformação de um conjunto de dados digitais representando uma imagem (um sinal mono-, bi-, tri- ou tetradimensional) em uma estrutura de dados descrevendo a semântica desses dados em um conjunto qualquer" [8]. Ou seja seria como fazer um sistema de computador "enxergar", uma imagem e transformá-la em dados computacionais. 7.1. KINECT® O dispositivo Kinect® é um hardware produzido pela Microsoft para utilização em seu console de videogame de última geração Xbox, ele possui uma câmera RGB (sistema de cores aditivas formado por Vermelho (Red), Verde (Green) e Azul (Blue)) que faz a captura de cores, uma câmera infravermelho e um projetor infravermelho que faz a captura de profundidade 3D, possui um motor para rotação e inclinação e microfones para a captura de som. Na figura 9 é demostrado a foto do Kinect com seus respectivos sensores. Fonte: [9] Figura 4: Microsoft Kinect® O kinect utiliza-se da tecnologia de luz estruturada (structured light) para fazer a geração da imagem 3D e uma câmera de infravermelho para efetuar a captura. No trabalho proposto será utilizado o projetor de infravermelho e as duas câmeras do mesmo, onde a câmera de leitura infravermelho será responsável por gerar a informação de profundidade do objeto e a câmera RGB será responsável pela identificação da geometria plana do objeto a ser localizado. 9. METODOLOGIA Esse trabalho será realizado a partir de estudos do protocolo de comunicação do robô didático ED-7220C (Figura 5), estudo e desenvolvimento da modelagem do robô, estudo das toolbox Robotics e Image Processing do Matlab para controle e identificação dos objetos respectivamente e a utilização do sensor Kinect como interface de captura de imagem para referenciamento do robô. Fonte: [10] Figura 5: A esquerda o controlador MK-4 e a direita o robô ED-7220C 9.1 Materiais – Software Free Serial Port® Monitor para analise de dados RS232 – MATLAB® – Robotics toolbox – Toolbox Image Processing – Kinect® – Robô didático ED-7220C – Unidade de controle ED-MK4 9.2 Métodos Inicialmente será efetuado a identificação dos comandos de controle do robô didático ED-7220C via o software de analise de dados seriais Free Serial Port Monitor, onde os mesmos serão utilizados como meios de atuação e captação de informações do status do robô. Posteriormente será efetuado a modelagem do robô, com a determinação da sua cinemática direta via parâmetros de Daniv-Handenberg. O próximo passo será a determinação da cinemática inversa via toolbox robotics para geração de trajetória, seguindo da criação de um algoritmo que será responsável pela geração on-line da trajetória, unindo a geração da trajetória com os comandos interpretados pelo robô. Para geração do sistema de identificação do objeto, que será feito via toolbox Image Processing, será utilizado técnicas de processamento de imagens e de localização de objetos em um espaço cartesiano. Com os algoritmos de identificação do objeto e geração de trajetória criados, será efetuado o modo de instalação e calibração do sensor Kinect para atuar de forma online com o robô, possibilitando assim o resultado requerido para o final desse projeto. Após o complemento das tarefas acima, será montando um ambiente com objetos a serem identificados por formato ou cor, essa definição será feita via GUI (Graphical User Interface traduzido com interface gráfica do usuário) do MATLAB, onde o robô será capaz de identificar a localização do objeto e transportá-lo para algum outro lugar especifico. Na figura 6 segue o fluxo de funcionamento do sistema proposto. Fonte: [do Autor] Figura 6: Fluxograma de funcionamento do sistema 10. CRONOGRAMA ATIVIDADES Efetuar engenharia reversa da comunicação do ED-7220C Fev. Mar. Abr. Mai. Jun. Jul. Ago. Set. Out. Nov. 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 5h 10h Criar script de envio de comandos para o robô ED-7220C 10h 10h 10h Configuração e testes no Kinect 10h 5h 5h 5h 10h 10h Mapear volume de trabalho do robô ED-7220C para inserção no código principal 5h 10h Criar um simulador via toolbox robotics para testes sem o robô 10h 15h 10h 15h 10h 10h 10h 10h 20h Complementar a fundamentação teórica 10h 10h 10h Finalizar a parte escrita 10h 15h 10h Montagem da cinemática inversa para mapeamento de trajetória 10h Criar código de interação do kinect com o toolbox image processing Criar um código principal com todas as funções integradas 5h Revisão Metodológica 5h Redação Final 5h Entrega do Trabalho 1h Defesa em Banca 1h 11. REFERENCIAS [1]http://seer.uscs.edu.br/index.php/revista_informatica_aplicada/article/download/99 1/805. Disponível em 16-05-2011 [2] http://www.comciencia.br/reportagens/2005/10/09.shtml.Disponível em 30-052011 [3] ROMANO, Victor Ferreira. Robótica Industrial – Aplicações na indústria de manufatura e de processos. São Paulo, 2002. [4] RIVIN, E., Mechanical Design of Robots, 1 ed., McGraw-Hill Inc., New York, 1988. [5] ROSÁRIO, João Maurício. Princípios de Mecatrônica. São Paulo: Prentice Hall, 2005. [6] SANTOS, V. M. F. Robótica Industrial: Apontamentos teóricos, exercícios para aulas práticas e problemas de exames resolvidos, Universidade de Aveiro, 2003-2004. Disponível em: http://www.mec.ua.pt/. Acesso em: 25-03-2011 [7] http://eficienciavital.files.wordpress.com/2011/05/industrial_robots.jpg. Disponível em 05-06-2011 [8] http://www.inf.ufsc.br/~visao/#Introdu%C3%A7%C3%A3o. Disponível em 05-062011 [9]http://blog.andarilhovirtual.com.br/2011/05/dispositivo-microsoft-kinect-e-seus.html. Disponível em 06-06-11 [10]http://www.adinstruments.es/5-JOINT-Arm-Robot-Trainer-ED7220C/en. Disponível em 06-06-11