Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket...
-
Upload
nguyenxuyen -
Category
Documents
-
view
214 -
download
0
Transcript of Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket...
1
Arquiteturas para Acionamento e Arquiteturas para Acionamento e Controle em Tempo Real de RobôsControle em Tempo Real de Robôs
Walter Fetter LagesUniversidade Federal do Rio Grande do Sul
Departamento de Engenharia Elé[email protected]
2
IntroduçãoIntrodução
• Robôs
♦ Manipuladores
♦ Móveis
• Arquiteturas
♦ Hardware
♦ Software
♦ Controle
3
Acionamento e ControleAcionamento e Controle
• Acionamento diz respeito aos circuitos utilizados para acionar os atuadores do robô
• Controle é a regra segundo a qual o acionamento é utilizado para atingir−se o objetivo
4
ControleControle
• Controle em malha−aberta
♦ Não existe realimentação a partir de sensores
♦ Decisões de controle em função de fatores externos, tipicamente o tempo.
• Controle em malha−fechada
♦ Existe realimentação
♦ O sinal de controle é determinado a partir dos sinais obtidos de sensores
5
Controle em Malha FechadaControle em Malha Fechada
6
Arquitetura de Hardware TípicaArquitetura de Hardware Típica
7
AtuadorAtuador
• Tipicamente o atuador é um motor D.C. com imã permanente
♦ Tensões típicas entre 12V e 56V
♦ Correntes típicas entre 500mA e 20A
• Algumas garras possuem atuação por solenoides ou por ar comprimido
8
TransmissãoTransmissão
• Caixa de engrenagens
♦ Problemas de folgas e sensíveis a vibrações
• Polias
• Alavancas
• Fusos
• Harmonic−drive
9
Harmonic DriveHarmonic Drive
10
Harmonic DriveHarmonic Drive
• Redução de 2/nf em uma única etapa
11
Acionamento do MotorAcionamento do Motor
• Conversor D/A + Amplificador Linear Excelente linearidade Alta dissipação de potência
• Conversor D/A + Amplificador Chaveado Baixa dissipação de potência Pouca imunidade à ruído
• Acionamento por PWM
♦ Baixa dissipação de potência
♦ Boa imunidade à ruído
12
Conversor D/A + Amplificador LinearConversor D/A + Amplificador Linear
• Arquitetura clássica
• Utiliza etapa de potência em push−pull
• Transistores de saída operam na região linear
13
Conversor D/A + Amplificador Conversor D/A + Amplificador ChaveadoChaveado
• Substitui o amplificador linear por um amplificador classe G
• O sinal analógico é modulado em PWM e aplicado à ponte H
14
Pulse Width ModulationPulse Width Modulation
15
Modulador PWM AnalógicoModulador PWM Analógico
16
Acionamento por PWM DigitalAcionamento por PWM Digital
• Acionamento totalmente digital
• Freqüência do PWM pode ser programada
17
Charge PumpCharge Pump
18
ResolversResolvers
• Sinal de excitação de 400Hz
• V1= Vsen(wt)senA
• V2= Vsen(wt)cosA
• Processamento
♦ por demodulação
♦ Por amostragem
19
Demodulação do ResolverDemodulação do Resolver
20
Encoder Óptico AbsolutoEncoder Óptico Absoluto
• Não é prático para resoluções elevadas
• Erros não são cumulativos
• Deve ser sempre utilizada codificação em Gray
21
Encoder Óptico IncrementalEncoder Óptico Incremental
• Permite altas resoluções
• Requer sensor de índice
• Decodificação em quadratura permite multiplicar por 4 a resolução do disco
• Contagem e decodificação deve ser feita por hardware
22
Decodificação em QuadraturaDecodificação em Quadratura
23
Relembrando...Relembrando...
• Computador
♦ PC
♦ DSP
♦ Microcontrolador
♦ Diversos processadores
• Outros dispositivos
♦ Freio
♦ Fim−de−curso
24
Arquitetura de Hardware do TwilArquitetura de Hardware do Twil
25
Amostragem de Encoder e BússolaAmostragem de Encoder e Bússola
26
Problemas de ConcorrênciaProblemas de Concorrência
• Em sistemas com diversos sensores e atuadores geralmente ocorrem problemas de concorrência
♦ Os diversos dispositivos possuem exigências de temporização difícieis de serem abordadas de forma empírica
♦ Torna−se necessário o uso de um sistema operacional multitarefa e que opere em tempo−real
Permite tratar cada dispositivo de forma independente
♦ A quantidade de dispositivos força a utilização de uma arquitetura adequada de Software
27
Arquitetura de Software do TwilArquitetura de Software do Twil
• O software executa no RTAI no modo LXRT
♦ Cada dispositivo é tratado por um trhead
• A biblioteca libtwil.a suporta as operações que podem ser realizadas pelo usuário.
• A biblioteca libmdrc.a suporta as operações possíveis no hardware e é utilizada pela libtwil.a
• O driver mdrc.o é utilizado pela libmdrc.a e acessa diretamente o hardware
28
Classe TWIL_DRIVERClasse TWIL_DRIVER
Class TWIL_DRIVER
{
public:
MOTOR_DRIVER rmotor;
MOTOR_DRIVER lmotor;
STEP_MOTOR pmotor;
TACHO rtacho;
TACHO ltacho;
SONAR tsonar;
SONAR bsonar;
COMPASS compass;
TWIL_DRIVER(void);
~TWIL_DRIVER(void);
void on(void);
void off(void);
};
29
Classe MOTOR_DRIVERClasse MOTOR_DRIVER
class MOTOR_DRIVER
{
double volt;
PWM *pwm;
public:
MOTOR_DRIVER(int number,double voltage,double sw_freq=SW_FREQ);
~MOTOR_DRIVER(void);
void on(void);
void off(void);
double operator=(double voltage);
};
30
Classe PWMClasse PWM
class PWM
{
int dev;
public:
PWM(int number,double sw_freq=SW_FREQ);
~PWM(void);
unsigned int operator=(double dutycicle);
void on(void);
void off(void);
void freq(double frequency);
double get_freq(void);
class bad_pwm { };
};
31
Implementação Classe PWMImplementação Classe PWM
PWM::PWM(int number,double sw_freq)
{
switch(number)
{
case 0:
{
dev=open("/dev/pwm0",
O_WRONLY | O_SYNC);
freq(sw_freq);
break;
}
•
case 1:
{
dev=open("/dev/pwm1",
O_WRONLY | O_SYNC);
freq(sw_freq);
break;
}
default: throw bad_pwm();
}
if(dev==−1) throw bad_pwm();
}
32
Implementação Classe PWMImplementação Classe PWM
PWM::~PWM(void)
{
close(dev);
}
void PWM::on(void){
ioctl(dev,PWM_ON);
}
void PWM::off(void){
ioctl(dev,PWM_OFF);
}
void PWM::freq(double f)
{
int max=REF_FREQ/f;
ioctl(dev,PWM_FREQ,max);
}
33
Driver mdr.oDriver mdr.o
static int pwm_open(struct inode *inode,struct file *file)
{
int counter;
int base=pwm_base(inode,&counter);
outb((unsigned char) ((counter << 6) | ONE_SHOT_BIN),base+CTRL8254);
outb((unsigned char) (max_count/2),base+counter);
outb((unsigned char)((max_count/2) >> 8),base+counter);
return 0;
}
34
Driver mdrc.oDriver mdrc.o
static int pwm_release(struct inode *inode,struct file *file)
{
int counter;
int base=pwm_base(inode,
&counter);
outb((unsigned char) (max_count/2),
base+counter);
outb((unsigned char) ((max_count/2) >> 8), base+counter);
return 0;
}
35
Driver mdrc.oDriver mdrc.o
static int pwm_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg)
{
int nbr=MINOR(inode−> i_rdev)−PWM0_MINOR;
switch(cmd)
{
♦ case PWM_ON:
{
unsigned char olddata=inpb(baseadd);
outb(olddata & (~(0x01 << nbr)),baseadd);
break;}
default: return −EINVAL;
}
return 0;
}
36
Encoder e Bússola SincronizadosEncoder e Bússola Sincronizados
37
Architetura de Hardware do JanusArchitetura de Hardware do Janus
• 2 braços e cabeça de visão stereo
♦ 8 juntas/braço
• A mesma arquitetura foi utilizada para fazer retrofitting de um ASEA IRB6
38
Arquitetura de Hardware do JanusArquitetura de Hardware do Janus
39
Características da ArquiteturaCaracterísticas da Arquitetura
• CAN utilizado para dados em tempo−real
• Ethernet utilizada para dados de supervisão
• Interface como usuário executa em um PC
• A função das AIC é flexível
♦ Deve ler os sensores e acionar o motor Pode funcionar como um controlador local de juntas (PID) Pode funcionar como um processador de I/O
40
Actuator Interface Card (AIC)Actuator Interface Card (AIC)
41
AIC Processor ModuleAIC Processor Module
• Módulo TINI da Dallas Semiconductor
♦ Processador
♦ Real−time clock
♦ Interfaces CAN Ethernet RS −232
♦ SIMM72
♦ Pode ser substituída mantendo−se o módulo de interface
42
AIC Interface ModuleAIC Interface Module
• SIMM72 socket for processor module
♦ PWM with programmable frequency
♦ MOSFET H−bridge
♦ Quadrature decoder for encoder Mutiplies by 4 the encoder resolution Include a 16 bit counter to store pulses counts between
processor readings
♦ Sync−switch interface
♦ Brakes interface
43
AICAIC
44
SoftwareSoftware
• AIC executa um sistema operacional multitasking
♦ Gerenciamento de memória e I/O
♦ Sisema de arquivos
♦ Pilha TCP/IP
♦ Máquina virtual Java
♦ Shell Unix−like
♦ Servidores de TELNET, FTP e console serial
♦ Cliente DHCP
45
Pacote Java AICPacote Java AIC
• br/ufrgs/eletro/AIC
♦ Classes para modelar os dispositivos conectados à AIC PWM, Motor, Encoder, Brake, Index Métodos públicos para suportar as operações possíveis
• Brake.apply(), Brake.release()
• Motor.on(), Motor.off(), Motor.set(double voltage)
♦ A classe Host abstrai a comunicação HostCAN, HostUDP
♦ Métodos críticos implementados em Assembly com métodos nativos
46
Daemon AICDaemon AIC
• Usa o pacote AIC e implementa os serviços da AIC
♦ Controlador local de junta
♦ Processador de I/O
• Carregado na AIC por FTP
• Disparado pelos scripts de inicialização
• AIC possui memória não volátil, portanto o daemon está pronto assim que a a AIC é ligada
47
AIC Daemon Utilizado no ASEA AIC Daemon Utilizado no ASEA IRB6IRB6
• Implementa um processador de I/O
• Programa Java Multi−threaded
• A thread principal trata os argumentos e dispara duas outras threads
♦ SendSensors Envia a leitura dos sensores a cada 10ms
♦ GetCommand Recebe comandos do host e executa−os
48
Software do HostSoftware do Host
• Biblioteca AIC em C++, semelhante em estrutura ao pacote Java AIC
♦ Classes para modelar Motor, Encoder, Freio e Índice
♦ Classe AIC derivada para AIC_CAN e AIC_UDP Detalhes de comunicação encapsulados
♦ Programador não necessita estar consciente da arquitetura distribuída
♦ Classes e métodos são similares aos existentes nas AICs mas implementados em C++ ao invés de Java
49
Software do HostSoftware do Host
• C++ é melhor para controle avançado do que Java
♦ A teoria de controle moderno e o controle de robôs em particular é baseado em álgebra matricial
♦ C++ supporta sobrecarga operadores
♦ Bibliotecas de manipulação de matrizes podem ser construidas de forma bastante conveniente
• O Host executa RTAI
♦ Não há suporte para execução de Java em tempo real
♦ Real−time java não é tão madura quanto POSIX
50
ExperimentosExperimentos
51
ExperimentosExperimentos
52
ExperimentosExperimentos
• Filmes
♦ AICs
♦ J13
♦ J45
♦ J1345
53
ConclusãoConclusão
• Arquiteturas abertas para controle de robôs podem ser construídas à um custo relativamente baixo
• As aquiteturas propostas aqui são batante flexíveis
♦ Possíveis melhorias Sensores de força/torque (em desenvolvimento) Motores AC
• Programação de robôs em C++ é mais barata e mais conveniente do que em linguagens dedicadas
54
AgradecimentosAgradecimentos
• Este trabalho foi financiado em parte por:
♦ FAPERGS Processo 01/05670
♦ FAPEMIG Processo TEC 2471/98
♦ RECOPE/MANET