Introdução ao controle de robôs
Luiz Marcos
www.dca.ufrn.br/~lmarcos/courses/robotica
Cinemática x Dinâmica
Dinâmica x Atraso
Contínuo x Discreto
Tipos de Sistemas de Controle
Malha aberta
Malha fechada
Malha aberta
A entrada define o comportamento do
controlador, cérebro do sistema, e este
responde agindo no ambiente, sem
verificar depois se o nível da grandeza
física corresponde de fato à entrada;
Não há sensor para observar algum
eventual desvio, nem realimentação, para
corrigi-lo.
Exemplo
Uma fonte de alimentação regulada com
transistor é, na realidade, um sistema de
controle de malha aberta;
Se a corrente da carga variar, a tensão na
saída pode variar até algumas dezenas de
mV, devido à variação na tensão Vbe.
Transistor
Diagrama de blocos (Malha Aberta)
A entrada é o nível desejado da grandeza
controlada (comando ou programação). O
controlador avalia este sinal e envia um
sinal (que pode ser elétrico ou mecânico,
conforme o sistema) ao atuador, que é o
elemento que age no ambiente de modo a
alterar a grandeza.
Diagrama de blocos (M. Aberta)
CONTROLADOR
ATUADOR
Sistema de Malha Aberta
Grandeza não Automático
Aplicações
Os SC em malha aberta são usados onde
a freqüência ou a conseqüência dos
desvios não justificam a complexidade e o
custo maior dos em malha fechada.
Não são aplicados em robótica (a não ser
em casos onde não é necessário checar o
erro).
Malha fechada
É verificada a ocorrência de desvios
Sensor monitora saída, fornecendo um
sinal que retorna à entrada, formando
uma malha de realimentação.
A entrada e esta realimentação se juntam
num comparador, que combina ambos e
fornece um sinal de erro, diferença entre
os sinais, que orienta o controlador.
Exemplo simples
O operador de um reservatório verifica se o
nível máximo foi atingido através de uma régua
de nível, que é o sensor.
Sinal de erro, a diferença entre o nível máximo
(saída desejada) e o nível atual (saída real), é
analisado para abrir ou fechar o registro.
Operador é ao mesmo tempo o comparador, o
controlador e o atuador neste sistema
elementar.
Diagrama blocos (Malha Fechada)
Adicionar sensor ao SC de m. aberta;
Enviar sinal de erro ao bloco somador que
fornece um sinal efetivo ao controlador.
Este sinal é a entrada do controlador, que
o avalia e tenta corrigir o desvio captado
pelo sensor, através de um novo comando
ao atuador.
Diagrama de blocos (M. Fechada)
ENTRADA
SOMADOR
CONTROLADOR
SENSOR
ATUADOR
REALIMENTAÇÃO
Sistema de Malha Fechada
Grandeza Automática
SAÍDA
Aplicações
SC em malha fechada são mais precisos,
pois detectam e corrigem os desvios.
A maioria dos sistemas atuais, analógicos
ou digitais, é deste tipo.
Sistemas controle para robótica são
necessariamente desta categoria.
Controle
Sistema robótico: mede o seu próprio
estado e age (decisões autônomas)
Feedback Control: originou-se na Grécia
antiga.
Relógios de água: um grande tanque, um
orifício pequeno para medir a vazão, uma
válvula para regular a quantidade de água
no tanque (mantendo o nível, a pressão é
constante).
Redescobrindo os controladores
1600: Controle da temperatura num fogão
Variação do volume de mercúrio fecha e abre
a entrada de ar
1700: mesmo sistema utilizado para
chocar ovos
Final do século 16: mecanismo melhorado
com melhor sensibilidade. Primeiro
controlador comercial...
Sistema de Controle
Sinal de erro
Energia de entrada
Estado desejado
Sinal de feedback
Amplificador
Soma
s(t)
e(t)
y´(t)
Estado medido ou real
E(t)
Sensor
Robô ou
dispositivo
y(t)
Exemplo: seguidor de paredes
Material: um robo móvel equipado com
sensor infra-vermelho
Void calibrate(int goal); /*Calibra o sensor
definindo uma distância da parede*/
void main() {
calibrate(goal); left(100); right(100);
while (1) {
int wall = analog(LEFT_WALL);
if(wall<goal) {left(100); right(0);}
else {right(100); left(0); }
}
}
Gráficos (distância x tempo)
D=40
Distância x tempo
D=30
Virando mais suave
void main() {
}
calibrate(goal); left(100); right(100);
while (1) {
int wall = analog(LEFT_WALL);
if(wall<goal) {left(100); right(50);}
else {right(100); left(50); }
}
Distância x tempo
D=40
Sistema de Controle
(t)
Perturbação
s(t)
e(t)
u(t)
Sensor
y´(t)
Robô
y(t)
Motores
Controladores
• Liga-Desliga (on-off)
• Proporcional (P)
• Proporcional + Integral (PI)
• Proporcional + Derivativo (PD)
• Proporcional + Integral + Derivativo (PID)
Controle liga-desliga :
Compara sinal de entrada com realimentação
Se saída supera entrada, desliga o atuador;
se a realimentação for menor, liga o atuador.
Ex.: fornos elétricos e geladeiras:
Calefator ou compressor controlado por um termostato
(é um controlador liga-desliga).
Vantagens: simples, baixo custo
Desvantagens: contínua oscilação da saída, histerese,
não garante precisão e pode desgastar controlador e
atuador.
Mecanismo (roda)
0
Roda (massa grande)
Sensor
(encoder)
Engrenagens
Motor
Proporcional
Ganho é proporcional ao erro medido
Exemplo: controlar a posição de um motor
void main() {
}
int posit_goal=0;
encoder_posit=100; /*Var. compartilhada*/
while (1) {
power = posit_goal - encoder_posit;
motor(power);
}
Posição e potência x tempo
100
0
-100
Melhorando o Proporcional
Introdução de um fator multiplicativo faz ir mais
rápido ao ponto desejado
void main() {
int posit_goal=100;
encoder_posit=0;
while (1) {
power=p_gain*(posit_goal- encoder_posit);
motor(power);
}
}
Problema com ganhos altos: over-shoot, oscilações.
Potência total é desejada se longe do objetivo. Ganho
alto pode causar potência alta mesmo estando próximo.
Posição e potência x tempo
Ganho = 10
100
0
-100
Posição e potência x tempo
Ganho = 20
100
0
-100
Posição e potência x tempo
Ganho = 50
100
0
-100
Proporcional derivativo
Problema: momento faz ir além do ponto,
mesmo desligando o motor
Momento = massa x velocidade (diretamente
proporcional a velocidade)
Dobra velocidade => dobra momento).
Termo derivativo resolve overshooting e
oscilações
Proporcional derivativo
Introdução do term d_gain (velocidade)
void main() {
}
int posit_goal=0;
encoder_posit=100;
while (1) {
power=p_gain*(posit_goal- encoder_posit) +
d_gain*encoder_velocity;
motor(power);
}
Posição e potência x tempo
100
0
-100
Integral
Usa um integrador como controlador (um
circuito
que
executa
a
operação
matemática da integração).
Soma produtos dos valores instantâneos
de entrada por intervalos de tempo t.
Desde o instante inicial até o final
(período de integração).
Isto corresponde à área entre a curva da
grandeza e o eixo do tempo, num gráfico.
Integral (cont.)
Ex.: Se grandeza = G (const), integral
entre t1 = 0 e t2=j será igual a G t2 (ou
Gj) = área, no gráfico da grandeza, de um
retângulo naquele intervalo de tempo.
Um gráfico da integral de t1 a t2 é uma
reta desde 0 até Gj, pois a área (ou o
somatório) aumenta à medida que o
tempo passa.
Integral (cont)
Integrador torna o sistema lento
Resposta depende da acumulação do
erro na entrada
Leva a um erro de regime nulo (não é
necessário um sinal de entrada para haver
saída do controlador)
Acionamento do atuador após o período
transitório.
Assim o controle é muito preciso, embora
mais lento.
Posição e potência x tempo
100
0
-100
Hierarquia de controle (robô móvel)
Sensores
Externos
Planejamento
da Trajetória
Posição
Velocidade
Controlador
Sensor
interno
Motores
Sensor
interno
Níveis de controle
Obstáculo
3 níveis de controle:
controlador de velocidade
dos motores;
controlador de ângulo e
velocidade linear do robô;
desvio de obstáculos e
busca pelo alvo.
Alvo
Obstáculo
Controlador dos motores
SP1
-
u1
e1
PID
+
Motor 1
v1
SP2
+
-
v2
u2
e2
PID
Motor 2
Controlador de ângulo e velocidade
linear
SP1
+
Controlador
de Velocidade
Linear
+
e
+
Controlador
de
Ângulo
SP1
-
e1
+
SP
e
+
-
SP2
u1
PID
Motor 1
v1
Controlador
SP2
e2
+
-
PID
u2
Motor 2
v2
Cinemática do
Robô
X
Obstáculo
Desvio de obstáculos
Obstáculo
teta=180/pi*atan((S1*sin(pi/4)-S3*sin(pi/4))/(S2+S1*cos(pi/4)+S3*cos(pi/4)));
Busca do alvo
dx
dy
Alvo
e
d
Sensores
de distância
Obstáculo
Alvo
Decisão
Velocidade
Angulo e
velocidade linear
Velocidade dos
motores
Motores
Posição
(integração dos enconders)
Controle de alto nível
(Comportamento)
O relacionamento funcional dos
estímulos sensoriais com as
ações efetuadas sobre os
atuadores do robô
Ações devem ser executadas a
partir de um plano de ação e de
um modelo interno do ambiente
Tipos de controle
1) Reactive control
2) Deliberative control
3) Hybrid control
4) Behavior based control (sub-sumption)
Controle reativo
Não pense, reaja!
Ambiente imprevisível cheio de
obstáculos estáticos e dinâmicos
Restrição de tempo de execução da
tarefa
Desenvolvimento de sistemas onde as
ações dos robôs móveis são
determinadas pelas situações
imediatas do ambiente, detectadas
por
seus sensores.
Controle reativo (cont.)
Facilmente implementável
Não requer intermédio do cérebro
Apenas um mapeamento de sensores a
ações:
Construir um conjunto de regras
Exige pouco processamento on-line
Alta velocidade
Similar a reflexos em seres humanos
Muito usado em seres inferiores (siris)
Exemplo visto
Robô com emissores/sensores IR na
frente e duas rodas laterais:
Nenhum sensor satura: em frente
Satura direito: vire à esquerda
Satura esquerdo: vire à direita
Satura os dois: vire
aleatoriamente para um dos lados
Controle deliberativo
Planeje e pense bastante, então execute
ação!
Certas tarefas permitem uma melhor
análise do ambiente e planejamento
baseado em informações adquiridas
via sensores e dados conhecidos
Pode levar o robô a encontrar uma
boa solução para sua tarefa, mesmo
perdendo tempo de processamento
para tomar a decisão
Controle híbrido
Seja eficiente! Pense se der tempo!
Comportamento deliberativo pode
comprometer o tempo de resposta
de um robô
Idéia: unir os comportamentos
Caso seja necessário (e dê tempo
para) pensar, faça, caso contrário,
execute uma ação de forma reativa.
Arquitetura subsumption (MIT)
Baseado em comportamentos básicos
Comportamentos de mais alto nível são
definidos por vários de mais baixo nível
Processo markoviano (definir ação de alto
nível em função do estado perceptual
atual de um robô).
Uso de aprendizado ou de heurísticas para
definir políticas (Q-Learning, NN).