Drone Racing

O Looptime e as controladoras de vôo

Published

on

Este artigo explica o que looptime é e o como looptimes mais rápidos podem afetar a performance do seu drone. Também iremos falar sobre taxa de amostragem de gyro e velocidade de resposta de ESC, que são igualmente importantes.

Com toda essa tecnologia surgindo todos os dia no mundo do FPV racing, pode ficar um pouco difícil ficar por dentro de tudo. Looptime, taxa de amostragem do gyro (ou frequência de atualização do giroscópio), protocolos de ESC, e como eles afetam a controladora de vôo e o ESC são alguns dos conceitos comumente discutidos dentro da comunidade FPV.

“Se você for novo no mundo dos drones, por favor dê uma olhada no nosso guia básico sobre placas controladoras antes de mais nada”.

The Best Flight Controllers For FPV Drones

O que é o Looptime das placas controladoras?

Em resumo existem 2 coisas que você precisa conhecer e que são relacionadas com o looptime:

1. Gyro sampling rate (ou taxa de amostragem do giroscópio) – frequência com que os dados do gyro são lidos
2. Looptime da controladora – frequência com que estamos rodando loops de PID usando os dados do gyro.

Looptime pode ser representado tanto como o tempo que a placa leva para completar um loop de PID, quanto a frequência com que o loop de PID é executado, as duas coisas estão interconectadas. A saber, quando um loop de PID está rodando a 1KHz (Mil vezes por segundo), o looptime seria de 1ms (1000µs)

1000µs = 1khz
500µs = 2khz
250µs = 4khz
125µs = 8khz

Looptime nos diferentes Firmwares

Atualmente, os quatro principais firmwares para controladoras de vôo são o Betaflight, Cleanflight, Raceflight e KISS FC. Cada firmware pode ou não permitir que a placa rode com diferentes looptimes.

Por exemplo, o KISS FC opera apenas a 1KHz (looptime de 1000µs), enquanto o Betaflight normalmente roda a 8KHz (125µs) e o Raceflight pode rodar a até 32KHz.

Looptime não é tudo

A razão pela qual queremos looptimes maiores é a redução da latência, mas existem muitas outras coisas que podem introduzir atraso além do looptime de PID:

1. Atraso do Sensor do Gyro: causado pelo filtro low-pass e taxa de amostragem limitada;
2. PID Looptime: o que estamos discutindo neste artigo;
3. Protocolo de ESC: o tempo que leva para os dados serem enviados pela controladora e lidos pelo ESC;
4. Taxa de atualização do motor: frequência com que o ESC atualiza o motor;
5. Atraso físico do conjunto hélice/motor: tempo de reação do motor;
6. Momento ou inércia do drone: que é relacionado com a distribuição de peso do drone;
7. Latência do sistema de FPV: causado pela latência da câmera, monitor, transmissor e receptor de vídeo.
8. Atraso das ondas de rádio: o tempo que leva para o transmissor enviar comandos para o receptor do drone.
9. Atraso do protocolo do receptor: o tempo que leva para o receptor enviar o comando e ser interpretado pela controladora de vôo, por exemplo, SBUS é mais rápido que PPM.

Neste artigo vamos focar nas primeiras 3 coisas dessa lista, que são mais comumente relacionadas ao looptime da controladora e podem ser melhoradas via software.

Looptime

A maioria das controladoras F3 atuais são capazes de funcionar com loooptime de 8KHz, enquanto algumas F4 rodam a 16KHz ou até 32KHz. Porém, independente da velocidade do processador, a taxa de amostragem do gyro também ocupa um importante papel na definição do looptime máximo suportado pelo seu drone.

Leia sobre as diferenças entre as controladoras de vôo F1, F3, F4 e F7.

Taxa de amostragem do giroscópio

O looptime de PID é restringido pela taxa de amostragem do gyro, porque ele precisa ler os dados tão rápido quanto, ou mais rápido que o looptime.

A taxa de amostragem do gyro é afetada por 2 coisas: o tipo de sensor e os protocolos de conexão entre o processador e o sensor do gyro.

O popular gyro MPU6000 com protocolo SPI suporta uma taxa de amostragem de até 8KHz, enquanto o ICM-20602 pode ir até 32KHz.

Você deveria fazer seu gyro funcionar sempre na maior taxa de amostragem possível, já que praticamente não há pontos negativos em fazer isso (exceto talvez por aumentar um pouco a carga sobre o processador). Via de regra, para gyros com protocolo i2c, utilize 4KHz e para gyros com protocolo SPI utilize 8KHz.

Atraso (delay) do Gyro

O sensor do gyro possui um atraso físico na leitura dos dados, mas como fica na casa dos microsegundos, geralmente é ignorado.

O que pode causar um atraso muito maior porém, é o seu filtro low-pass interno. Um filtro low pass (LPF) serve para reduzir o ruido acima de uma certa frequência, o que pode afetar a integridade do sinal. O LPF padrão de gyro na Cleanflight v1.0 é 42Hz, o que se traduz em um delay de 4,8ms. Isso é praticamente 5 vezes mais que o delay do looptime de PID!!

Abaixo está uma tabela que mostra quanto delay é causado por diferentes frequências de LPF.

GYRO LPF DELAY
256Hz 0.98ms
188Hz 1.98ms
98Hz 2.8ms
42Hz 4.8ms
20Hz 8.3ms
10Hz 13.4ms
5Hz 18.6ms

 

Parece burrice utilizar frequências altas para o filtro low pass não é? Sim, mas não sem o lado negativo. Os dados do gyro podem ficar com muitos ruidos devido à filtragem insuficiente, o que pode resultar em um setup com tantos ruídos que se torna difícil de ajustar.

Apesar de o atraso do gyro não impactar no loptime, ele introduz latência em seu drone, gerando um impacto negativo nas respostas dele aos seus comandos.

Protocolo do ESC

O protocolo do ESC determina a velocidade com que os sinais do ESC são enviados pela controladora.

Leia aqui uma introdução aos protocolos e firmwares de ESC.

ESC Firmware and Protocols Overview

Por exemplo, por padrão o PWM leva 2ms para enviar um sinal, e isso é o dobro do delay de um looptime de 1KHz (1000µs). Atualizar o protocolo do seu ESC pode resultar em um ganho substancial na performance e responsividade do seu drone.

O firmware OneShot foi introduzido para substituir o velho e lento PWM, e conseguiu aumentar a velocidade em 8 vezes. O OneShot foi então seguido pelo Multishot que melhorou a latência em 10 vezes (80 vezes mais rápido que o PWM).

E mais recentemente surgiu o DShot, que pode ser mais confiável e rápido que o Multishot (quando usando DShot 1200). https://oscarliang.com/dshot1200-esc-protocol/

O protocolo do ESC restringe o Looptime

Existem limitações quanto ao maior looptime que você pode usar dependendo do protocolo de ESC.

O delay do protocolo Oneshot125 fica entre 250µs e 125µs dependendo do acelerador. Da mesma forma, o Oneshot42 fica entre 84µs e 42µs e o Multishot fica entre 25µs e 5µs.

Faz todo sentido ter o protocolo do seu ESC rodando mais rápido que o looptime da controladora, porque você simplesmente não consegue enviar mais dados do que o protocolo pode manipular, de outra forma o ESC ficaria para trás e ficaria sobrecarregado.

Além disso, Oneshot e Multishot ainda são protocolos analógicos, eles são mais rápidos pois os pulsos são menores. Cada pulso tem um bordo de ataque e um bordo de fuga como mostrado no diagrama abaixo, e o ESC apenas consegue identificar o sinal corretamente se ler o intervalo entre estes 2 bordos. Se estivermos alimentado dados mais rápido do que o protocolo pode suportar, não haverá intervalo algum no sinal PWM quando acelerarmos ao máximo (teremos apenas uma linha reta), o que irá causar problemas com a leitura dos dados.

E é por isso, por exemplo, que o Oneshot125 é muito lento para 8KHz, porque tendo uma latência de 125µs a 250µs (8KHz a 4KHz) ele só poderia lidar com looptimes de no máximo 4KHz.

Isso na teoria, porque na prática, você não deveria rodar looptime algum acima de 3.8KHz com o OneShot125. Isso garante um pequeno intervalo no sinal PWM para permitir que o ESC identifique o sinal corretamente, caso contrário sinais inválidos podem fazer o ESC desarmar ou funcionar incorretamente.

Qualquer protocolo mais rápido que o Oneshot125, como o Oneshot42 e o DShot300, são capazes de gerenciar looptimes de 8KHz, já para looptime de 32KHz você deverá utilizar Multishot, DShot600 ou outros protocolos mais rápidos.

Benefícios de Looptimes mais rápidos

Existem benefícios em rodar taxas de looptime e de amostragem de gyro mais rapidamente, mas existem também riscos que precisam ser considerados, e o principal dele são os ruídos causados pelas vibrações.

Para combater ruídos acima de certas frequências, empregamos filtros low pass (LPF) digitais no gyro. É preciso entender, porém, que o LPF apenas reduz os ruídos, e não elimina eles completamente.

Looptimes mais altos na prática: ruído

Pilotos mais experientes vão concordar que looptimes mais altos e um protocolo de ESC mais rápido podem trazer um benefício significativo para a performance de vôo. Pense que algum tempo atrás tinhamos looptimes de 1K rodando em conjunto com Oneshot125 e que agora usamos looptime de 8K ou até mesmo 32K rodando com DShot.

Ao aumentar o looptime, você fica aberto a um espectro muito mais amplo de frequências de ruídos. Este espectro mais amplo de ruídos pode se manifestar como o que chamamos de oscilação “D-Term” nos dados do log de vôo (blackbox). A oscilação D-Term pode tornar seu quad mais difícil de tunar e também de superaquecer seus motores.

Alguns drones de fato funcionam melhor em looptimes mais lentos porque valores mais altos geram tanta vibração que os tornam praticamente impossíveis de configurar. Portanto, looptimes rápidos podem exigir filtragem adicional, que consumirá qualquer vantagem de latência. Mesmo assim, pode haver alguns problemas de ruído que mesmo a filtragem aumentada pode não conseguir resolver.

Gyros rodando com taxas de amostragem de 32Khz podem ser sucetíveis a ruídos, e um bom exemplo são controladoras como a Raceflight Revolt que requer soft-mounting.

Soft Mounting FC and Motors

Como já dito, looptime não é tudo

Lembre-se que configurar um looptime mais rápido não vai fazer de você um piloto melhor da noite pro dia. Apenas a prática fará isso.

Eu experimentei uma controladora KISS que rodava a apenas 1KHz e o drone voava tão travado quanto qualquer um dos meus outros drones rodando Betaflight a 8KHz. Tem muitos outros aspectos do firmware da controladora que são responsáveis por seu drone voar do jeito que ele voa, e dependem em grande parte das preferências de cada um.

Usuários de Betaflight: Qual looptime e taxa de amostragem de gyro usar?

Aqui estão a taxa de amostragem de gyro e looptime máximos que você pode utilizar dependendo do hardware da sua controladora e do protocolo de ESC que você está usando.

Processador/Gyro Bus Oneshot125 Oneshot42 Multishot DShot(150,300,600) Example FC
F1 with I2C 2K/2K 2K/2K 2K/2K 2K/2K Naze32
F1 with SPI 4K/2K 4K/2K 4K/2K 4K/2K CC3D
F3/F4 with I2C 4K/2K 4K/4K 4K/4K 4K/(2K)(4K) XRacer V2
F3/F4/F7 with SPI 8K/2K 8K/4K 8K/8K 8K/(2K)(4K)(8K) Betaflight F3

 

Para liberar recursos em prol de looptimes mais altos, talvez você tenha que desabilitar algumas features tais como acelerômetro e soft-serial.

Após configurar seu looptime, certifique-se de chegar a carga da CPU da controladora. O concenso geral é o de deixar o uso de CPU abaixo de 35% para se obter uma performance estável.

Este artigo foi publicado originalmente no site https://oscarliang.com/ e traduzido com autorização prévia do autor.

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Por favor, habilite o JavaScript para enviar este formulário.

Sair da versão mobile