Real-time Operating System Timing Jitter and
its impact on Motor Control
Sistemas de Tempo Real
2006
João Ribeiro nº25673
Pedro Amaral nº25450
Motivação!



Os processadores de “uso geral” estão cada vez mais
evoluídos em termos de performance;
Compatíveis com plataformas PC, com todas as
vantagens que isso acarreta (dispositivos I/O a baixo
custo, mais software disponível, etc.);
Assim, é de todo o interesse estudar a sua utilização
em aplicações de tempo real, correndo claro,
Sistemas Operativos de Tempo Real (SOTR).
2
Problemas conhecidos!



Este tipo de processadores, possuem
mecanismos de optimização que introduzem
incerteza temporal (não determinismo).
Estamos a falar de caches, pipelines, previsão
de saltos, etc. (Lembram-se de AC2?)
Estes mecanismos melhoram a performance
em termos médios, mas em certas situações
introduzem grandes atrasos.
3
O que vamos abordar concretamente!



A utilização de processadores de “uso geral” no
controlo de motores, usando um SOTR.
Medir o impacto do jitter do controlador (SOTR) no
desempenho dos motores.
Finalmente, concluir se o uso de processadores de
“uso geral” e um SOTR é ou não uma boa opção
parra controlar motores.
4
Um pouco sobre motores!
Stepper motors:
Servo motors:
• Movem-se em passos
discretos (steps);
• Existe um estado
desejado (velocidade,
posição, etc.);
• Recebem de x em x
tempo a próxima posição
(next step);
• Não fornecem feedback
ao controlador.
• Fornecem feedback ao
controlador, que vai
ajustando o estado do
motor.
5
Plataforma de teste/controlador.

Pentium II 450 MHz.

512 KByte cache.


SOTRs Real time Linux (RTL) and Real Time Application
Interface (RTAI) – extensões ao SO Linux, que corre como um
idle process quando nenhuma tarefa de tempo real está em
execução.
Com estes SOTRs, devido à existência de tarefas non real time,
é provável que surjam atrasos decorrentes de dirty cache, o que
os torna bons para testes.
6
Afinal o que é o jitter?


Diferença entre o instante ideal de ocorrência de um evento e o
instante em que este evento realmente ocorre.
Por exemplo, no caso do controlo de um robot do filme “Alien
VS Predator”, cujo controlador, desenvolvido pela empresa
Concept Overdrive é baseado em RTL :
“The status of the motors must be updated 60 times per second, with each
interval exactly timed.
If one interval is slightly longer than the next - a problem called "jitter“ - the
motors and actuators inappropriately slow down, then speed up by small
amounts.
Jitter, combined with the weight and inertia from robotic mechanics, causes
visual vibration and shaking."
Concept Overdrive Founder: Steve Rosenbluth
7
Como medir o jitter?


Usando uma tarefa de tempo real que lê o Pentium
Time Stamp Counter (TSC) - contador que
incrementa a cada ciclo de relógio – de 500 em 500
microsegundos e guardar o seu valor na memória.
Através do método dos mínimos desvios quadráticos
(lembram-se de Elementos de Física e Mecânica?),
calcular o desvio padrão dos valores ideais.
8
Resultados em RTL (normal processor loading)
Eixo dos x em amostras;
Eixo dos y em jitter (microsegundos);
9
Interpretação




Inicialmente, existem desvios maiores pois existe código que
ainda não está em cache.
As barras agrupam padrões de valores de jitter, indicando que
existem padrões também na execução de código que
influenciam os valores de jitter (combinações de padrões de
acesso à cache e previsões de salto).
Para análise de determinado padrão, teríamos de analisar
detalhadamente todo o percurso entre a interrupção, mudança
de contexto, scheduler, mudança de contexto e a tarefa
propriamente dita.
O jitter de pior caso é de 3.5 microsegundos.
10
Resultados em RTL e RTAI com variação de
loading do processador.
a)
b)
c)
RTL
RTAI
RTL and RTAI
Eixo dos x em microsegundos
Eixo dos y em nº de amostras
11
Interpretação


O jitter aumenta com o aumento da
carga do processador.
Os resultados de ambos os SOTR são
comparáveis mas com padrões
distintos, o que indica dependência do
jitter do algoritmo de scheduling.
12
Como compensar o jitter?

Agendar a tarefa mais cedo, pelo menos o
tempo do worst case jitter.

Desactivar interrupções.

Entrar em polling loop de leitura ao TSC até
que chegue a altura certa para execução da
tarefa (neste caso ler o valor do TSC e
guardá-lo em memória).
13
Como compensar o jitter?
T= Período ideal da tarefa (500 microsegundos).
A = Período que iremos dar à tarefa tentando compensar o jitter.
S = Período de serviço à tarefa para decisão de sleep ou polling.
Área cinzenta = Tempo em que a tarefa fica em polling ao TSC.
14
Afinal qual é o objectivo?



Descobrir o valor de A que minimize a carga do
processador.
Se A for muito pequeno, o mais certo é que esta
acorde, verifique que o instante certo de leitura está
para além do seu período, e volte a adormecer (tudo
isto com um custo de tempo S).
Se A for demasiado grande, o mais certo é que a
tarefa fique em polling durante um tempo demasiado
grande.
15
Como podemos encontrar o valor de A ideal?


Sabendo que a carga do processador é
dada por:
Sabendo o tempo de serviço S,
podemos descobrir o valor de A que
minimiza a carga.
16
E como medimos o valor de S?



Programamos a tarefa para enviar um
output quando termina.
Com um osciloscópio, medimos o
instante do sinal de interrupção do
timer do processador.
Calculamos a diferença entre os dois
valores anteriores.
17
Resultados: T=500ms e S=5ms
Eixo dos x em valores de A (microsegundos);
Eixo dos y em carga do processador.
18
Resultado sem e com, compensação de jitter.

Jitter de pior caso sem

Jitter de pior caso com

Obtemos assim, uma redução
do jitter de cerca de 40 vezes.

compensação é de 3.5
microsegundos.
compensação é de 0.098
microsegundos.
O custo é de um aumento de
carga do processador em cerca
de 20%.
19
Então e os motores?

Consideramos stepper motors e a perda de torque devido ao

Torque é a força rotacional.

jitter.
= Deslocação adicional do motor devido ao jitter.
K=small-angle spring constant
h = holding torque
S = step angle of motor

= Torque consumido.
20
Resultados.
Resultados da perda de Torque para valores de jitter não
compensado e compensado: 3.5 e microsegundos e 0.098
microsegundos.
21
Conclusão.



O jitter pode ser compensado sacrificando cerca de
20% de tempo de processamento, o que permite
segundo os resultados obtidos uma redução do jitter
de 40 vezes.
Para jitter não compensado temos um consumo de
torque inferior a 10% e para jitter compensado
inferior a 1%.
Conclui-se que os processadores de uso geral podem
ser usados satisfatoriamente no controlo de stepper
motors.
22
Referências:



Fonte principal (fonte de todos os gráficos apresentados):
http://www.isd.mel.nist.gov/projects/rtlinux/motor-jitter.pdf
SOTR:
http://news.zdnet.com/2100-9593_22-6117479.html
http://zone.ni.com/devzone/cda/tut/p/id/3938#7
http://www.planetanalog.com/features/OEG20010827S0037
http://www.mrtc.mdh.se/publications/0576.pdf
Motores:
http://zone.ni.com/devzone/cda/tut/p/id/3656#0
http://www.romanblack.com/stepper.htm
http://en.wikipedia.org/wiki/Torque
23
Download

Apresentação