Manipuladores Robóticos

Aula 1: Introdução ao curso


Vinicius Mariano Gonçalves

Tópicos abordados

  • Informações iniciais

  • Escopo da disciplina

  • Aplicações

  • Conceitos básicos

  • Ementa da disciplina

  • Robótica na UFMG

  • Mercado de trabalho

  • O simulador UAIBot

  • Trabalho prático


Algumas informações

Prof: Vinicius Mariano Gonçalves

Sala: 2120 (DEE)

E-mail: vinicius.marianog@gmail.com

Pontos:

  • Duas provas de 20 pontos cada.
  • 40 pontos na primeira parte do trabalho prático.
  • 20 pontos na apresentação do trabalho prático.


Livro Texto

Robotics, Modelling, Planning and Control

Bruno Siciliano

Lorenzo Sciavicco

Luigi Villani

Giuseppe Oriolo

Escopo da disciplina

Classificação por tipo de movimento:

Base fixa
Pernas
Rodas
Chacoalhando

Escopo da disciplina

Nesta disciplina, nosso foco são os robôs manipuladores:

  • Base fixa, "soldada" no chão.
  • Conjunto de elos (links) rígidos conectados por juntas que movem o robô.
  • Conjunto de motores movem as juntas.
  • Efetuador interage com o ambiente.


Entretanto, a maioria dos conceitos apresentados nesta disciplina são aplicáveis em robótica, no geral.

Estamos interessados na modelagem matemática desses robôs e no seu controle.

Aplicações


Aplicações

Solda Robótica

Aplicações

Setor Automotivo

Aplicações

Setor Farmacêtico

Aplicações

Cirurgias

Conceitos básicos


Conceitos básicos

Tipos de juntas

revoluta (ou rotativa)
prismática (ou linear)

Há outras (esférica, cilíndrica), mas essas são as básicas.

Conceitos básicos

Graus de Liberdade (Degrees of Freedom)

Número de juntas rotativas e lineares independentes:
2 rotativas + 1 linear = 3 graus
6 rotativas = 6 graus

Conceitos básicos

Graus de Liberdade (Degrees of Freedom)

Restrições podem reduzir os graus de liberdade.

O robô ao lado, que normalmente tem 6 graus de liberdade, está restrito a ficar com seu efetuador "preso" no chão.

Quatro restrições:

  • Posiçao z (altura) no efetuador fixa;
  • Rotação em x no efetuador está fixa;
  • Rotação em y no efetuador está fixa;
  • Rotação em z no efetuador está fixa.

6 juntas - 4 restrições = 2 graus de liberdade.

Conceitos básicos

Graus de Liberdade (Degrees of Freedom)

No exemplo anterior, a restrição não erá "física", no sentido que a imposição de que o robo tenha o efetuador grudado no chão foi imposta pelo programador.

Em alguns casos, a restrição é estrutural do robô. Veja a Plataforma de Stewart ao lado.

Cada um dos "braços" tem 1 junta prismática, 2 rotativas (na ponta inferior) e 3 rotativas (na junta superior);

Entretanto, temos 30 restrições, e portanto 6 x 6 - 30= 6 graus de liberdade.

Não trataremos esse tipo de robô, em que o número de graus de liberdade não é o número de juntas ("cadeia fechada"), neste curso.

Plataforma de Stewart

Conceitos básicos

Área de Trabalho (Workspace)

É o conjunto de pontos no espaço tridimensional que o efetuador consegue alcançar:

Conceitos básicos

Configurações clássicas de robôs

Cartesiano: três juntas lineares.

As três juntas são ortogonais.

A área de trabalho é uma caixa.

Muito simples de modelar/controlar.

Não é possível controlar a orientação do efetuador.

Muito utilizado em impressão 3D, por exemplo.

Conceitos básicos

Configurações clássicas de robôs

Cilíndrico: duas juntas lineares e uma rotativa.

Rapidez e precisão boa no controle (grosso modo: juntas rotativas são mais rápidas que lineares).

A área de trabalho é um cilindro.

Utilizado em tarefas de pick and place.

Conceitos básicos

Configurações clássicas de robôs

SCARA (Selective Compliance Articulated Robot Arm): duas juntas rotativas e uma linear.

Muito rápido (mais que o cilíndrico).

A área de trabalho é um cilindro.

Compliance ("Compliança") é a capacidade de um sistema de ser flexível e se adaptar à força que nele age. Os robôs SCARA têm uma leve compliança nos eixos x e y (mas não no z), permitindo que suas juntas rotativas se movam um pouco reagindo a uma força. De certa forma, é o oposto de rigidez.

Usado em tarefas que exigem a aplicação de uma força (ex: inserir uma peça dentro de outra).

Ementa da disciplina


Ementa da disciplina

  • Descrição espacial

  • Cinemática direta e inversa

  • Cinemática diferencial

  • Controle cinemático

  • Dinâmica de sistemas

  • Controle dinâmico

  • ROS


Ementa da disciplina

Descrição espacial

Objetivo: descrever o movimento do robô.

Nossos manipuladores são formados por corpos rígidos (os elos) conectados sequencialmente. Descrevendo o movimento deles, descrevemos o movimento do robô.

Corpos rígidos são objetos que não podem ser deformados, quebrados ou grudados.

Como descrever o movimento desses objetos?

No ensino médio, aprendemos a fazer a descrição de movimento de uma partícula no espaço tridimensional.

Para isso, dado um referencial \(\mathcal{F}_0\), fornecemos a todo instante de tempo \(t\) as coordenadas \(x(t)\), \(y(t)\) e \(z(t)\) da partícula em \(\mathcal{F}_0\).

Note que em uma partícula a rotação é irrelevante (suas dimensões são desprezíveis, ou seja, não tem volume).

O movimento de corpos rígidos pode ser descrito "grudando" um referencial no objeto e descrevendo o movimento (translação + rotação) desse referencial. Será necessário fornecer mais informação que \(x(t)\), \(y(t)\) e \(z(t)\).

Posição + orientação = pose do objeto.

Ementa da disciplina

Cinemática direta e inversa

Objetivo: descrever o movimento do efetuador do robô, um corpo rígido.

Como o único movimento do robô é utilizando suas juntas, há de existir um mapeamento matemático entre a posição atual das juntas (variáveis no tempo) e os parâmetros estruturais do robô (fixos) na descrição matemática da pose do efetuador com relação a um referencial \(\mathcal{F}_0\).

Seja \(q\) um vetor com a posição de todas as juntas e \(T\) a descrição do efetuador em \(\mathcal{F}_0\), então deve existir uma função matemática \(f\) tal que \(T = f(q)\).

A função \(f\) é chamada de cinemática direta do efetuador;

Permite calcular onde o efetuador está em função das juntas móveis, cuja posição está no vetor \(q\).

A cinemática inversa resolve o problema contrário: dado uma pose \(T\), qual é o valor das juntas \(q\) tal que \(T=f(q)\)?

Os dois problemas são importantes, pois controlaremos a posição das juntas \(q\) objetivando fazer com que o efetuador alcance uma determinada pose \(T\). As duas funções fazem as duas ligações possíveis entre essas duas quantias.

Ementa da disciplina

Cinemática diferencial

Objetivo: descrever o movimento do efetuador do robô, um corpo rígido.

As cinemáticas diretas e inversas mapeiam posições (das juntas) em "posições" do efetuador (no caso de um corpo rígido, por "posição" entenda "pose").

Em controle, isso não é o suficiente. Precisamos relacionar velocidades também.

Um corpo rígido tem dois vetores velocidades, ambos vetores tridimensionais:

  • A velocidade linear, \(v\)
  • A velocidade angular, \(\omega\)

O objetivo da cinemática diferencial é o seguinte: dado que em um instante de tempo a posição das juntas é \(q\) e a velocidade instantânea das juntas é \(\dot{q}\), determine o valor de \(v\) e \(w\) naquele mesmo instante de tempo.

Portanto, existem funções \(g_v\) e \(g_{\omega}\) tal que \(v=g_v(q,\dot{q})\) e \(\omega=g_{\omega}(q,\dot{q})\).

Ementa da disciplina

Controle cinemático

Objetivo: controlar as juntas do robô para atingir uma determinada pose no efetuador.

Aqui faremos uma hipótese (muito razoável) sobre o robô: que ele tem uma interface de programação que nos permite enviar, a cada ciclo de controle, a velocidade de cada junta desejada para o robô, aqui chamada de \(u\).

Assumimos que ele segue perfeitamente esse comando enviado. Portanto, consideramos um sistema de controle em que a variável manipulada \(u\) é a velocidade da juntas desejada e a variável de processo \(q\) é a posição das juntas. O modelo que relaciona as duas é $$\dot{q} = u.$$

O objetivo então é, dada uma pose desejada para o efetuador \(T_{des}\), criar um controlador (algoritmo) utilizando a posição das juntas atual \(q\) (portanto em malha fechada) que garanta que o efetuador sairá da sua pose inicial (qualquer seja ela) e chegue na pose desejada:

$$u = h(q)$$

É chamado de controle cinemático pois abstrai a dinâmica do sistema, isso é, as forças/torques que agem no robô, e as massas/momentos de inércia envolvidas.

O controlador usa a cinemática direta e a cinemática diferencial para calcular a ação de controle.

Controle, no geral, não linear pois a função \(h(q)\) é, no geral, não linear.

Ementa da disciplina

Dinâmica de sistemas

Objetivo: controlar as juntas do robô para atingir uma determinada pose no efetuador, mas agora sem considerar que o robô tem uma interface de controle de alto nível de velocidade. Atuaremos diretamente no torque dos motores que movem as juntas.

Portanto, agora não mais estamos falando de cinemática, mas sim de dinâmica, uma vez que as forças/torques que agem no robô e as massas/momentos de inércia de seus corpos rígidos são relevantes.


Temos portanto que aprender a escrever as equações de dinâmica do sistema, ou seja, uma equação diferencial que relaciona a evolução da posição e a velocidade de todas as partículas do robô dados os parâmetros do sistema (como as massas e momentos de inércia) com as forças (que podem ser variáveis).

Como o movimento de todas as partículas do robô é uma consequência somente ao movimento das juntas (pois são corpos rígidos) e assumindo que a única força que age no sistema são os torques em cada motor, \(\tau\), desejamos obter a equação diferencial $$\ddot{q} = F(q,\dot{q},\tau)$$ que relaciona essas quantias.


Aplicar as Leis de Newton em cada uma das (infinitas) partículas que formam o robô não é factível. Felizmente, há várias maneiras de contornar esse problema...

Ementa da disciplina

Controle dinâmico

Objetivo: controlar as juntas do robô para atingir uma determinada pose no efetuador, mas agora sem considerar que o robô tem uma interface de controle de alto nível de velocidade. Atuaremos diretamente no torque dos motores que movem as juntas.

Utilizando o modelo dinâmico do robô, \(\ddot{q}=F(q,\dot{q})\), podemos projetar uma lei de controle $$\tau = h(q, \dot{q})$$ utilizando a posição e a velocidade das juntas para alcançar uma pose desejada \(T_{des}\).

Aqui assumimos que as únicas forças que agem no robô vêm dos motores, e portanto são completamente controláveis. Portanto, não haverá força externa (como contato do robô com o ambiente).

Uma das maneiras de projetar o controle dinâmico é começando a partir do controle cinemático.

Controle, no geral, não linear pois a função \(h(q,\dot{q})\) é, no geral, não linear.

Q: Qual a vantagem do controle dinâmico sobre o cinemático?
R: Com ele podemos implementar certos tipos de tarefas que não seriam possíveis usando controle cinemático. Em especial, ele serve como base para o controle de força (que não veremos neste curso), onde consideramos forças externas agindo no robô. Tal controle é necessário quando temos tarefas em que o robô deve fazer uma força controlada no ambiente.

Ementa da disciplina

ROS

ROS (Robotic Operating System): é um software amplamente utilizado na academia e a indústria para intermediar a comunicação entre códigos de controle (códigos em C++, Python, etc...) e os robôs;

Permite a reutilização do código em robôs diferentes, pois abstrai detalhes de comunicação específicos de cada robô (ou seja, comunica com os drivers de cada robô).

É similar ao conceito de OPC em automação.

Veremos noções introdutórias desse software nesta disciplina.

https://www.ros.org/.



Robótica na UFMG


Robótica na UFMG

Vários grupos, na Ciência da Computação, Engenharia Elétrica/Eletrônica e Engenharia Mecânica.

Robótica na UFMG

CORO

Um dos pioneiros na robótica da Escola de Engenharia foi o professor Guilherme Pereira, que fundou o laboratório CORO em 2004.

Desde 2018 é professor da West Virginia University.


Robótica na UFMG

MACRO

Atualmente, temos o grupo MACRO, formado por docentes do depto. de elétrica e eletrônica.

Formado por 6 docentes e vários discentes.

http://macro.ppgee.ufmg.br/

Eu (Vinicius) sou um dos membros, trabalhando com controle baseado em otimização aplicado a diversos tipos de robôs: manipuladores, manipuladores móveis, humanoides, drones, aviões autônomos.

Robótica na UFMG

Membros do MACRO


Armando Alves Neto (DELT)
Controle, robótica, computação, modelagem, eletrônica e visão computacional.

Guilherme Raffo (DELT)
Veículos autônomos, sistemas com atraso, controle não-linear, controle robusto e sistemas subatuados.

Gustavo Medeiros (DEE)
Automação e robótica aplicada à monitoração ambiental, agricultura, mineração e sistemas de produção de óleo e gás.

Luciano Pimenta (DELT)
Robótica cooperativa, robótica móvel, robótica aérea, planejamento de movimento, teoria de controle e coordenação de sistemas multi-agentes.

Janier Garcia (DELT)
Sistemas embarcados. Sistemas para processamento e execução de tarefas usando fusão e sensoriamento.

Vinicius Gonçalves (DEE)
Controle de movimento aplicados a vários tipos de robôs (manipuladores, humanóides, drones). Intersecção entre robótica e otimização.

Robótica na UFMG

Equipe XQUAD

Equipe de competição de quadrotores da UFMG;

Formado primariamente por alunos de pós-graduação em Engenharia Elétrica.

Cooperação entre CORO e VERLAB.

Em 2019, sétimo lugar na AlphaPilot Challenge. Foi o unico time da América Latina classificado.

https://xquadufmg.com/

Robótica na UFMG

Cooperação Internacional

Cooperação de pesquisa com diversas universidades ao redor do mundo:

Mercado de trabalho


Mercado de Trabalho

No Brasil

O mercado de trabalho no Brasil é, infelizmente, ainda incipiente e limitado.

Entre outros fatores, isso é consequência dos preços elevados dos robôs (um manipulador pode variar entre U$ 50.000 e U$ 100.000 dólares!!!).

Grande parte dos roboticistas no Brasil estão em universidades.

Mercado de Trabalho

No Brasil

Apesar disso, existem algumas iniciativas e a expectativa é que o mercado cresça bastante, sobretudo com a redução do preço dos robôs.

Mercado de Trabalho

No Mundo

Considerando o mercado mundial, a situação melhora significativamente.

Ainda é um trabalho muito especializado, de modo que uma parte relevante dos profissionais de robótica tem mestrado ou doutorado.

Muitas oportunidades de mestrado e doutorado no exterior.

Veja a principal lista de robótica do mundo: https://www.lists.kit.edu/sympa/arc/robotics-worldwide/2022-03/.

Mercado de Trabalho

EMPRESAS DESENVOLVEDORAS

Principais desenvolvedoras de robôs manipuladores industriais:

UAIBot


UAIBot

UAIBot é um simulador de robótica open-source desenvolvido por mim (Vinicius), meu aluno Johnata Brayan e outros colaboradores.

A parte de código é feita em Python, e a visualização das simulações pode ser feita no próprio navegador, sem necessidade de instalar nenhum programa.

As animações geradas são arquivos .html que podem ser vistos em qualquer navegador.

Usaremos esse simulador na disciplina.

Github do projeto:
https://github.com/viniciusmgn/uaibot_vinicius .

UAIBot

Instalação

Há várias maneiras de usar\instalar o UAIBot:

Usando uma IDE (como o Pycharm), digite no terminal:


>>git clone https://github.com/viniciusmgn/uaibot_vinicius.git
>>pip install uaibot_vinicius/
                        

Após a instação, teste rodando uma simulação já instalada no pacote. Para isso, rode o seguinte código em Python:


import uaibot as ub

sim = ub.Demo.control_demo_1()
sim.save('C:\\','teste_controle_1')
                        
Vá na pasta (C:\) e abra o arquivo HTML criado para ver a simulação.

UAIBot

GOOGLE COLAB

Se não quiser usar IDEs no Desktop, você pode usar a plataforma colaborativa online Google Colab, deixando tudo no navegador.

No Google Colab, rode o comando para instalar o UAIBot


!git clone https://github.com/viniciusmgn/uaibot_vinicius.git
!pip install uaibot_vinicius/
                        

Note que isso precisa ser feito sempre que você reiniciar o Google Colab.

No Google Colab não é necessário usar a função "save". As simulações já são mostradas no próprio navegador. Ao rodar o código abaixo, a simulação já será mostrada automaticamente:


import uaibot as ub

sim = ub.Demo.control_demo_1()
                        

UAIBot

DEMONSTRAÇÃO

Escrevendo em um quadro/solda em superfície plana (Demo.control_demo_1( ))

UAIBot

DEMONSTRAÇÃO

Dois robôs cooperando para carregar uma placa (Demo.control_demo_2( )):

UAIBot

DEMONSTRAÇÃO

Manipulação em ambientes restritos (Demo.control_demo_3( )):

Trabalho Prático


Trabalho Prático

Para ao trabalho final da disciplina, vocês devem implementar no simulador UAIBot uma aplicação de robótica.

Vocês devem escolher o robô adequado para a aplicação. A implementação deve observar limitações práticas do robô como limites de juntas, velocidade e torque nos motores, etc.

Os manuais dos robôs implementados no UAIBot podem ser encontrados aqui.

Há muitas ideias interessantes de aplicação aqui.

Mais informações (datas, instruções, etc...) em breve, no Minha UFMG.