Sensores com suporte no Windows 8

Criando o Windows 8

Nos bastidores com a equipe de engenharia do Windows

Sensores com suporte no Windows 8

Rate This
  • Comments 2

Os recentes avanços em tecnologia de sensores estimulam a aceleração e evolução da experiência do usuário em PCs. A capacidade de reagir às alterações de luz ambiente, movimento, proximidade humana e localização está se tornando um elemento comum e essencial da experiência de computação. Mesmo uma coisa simples, como um sensor de luz ambiente para ajustar o brilho de um local com iluminação variável, é um cenário potencialmente básico para PCs desktop. Obviamente, também queremos nos certificar de que o usuário tenha total controle do uso desses periféricos, já que sabemos que diferentes sensores abrem uma brecha para riscos ou abusos que algumas pessoas não gostariam de enfrentar. Esta postagem examina detalhadamente o suporte a sensores no Windows 8 e foi escrita por Gavin Gear, gerente de projetos da equipe de Conectividade de Dispositivos.
--Steven


A primeira coisa que investigamos sobre os sensores foi como o Windows 8 deve usá-los no nível do sistema para adaptar o PC ao ambiente e preservar a vida útil da bateria.

Brilho adaptável

O primeiro recurso do sistema foi o controle de brilho automático do vídeo ou, como chamamos, "brilho adaptável". Esse recurso foi introduzido pela primeira vez no Windows 7 usando ALS (Sensores de luz ambiente) e destinava-se a formatos móveis como slates, conversíveis e laptops. Com o suporte dos painéis de vídeo de hoje a níveis de brilho com quase o dobro da intensidade do que era comum há poucos anos, esse recurso tornou-se mais importante do que nunca. Com o controle dinâmico do brilho da tela de acordo com condições de luz ambiente variáveis, podemos otimizar o nível de conforto de leitura e economizar a vida útil da bateria quando a tela é esmaecida em ambientes mais escuros.

A tela mostra reflexos, mas continua legível A tela fica quase que totalmente obscurecida pelos reflexos na superfície do tablet

Um tablet PC sob luz intensa ao ar livre com o brilho adaptável (esquerda) e sem ele (direita)

Como podemos observar, o brilho adaptável ajuda a ver o conteúdo da tela com mais clareza, já que ela fica automaticamente mais clara quando o tablet entra em um ambiente claro. E quem usa PC desktop em um ambiente ensolarado sabe que o mesmo pode acontecer em diferentes períodos do dia, em diferentes estações do ano.

Rotação de tela automática

Muitos smartphones e outros dispositivos móveis estabeleceram a expectativa de que, quando você gira o dispositivo, a exibição da tela também gira e se adapta à nova orientação (adaptando-se, inclusive, às alterações de taxa de proporção). Os dados de um acelerômetro permitem que o dispositivo determine sua orientação básica. Girando automaticamente a tela, as pessoas podem usar os dispositivos (basicamente slates e conversíveis) de forma mais natural e intuitiva, sem precisar girar manualmente a tela com os controles de software ou botões de hardware.

Tela inicial do Windows 8 em um tablet PC na posição horizontal Tela inicial do Windows 8 em um tablet PC na posição vertical

Tela inicial do Windows 8 nas orientações paisagem e retrato

Suporte do desenvolvedor para sensores

Além de calcular a maneira básica como um sistema Windows 8 poderia usar os sensores, precisávamos considerar como os aplicativos também os usariam. Examinamos diversos exemplos de aplicativos habilitados para sensores, inclusive jogos, aplicativos comerciais, ferramentas e utilitários, para nos ajudar a determinar quais cenários teriam suporte.

O primeiro da lista era a capacidade de os aplicativos entenderem movimento e rotação da tela. Era necessário um acelerômetro, um dispositivo que pode ser usado para medir a força em função da gravidade e o movimento do dispositivo em si. No entanto, a maioria dos cenários exigia um entendimento maior que apenas o de movimento e gravidade. A orientação também é um requisito importante para muitos aplicativos. Para permitir que um PC entendesse a orientação, tivemos de integrar a funcionalidade de um compasso.

O suporte a um compasso exigiria, no mínimo, um acelerômetro 3D (que mede aceleração em três eixos) e um magnetômetro 3D (que mede a força do campo magnético em três eixos). Essa combinação de sensores é chamada de sistema de captura de movimento e orientação de seis eixos e pode dar suporte a um compasso básico com compensação de inclinação, rotação de tela e alguns aplicativos de jogos casuais como um jogo do tipo labirinto. Entretanto, em nossos teste e protótipos, descobrimos que o sistema de detecção de movimento de seis eixos tem duas desvantagens: imprecisão esporádica do compasso e falta da capacidade de resposta necessária para jogos interativos 3D.

Recentemente, um novo tipo de sensor começou a surgir nas plataformas de telefone: o sensor de giro. Os sensores de giro medem a velocidade angular, normalmente ao longo de três eixos. Você também pode usar os dados dos sensores de giro para aumentar a capacidade de resposta e precisão de sistemas de captura de movimento 3D. Um sensor de giro é muito sensível, mas não possui nenhuma referência de orientação (como gravidade ou direção norte).

Este diagrama mostra como os dados de giro são representados como um conjunto de rotações ao longo dos três eixos básicos do dispositivo:

Vertical tem rotação +Z, longitudinal tem rotação +Y e transversal tem rotação +X

No início, alguns acharam que poucos aplicativos precisavam de tais sensores, como jogos especializados. Mas, quanto mais examinávamos o problema da captura de movimento e orientação 3D, mais percebíamos que os aplicativos ficavam muito mais envolventes e interessantes quando reagiam ao tipo de movimento que o homem pode entender facilmente, como batidas, giros e rotações em várias dimensões. Com esse tipo de sensor, certamente seria possível criar jogos 3D mais envolventes, mas ele também permitiria que vários outros aplicativos reagissem mais naturalmente à entrada de vários movimentos, inclusive aplicativos de mapeamento e navegação, utilitários de mensuração, aplicativos interativos (entre duas máquinas) e aplicativos simples como jogos casuais.

Desafios de engenharia

Começamos nossa exploração de aplicativos de movimento fazendo algumas experiências de protótipos 3D. O primeiro desafio foi mapear a orientação física do dispositivo diretamente em um ambiente 3D virtual no aplicativo. Decidimos fazer um modelo de uma experiência simples de realidade ampliada, emulando um tablet como uma janela em um mundo virtual. O conceito era bastante simples: quando você movesse o dispositivo olhando para a tela, o ambiente virtual (dentro de uma sala) deveria permanecer imóvel.

Inicialmente, tentamos um experimento usando o acelerômetro para mapear o movimento do dispositivo para cima e para baixo de forma que se refletisse no ambiente 3D em resposta. Com o dispositivo estático, a cena deveria permanecer estável. Ao inclinar o dispositivo, a exibição também deveria inclinar para cima ou para baixo. Logo encontramos um problema: o "ruído" nos dados do sensor do acelerômetro estava causando um tremor no ambiente 3D mesmo com o dispositivo estático. O ruído ficou claro quando capturamos os dados do acelerômetro e criamos um gráfico.

Aceleração X é uma linha pontilhada próxima de 0; a aceleração Y é uma linha pontilhada próxima de 0; a aceleração Z é uma linha pontilhada próxima de -1

Sem o ruído, as linhas no gráfico deveriam ser retas, sem nenhum desvio vertical. A maneira convencional de remover o ruído é aplicar um filtro passa-baixa no fluxo de dados brutos. Quando implantamos essa minimização no protótipo, o movimento resultante foi preciso e estável (sem tremor). Mas o filtro passa-baixa trouxe outro problema: o aplicativo perdeu a capacidade de resposta e ficou lento ao fornecer o movimento. Precisávamos encontrar uma maneira de compensar o tremor sem reduzir a capacidade de resposta.

O próximo experimento era fornecer a capacidade de "olhar para a esquerda" e "olhar para a direita" em nosso aplicativo de ambiente 3D virtual. Usamos uma solução de compasso de seis eixos (acelerômetro 3D + magnetômetro 3D) para dar suporte a esse tipo de movimento. Embora isso tenha de certa forma funcionado, o movimento não foi consistente devido à instabilidade geral do compasso de seis eixos. Também foi estimulante misturar os movimentos para cima e para baixo com movimentos para a esquerda e para a direita.

Com esses experimentos, ficou claro que essa combinação de sensores não podia fornecer a experiência fluida e responsiva que desejávamos. O sensor do acelerômetro não estava fornecendo dados limpos e não podia ser usado isoladamente para determinar a orientação do dispositivo. O magnetômetro demorava para atualizar e era suscetível a interferência eletromagnética (como uma agulha de compasso que às vezes se prende em uma posição). Ainda tínhamos de experimentar os sensores de giro, mas como os giros só podiam determinar a velocidade rotacional, não sabíamos como eles poderiam nos ajudar.

Criando uma "fusão de sensores"

Novos experimentos, porém, demonstraram que o uso dos três sensores juntos poderia resolver o problema. Verificou-se que um acelerômetro, um magnetômetro e um giro podem compensar as falhas um do outro, preenchendo efetivamente as lacunas de dados e capacidade de resposta de dados. Usando uma combinação desses sensores, foi possível criar uma experiência mais fluida e responsiva do que os sensores forneciam individualmente. A combinação de vários sensores para produzir melhores resultados em geral é um processo que chamamos de fusão de sensores.

Basicamente, a fusão de sensores é um caso em que o total é maior do que a soma das partes. Um sistema de fusão de sensores típico usa um acelerômetro 3D, um magnetômetro 3D e um giro 3D para criar um sistema combinado de "fusão de sensores de nove eixos". Para entender como esse sistema funciona, vejamos suas entradas e saídas.

Acelerômetro de hardware (Acelerômetro 3D, girômetro 3D, magnetômetro 3D) com setas apontando para a "passagem" e "fusão de sensores", e setas saindo deles em direção às saídas de sensor (Acelerômetro 3D, girômetro 3D, compasso 3D, inclinômetro 3D, orientação de dispositivo)
Sistema de fusão de sensores de nove eixos

Este diagrama mostra dois tipos de saídas: saídas de passagem, nas quais os dados do sensor são enviados diretamente para um aplicativo, e saídas de fusão, nas quais os dados do sensor são sintetizados em tipos de dados mais sofisticados.

Alguns aplicativos podem usar dados do sensor de passagem diretamente. Esses dados podem ser usados no "valor nominal" em diversos cenários. Um dos cenários é um aplicativo que implementa um pedômetro para contar os passos de uma caminhada. O gráfico abaixo mostra a saída do acelerômetro para uma pessoa caminhando com um tablet PC. O gráfico revela claramente que é possível detectar cada passo da pessoa.

Aceleração X, aceleração Y e aceleração Z mostradas como linhas no gráfico com variação regular, representando o movimento de cada passo do usuário.

 

No entanto, como os experimentos revelaram, muitos aplicativos não conseguem de fato usar os dados brutos do sensor. Alguns desses aplicativos são:

  • Aplicativos de compasso
  • Aplicativos de realidade ampliada e navegação aprimorada
  • Jogos casuais
  • Aplicativos de jogos 3D

Veja uma captura de tela de uma amostra de jogo 3D:

Jogo 3D simples com alvos mostrados em uma sala 3D simulada

Jogo de atirador na primeira pessoa 3D (mostrado em //Build/)

Esses aplicativos precisam usar dados de fusão de sensores para dar suporte aos recursos que implementam. A "mágica" da fusão de sensores é combinar matematicamente os dados dos três sensores para produzir saídas mais sofisticadas, inclusive um compasso com de inclinação compensada, um inclinômetro (expondo o eixo vertical, transversal e longitudinal) e representações mais avançadas de orientação de dispositivo. Com esses tipos de dados, aplicativos mais sofisticados podem produzir reações mais rápidas, fluidas e com maior capacidade de resposta para movimentos naturais.

Ao integrar uma solução de fusão de sensores, o Windows 8 fornece uma solução completa para toda a gama de aplicativos. A fusão de sensores no Windows resolve os problemas de movimento com tremor e transições irregulares, reduz os problemas de integridade de dados e fornece dados que permitem uma representação sem falhas do movimento completo do dispositivo no espaço 3D (sem nenhuma transição imperfeita).

Trabalhando com parceiros de hardware

Além de criar a solução de fusão de sensores para o Windows, também precisávamos ajudar os designers de hardware a aproveitá-la formando uma parceria com eles desde o início. É relativamente fácil criar um sistema de fusão de sensores quando é para um único dispositivo. Mas o Windows é executado em vários tipos de PC de diversos formatos, usando componentes de hardware de fabricantes diferentes. Precisávamos fornecer uma solução que permitisse que o ecossistema inteiro de parceiros de hardware do Windows participasse.

A primeira etapa era fornecer uma linha de base de desempenho para pacotes de sensores que funcionasse com a solução de fusão de sensores do Windows. Usando diretrizes de certificação do Windows, fornecemos especificações para o desempenho de sensores. Para ajudar as empresas de hardware a verificar se suas soluções eram compatíveis com o Windows, criamos vários testes, que fornecemos com o kit de Certificação do Windows.

A redução do custo de desenvolvimento e suporte de drivers era outro desafio. Para tornar as coisas mais simples para os fabricantes de hardware e de PC, escrevemos um único driver fornecido pela Microsoft para funcionar com todos os pacotes de sensores compatíveis com o Windows conectados por USB e até barramentos menos potentes como I2C. Esse driver de classe de sensor permite às empresas de hardware inovar com o hardware de sensor e garantir que seu produto seja totalmente compatível com os drivers que acompanham o sistema operacional Windows.

Para ajudar a acelerar a adoção desse driver de classe, a Microsoft se uniu a parceiros do setor para introduzir as especificações nos padrões públicos. Em julho de 2011, o padrão para sensores foi introduzido na especificação HID (Dispositivo de Interface Humana) do USB-IF (especificação HID versão 1.12, apresentada na solicitação de revisão nº 39). Essa padronização permite que qualquer empresa de sensor crie um pacote de sensores que seja compatível com o Windows 8 seguindo as especificações USB-IF de padrão público para firmware de dispositivo compatível. Isso reduz o tempo e o custo necessários para integrar o hardware de sensor a PCs com Windows 8. Outras vantagens são um custo de suporte reduzido e recursos de hardware mais consistentes para PCs com Windows 8 equipados com sensores.

Entretanto, além de padronizar o driver de classe, também queríamos otimizar o desempenho da solução de fusão de sensores e minimizar seu impacto sobre a vida útil da bateria. Todo sensor ativo em um sistema consome energia, e o envio de dados para a pilha consome memória e tempo da CPU. Conseguimos minimizar o impacto da energia e do desempenho em sistemas de fusão de sensores executados no Windows 8 basicamente de duas maneiras:

1. Criamos uma arquitetura nas interfaces de fusão de sensores no Windows 8 que permite que boa parte do processamento de fusão de sensores ocorra no nível do hardware. Esse recurso de fusão de sensores no nível do hardware significa que não é preciso executar algoritmos dispendiosos, em termos computacionais, na CPU principal, por isso ele reduz o consumo de energia e os ciclos da CPU.

2. Implementamos mecanismos de filtragem eficientes que associamos diretamente à necessidade de se executar aplicativos de sensor a qualquer momento. Esse modelo de evento e de dados de "pagamento por uso" significa que os dados do sensor são enviados à pilha sob a taxa exata em que os aplicativos precisam, e não maior. Isso reduz grandemente o uso pela CPU de taxa de transferência de dados de sensor.

Sensores e aplicativos estilo Metro

Para concluir, nosso último desafio era tornar a possibilidade e a promessa de fusão de sensores disponível para quem fosse escrever aplicativos estilo Metro. Para isso, criamos uma API de sensor como parte da nova WinRT. Com esse tipo de API, os desenvolvedores têm acesso à capacidade de fusão de sensores em qualquer aplicativo estilo Metro. Além de serem limpas e simples, essas APIs fornecem aos desenvolvedores acesso aos dados necessários para dar suporte a tudo, desde jogos casuais a aplicativos de realidade virtual. Obviamente, esses recursos estão todos disponíveis nas APIs do Win32 para desenvolvedores de jogos ou outros tipos de uso em aplicativos da área de trabalho.

O seguinte trecho de código JavaScript mostra como é fácil ter acesso a um acelerômetro e assinar eventos usando o Tempo de Execução do Windows:

var accelerometer;
accelerometer = Windows.Devices.Sensors.Accelerometer.getDefault();
accelerometer.addEventListener("readingchanged",onAccReadingChanged);

function onAccReadingChanged(e) {
var accelX = e.reading.accelerationX;
var accelY = e.reading.accelerationY;
var accelZ = e.reading.accelerationZ;
}

Para obter mais informações sobre o suporte a sensores no Tempo de Execução do Windows, consulte a sessão //build/ sobre como usar localização e sensores no seu aplicativo.

Você deve estar se perguntando agora como poderá experimentar a fusão de sensores no Windows 8 ou mesmo escrever alguns aplicativos que usem esses novos recursos. Os desenvolvedores que participaram da conferência //build/ em 2011 receberam o PC slate Samsung Windows 8 Developer Preview, que incluía um pacote completo de sensores. Existem apenas cerca de quatro mil deles, por isso, obviamente nem todos tiveram a oportunidade de ganhar um. A boa notícia é que o mesmo sistema de fusão de sensores de nove eixos criado no dispositivo com Windows Developer Preview agora está disponível online para compra na ST Microelectronics. O "ST Microelectronics eMotion Development Board for Windows 8" (modelo STEVAL-MKI119V1) é conectado via USB e funciona com o driver de classe de sensor HID incluído no Windows 8. Se você baixou a versão Developer Preview do Windows 8 e está ansioso para conhecer a experiência do sensor, considere a compra de um desses dispositivos.

Placa de circuito conectada ao dongle USB

ST Microelectronics eMotion Development Board for Windows 8

Agora vejamos a fusão de sensores em ação!


Baixe este vídeo para vê-lo no seu media player favorito:
MP4 de alta qualidade | MP4 de qualidade inferior

-- Gavin