Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket...

54
1 Arquiteturas para Acionamento e Arquiteturas para Acionamento e Controle em Tempo Real de Robôs Controle em Tempo Real de Robôs Walter Fetter Lages Universidade Federal do Rio Grande do Sul Departamento de Engenharia Elétrica [email protected]

Transcript of Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket...

Page 1: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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]

Page 2: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

2

IntroduçãoIntrodução

• Robôs

♦ Manipuladores

♦ Móveis

• Arquiteturas

♦ Hardware

♦ Software

♦ Controle

Page 3: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 4: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 5: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

5

Controle em Malha FechadaControle em Malha Fechada

Page 6: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

6

Arquitetura de Hardware TípicaArquitetura de Hardware Típica

Page 7: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 8: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

8

TransmissãoTransmissão

• Caixa de engrenagens

♦ Problemas de folgas e sensíveis a vibrações

• Polias

• Alavancas

• Fusos

• Harmonic−drive

Page 9: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

9

Harmonic DriveHarmonic Drive

Page 10: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

10

Harmonic DriveHarmonic Drive

• Redução de 2/nf em uma única etapa

Page 11: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 12: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 13: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 14: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

14

Pulse Width ModulationPulse Width Modulation

Page 15: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

15

Modulador PWM AnalógicoModulador PWM Analógico

Page 16: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

16

Acionamento por PWM DigitalAcionamento por PWM Digital

• Acionamento totalmente digital

• Freqüência do PWM pode ser programada

Page 17: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

17

Charge PumpCharge Pump

Page 18: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

18

ResolversResolvers

• Sinal de excitação de 400Hz

• V1= Vsen(wt)senA

• V2= Vsen(wt)cosA

• Processamento

♦ por demodulação

♦ Por amostragem

Page 19: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

19

Demodulação do ResolverDemodulação do Resolver

Page 20: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 21: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 22: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

22

Decodificação em QuadraturaDecodificação em Quadratura

Page 23: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

23

Relembrando...Relembrando...

• Computador

♦ PC

♦ DSP

♦ Microcontrolador

♦ Diversos processadores

• Outros dispositivos

♦ Freio

♦ Fim−de−curso

Page 24: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

24

Arquitetura de Hardware do TwilArquitetura de Hardware do Twil

Page 25: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

25

Amostragem de Encoder e BússolaAmostragem de Encoder e Bússola

Page 26: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 27: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 28: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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);

};

Page 29: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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);

};

Page 30: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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 { };

};

Page 31: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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();

}

Page 32: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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);

}

Page 33: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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;

}

Page 34: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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;

}

Page 35: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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;

}

Page 36: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

36

Encoder e Bússola SincronizadosEncoder e Bússola Sincronizados

Page 37: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 38: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

38

Arquitetura de Hardware do JanusArquitetura de Hardware do Janus

Page 39: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 40: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

40

Actuator Interface Card (AIC)Actuator Interface Card (AIC)

Page 41: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 42: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 43: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

43

AICAIC

Page 44: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 45: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 46: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 47: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 48: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 49: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 50: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

50

ExperimentosExperimentos

Page 51: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

51

ExperimentosExperimentos

Page 52: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

52

ExperimentosExperimentos

• Filmes

♦ AICs

♦ J13

♦ J45

♦ J1345

Page 53: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

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

Page 54: Arquiteturas para Acionamento e Controle em Tempo Real de ...fetter/robarch.pdf · •SIMM72 socket for processor module

54

AgradecimentosAgradecimentos

• Este trabalho foi financiado em parte por:

♦ FAPERGS Processo 01/05670

♦ FAPEMIG Processo TEC 2471/98

♦ RECOPE/MANET