SlideShare uma empresa Scribd logo
1 de 27
Assistive Context-
Aware ToolkitFelipe Pedroso
#IntelNoTDC
#IntelNoTDC
#IntelNoTDC
Agenda
• Stephen Hawking e Intel
• O que é o ACAT?
• Detalhes Técnicos
• Arquitetura
• Criando Extensões
• Como?
• RealSense + ACAT
• SharpSenses + ACAT
#IntelNoTDC
• O Professor Hawking conheceu
Gordon Moore durante uma conferência
em 1997, aonde ele ofereceu um PC
com processador Intel
• Desde então seu hardware é atualizado
periodicamente, mas o capacidade de
interagir está se deteriorando
• Um time multi-disciplinar foi convocado
para criar uma solução que permitisse
ele se comunicar e interagir de maneira
mais eficiente
Stephen Hawking e Intel
Fontes Imagens:
http://www.astrosurf.com/luxorion/hawking-hommage9.htm
http://www.wired.com/2015/01/intel-gave-stephen-hawking-voice/
#IntelNoTDC
• Acrônimo para “Assistive Context-
Aware Toolkit”
• Permitir que pessoas com limitações
físicas se comuniquem e controlem
o computador através de um teclado
virtual, predição de palavras e
síntese de voz
• Desenvolvido pela Intel Labs em
conjunto com o Professor Hawking
• Extensível e customizável
O que é o ACAT?
#IntelNoTDC
Open Source
http://01.org/ACAT
https://github.com/01org/acat
#IntelNoTDC
Alguns detalhes técnicos
• Roda no Windows 7 ou superior
• Código escrito em C# usando Visual 2012 (funciona na 2015) e Microsoft*
.NET Framework 4.5
• Microsoft* Office Interop Assemblies são usados para interagir com as apps
do Office (Word e Outlook)
• Algumas ferramentas utilizadas no desenvolvimento:
• CodeMaid
• StyleCop
• ReSharper
#IntelNoTDC
Arquitetura
Apps
ACAT Core Library
ACAT Extension Library
Extensions
Extension Extension Extension ...
#IntelNoTDC
Apps
ACAT Qwerty ACAT Abc ACAT Tryout
Talk Window
#IntelNoTDC
ACAT Core Library - Componentes
Word
Prediction*
Management
UI Management
AnimationsPanels Widgets Themes
Text-to-Speech
Management
Talk Window
Management
*O ACAT utiliza o Presage, uma engine de predição de texto criada por Matteo Vescov. (http://presage.sourceforge.net)
#IntelNoTDC
ACAT Core Library - Agentes
#IntelNoTDC
ACAT Core Library - Atuadores
Actuator
Management
Image Sources: http://www.psfk.com/2013/02/intel-stephen-hawking.html & https://commons.wikimedia.org/wiki/File:Assistive_device.JPG
Actuators
Proximity Sensor Assistive Switch Camera
#IntelNoTDC
ACAT Extensions Library
• Permite criar extensões/plugins para o ACAT
• São carregadas dinamicamente durante o startup do aplicativo (reflection)
• Possui as classes base e interfaces necessárias para implementar plugins
Tipos de Extensão
UI
Word Predictors
Agents
Actuators
Text-to-Speech Spell Checkers
#IntelNoTDC
Criando um Atuador
• Criar um projeto do tipo “Class Library” e adicionar referências para as DLLs
“ACATCore.dll” e “ACATExtension.dll”
• Estender as classes “ActuatorBase” e “ActuatorSwitchBase”
• Implementar os métodos abstratos e usar os callbacks (Init, Resume, Pause,
Dispose) para rodar a sua extensão (threads, configutação, etc)
• Chamar os métodos OnSwitchActivated (Press), OnSwitchDeactivated
(Release) ou OnSwitchTriggered(Click) para sinalizar a interação do usuário
com o seu atuador
• Fazer o deploy da sua DLL para a pasta de extensões e atualizar arquivos de
configuração
#IntelNoTDC
Intel® RealSense™
Intel® RealSense™ SDK
Scene
Understanding
Enhanced
Photography
Augmented
Reality
Person & Face
Tracking
Gesture
Recognition
Background
Removal
Object
Recognition
and Tracking
Speech
Recognition
3D Object
Scanning
Hand & Blob
Tracking
User Facing World Facing
#IntelNoTDC
Rastreamento (Posição)
Landmarks (78 pontos)
Pose / Orientação
Expressões
Reconhecimento
Estimativa de pulso
Intel® RealSense™ - Módulo de Face
#IntelNoTDC
• Objetivo: criar um atuador que é
controlado por expressões faciais
• Componentes:
• RealSenseExpressionTracker: Utiliza
o RealSense SDK para perceber as
expressões do usuário e notifica o
atuador utilizando eventos
• RealSenseActuator: “traduz” a
intensidade das expressões em um
“comportamento de botão” (press e
release)
Intel® RealSense™ - ACAT Plugin
RealSense Actuator Extension
ExpressionTracker
Actuator Switch
Actuator
Management
#IntelNoTDC
• O atuador de câmera que vem com
o ACAT é um cliente de socket que
espera a app “ACAT Vision”, que é
um servidor de socket
• A comunicação tem um protocolo
simples e customizável através de
arquivos de configuração
• O “ACAT Vision” ainda não é open
source, mas o código será liberado
nas próximas versões
Another way to connect an actuator
ACAT Vision (Server)
Camera Actuator (Client)
Actuator
Management
#IntelNoTDC
• O SharpSenses* é uma biblioteca
open source escrita em C# que
simplifica o desenvolvimento de
apps que usam o Intel®
RealSense™ SDK.
• Criada e mantida pelo André
Carlucci (Intel Black Belt e Software
Innovator), coordenador da trilha de
.NET 
• Disponível no Github* e NuGet*
SharpSenses*
#IntelNoTDC
• A idéia é criar um server “fake”, que
replica a comunicação/protocolo do
“ACAT Vision”
• Para notificar a ação do usuário
basta enviar a string
“gesture=trigger;action=CT;conf=75;t
ime=<TIMESTAMP>”
• O ACAT também envia alguns
eventos para o servidor (HideUI,
ShowUI, ExitApp)
SharpSenses* + ACAT
ACAT Vision
Camera Actuator (Client)
Actuator
Management
‘Fake’ Server
SharpSenses
#IntelNoTDC
Sumário
• ACAT é uma boa opção para ajudar pessoas com limitações a se comunicar e
interagir com seus computadores
• Open Source: Você está mais do que convidado em criar seu fork do ACAT ou
criar novos plugins
• Extensões: vamos ajudar as pessoas com novos atuadores, agentes e novas
funcionalidades 
• O Intel® RealSense™ e o SharpSenses* podem ajudar a criar aplicações
mais acessíveis
Dúvidas?
#IntelNoTDC
Referências
• Stephen Hawking e Intel
• http://iq.intel.com/behind-scenes-intel-keeps-stephen-hawking-talking/
• http://www.wired.com/2015/01/intel-gave-stephen-hawking-voice/
• ACAT
• https://github.com/01org/acat
• http://01.org/ACAT
• Intel® RealSense™ : https://software.intel.com/en-us/realsense/home
• SharpSenses*: https://github.com/SharpSenses/SharpSenses
MUITO OBRIGADO!
#INTELNOTDC
BAckup
#IntelNoTDC
ACAT Server
SharpSenses + ACAT
SharpSenses
bool canRun = true;
AcatServer acatServer = new AcatServer();
acatServer.Start();
acatServer.AcatNotificationReceived += (sender, a) => {
Console.WriteLine("Notification received from ACAT: {0}", a.NotificationType);
if (a.NotificationType == AcatNotificationType.ExitApp)
{
canRun = false;
}
};
ICamera camera = Camera.Create(Capability.FaceTracking, Capability.FacialExpressionTracking);
camera.Start();
camera.Face.LeftEye.Blink += (s,a) => {
Console.WriteLine("SharpSenses: detected a blink from left eye.");
acatServer.SendGestureMessage("CT", "trigger");
};
while (canRun) { }
acatServer.Stop();
ACAT Assistive Toolkit

Mais conteúdo relacionado

Destaque

monografia Qualidade de vida no trabalho
monografia Qualidade de vida no trabalhomonografia Qualidade de vida no trabalho
monografia Qualidade de vida no trabalhoRaniery Silva Pessoa
 
PLC input and output devices
PLC input and output devices PLC input and output devices
PLC input and output devices Ameen San
 
Como fazer um resumo (passo a passo)
Como fazer um resumo (passo a passo)Como fazer um resumo (passo a passo)
Como fazer um resumo (passo a passo)Jazon Pereira
 
Resumo orcamento público
Resumo orcamento públicoResumo orcamento público
Resumo orcamento públicomario maciel
 
Desenvolvendo interfaces ricas em java fx para ultrabook final
Desenvolvendo interfaces ricas em java fx para ultrabook   finalDesenvolvendo interfaces ricas em java fx para ultrabook   final
Desenvolvendo interfaces ricas em java fx para ultrabook finalFelipe Pedroso
 
Oralidade e gêneros orais: um olhar sobre as práticas orais em sala de aula
Oralidade e gêneros orais: um olhar sobre as práticas orais em sala de aulaOralidade e gêneros orais: um olhar sobre as práticas orais em sala de aula
Oralidade e gêneros orais: um olhar sobre as práticas orais em sala de aulaDenise Oliveira
 
Apostila de atividades crianças 1 a 2 anos
Apostila de atividades  crianças 1 a 2 anosApostila de atividades  crianças 1 a 2 anos
Apostila de atividades crianças 1 a 2 anosMara Rocha
 

Destaque (9)

monografia Qualidade de vida no trabalho
monografia Qualidade de vida no trabalhomonografia Qualidade de vida no trabalho
monografia Qualidade de vida no trabalho
 
PLC input and output devices
PLC input and output devices PLC input and output devices
PLC input and output devices
 
Como fazer um resumo (passo a passo)
Como fazer um resumo (passo a passo)Como fazer um resumo (passo a passo)
Como fazer um resumo (passo a passo)
 
Resumo orcamento público
Resumo orcamento públicoResumo orcamento público
Resumo orcamento público
 
Desenvolvendo interfaces ricas em java fx para ultrabook final
Desenvolvendo interfaces ricas em java fx para ultrabook   finalDesenvolvendo interfaces ricas em java fx para ultrabook   final
Desenvolvendo interfaces ricas em java fx para ultrabook final
 
Funciones de microsoft word
Funciones de microsoft wordFunciones de microsoft word
Funciones de microsoft word
 
Oralidade e gêneros orais: um olhar sobre as práticas orais em sala de aula
Oralidade e gêneros orais: um olhar sobre as práticas orais em sala de aulaOralidade e gêneros orais: um olhar sobre as práticas orais em sala de aula
Oralidade e gêneros orais: um olhar sobre as práticas orais em sala de aula
 
LDB - 9394/96
LDB - 9394/96LDB - 9394/96
LDB - 9394/96
 
Apostila de atividades crianças 1 a 2 anos
Apostila de atividades  crianças 1 a 2 anosApostila de atividades  crianças 1 a 2 anos
Apostila de atividades crianças 1 a 2 anos
 

Semelhante a ACAT Assistive Toolkit

Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no NubankLetticia Nicoli
 
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaAzure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaRodrigo Marques Teixeira
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScriptHeider Lopes
 
Utilização do NVidia DeepStream para execução de modelos de IA no Azure IoT Edge
Utilização do NVidia DeepStream para execução de modelos de IA no Azure IoT EdgeUtilização do NVidia DeepStream para execução de modelos de IA no Azure IoT Edge
Utilização do NVidia DeepStream para execução de modelos de IA no Azure IoT EdgeWalter Coan
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
Netduino e .NET Micro Framework
Netduino e .NET Micro FrameworkNetduino e .NET Micro Framework
Netduino e .NET Micro FrameworkIgor Kondrasovas
 
Configuração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeConfiguração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeAécio Pires
 
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...Andre Devecchi
 
Internet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouInternet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouJose Wilker
 
Programação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro FrameworkProgramação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro FrameworkIgor Kondrasovas
 
K8sGPT - Superpoderes na administração Kubernetes.pptx
K8sGPT - Superpoderes na administração Kubernetes.pptxK8sGPT - Superpoderes na administração Kubernetes.pptx
K8sGPT - Superpoderes na administração Kubernetes.pptxNatalia Granato
 
A Revolução já começou
A Revolução já começouA Revolução já começou
A Revolução já começouJose Wilker
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Ramon Durães
 
Como publicar um projeto open hardware?
Como publicar um projeto  open hardware?Como publicar um projeto  open hardware?
Como publicar um projeto open hardware?Fabio Souza
 
Cloud Management Platform com OpenStack
Cloud Management Platform com OpenStackCloud Management Platform com OpenStack
Cloud Management Platform com OpenStackRenato Serra Armani
 

Semelhante a ACAT Assistive Toolkit (20)

Minicurso Intel XDK
Minicurso Intel XDKMinicurso Intel XDK
Minicurso Intel XDK
 
Minicurso Intel XDK
Minicurso Intel XDKMinicurso Intel XDK
Minicurso Intel XDK
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no Nubank
 
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / GoiâniaAzure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
Azure Bootcamp 2018 - DevOps para profissionais de Infra - Infomach / Goiânia
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScript
 
Utilização do NVidia DeepStream para execução de modelos de IA no Azure IoT Edge
Utilização do NVidia DeepStream para execução de modelos de IA no Azure IoT EdgeUtilização do NVidia DeepStream para execução de modelos de IA no Azure IoT Edge
Utilização do NVidia DeepStream para execução de modelos de IA no Azure IoT Edge
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Netduino e .NET Micro Framework
Netduino e .NET Micro FrameworkNetduino e .NET Micro Framework
Netduino e .NET Micro Framework
 
Configuração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeConfiguração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as code
 
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
 
Internet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouInternet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começou
 
Programação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro FrameworkProgramação de Microcontroladores com .NET Micro Framework
Programação de Microcontroladores com .NET Micro Framework
 
K8sGPT - Superpoderes na administração Kubernetes.pptx
K8sGPT - Superpoderes na administração Kubernetes.pptxK8sGPT - Superpoderes na administração Kubernetes.pptx
K8sGPT - Superpoderes na administração Kubernetes.pptx
 
A Revolução já começou
A Revolução já começouA Revolução já começou
A Revolução já começou
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Como publicar um projeto open hardware?
Como publicar um projeto  open hardware?Como publicar um projeto  open hardware?
Como publicar um projeto open hardware?
 
Meetup-Churrops
Meetup-ChurropsMeetup-Churrops
Meetup-Churrops
 
Cloud Management Platform com OpenStack
Cloud Management Platform com OpenStackCloud Management Platform com OpenStack
Cloud Management Platform com OpenStack
 
Live Source - Brasil
Live Source - BrasilLive Source - Brasil
Live Source - Brasil
 

Mais de Felipe Pedroso

Improved Knowledge from Data: Building an Immersive Data Analysis Platform
Improved Knowledge from Data: Building an Immersive Data Analysis PlatformImproved Knowledge from Data: Building an Immersive Data Analysis Platform
Improved Knowledge from Data: Building an Immersive Data Analysis PlatformFelipe Pedroso
 
Aprendendo Kotlin na Prática
Aprendendo Kotlin na PráticaAprendendo Kotlin na Prática
Aprendendo Kotlin na PráticaFelipe Pedroso
 
Machine Learning em Apps Android com ML Kit
Machine Learning em Apps Android com ML KitMachine Learning em Apps Android com ML Kit
Machine Learning em Apps Android com ML KitFelipe Pedroso
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorFelipe Pedroso
 
Construindo Chatbots em Node.js
Construindo Chatbots em Node.jsConstruindo Chatbots em Node.js
Construindo Chatbots em Node.jsFelipe Pedroso
 
Microsoft Bot Framework
Microsoft Bot FrameworkMicrosoft Bot Framework
Microsoft Bot FrameworkFelipe Pedroso
 
Conectando Coisas com IFTTT
Conectando Coisas com IFTTTConectando Coisas com IFTTT
Conectando Coisas com IFTTTFelipe Pedroso
 
Minicurso RealSense SDK
Minicurso RealSense SDKMinicurso RealSense SDK
Minicurso RealSense SDKFelipe Pedroso
 
Minicurso "Jogos Multiplataforma com Javascript"
Minicurso "Jogos Multiplataforma com Javascript"Minicurso "Jogos Multiplataforma com Javascript"
Minicurso "Jogos Multiplataforma com Javascript"Felipe Pedroso
 
Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8Felipe Pedroso
 
Palestra "Game Engines para Javascript"
Palestra "Game Engines para Javascript"Palestra "Game Engines para Javascript"
Palestra "Game Engines para Javascript"Felipe Pedroso
 
ADB: Um ator invisível
ADB: Um ator invisívelADB: Um ator invisível
ADB: Um ator invisívelFelipe Pedroso
 
Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)Felipe Pedroso
 
Developing Rich Interfaces in JavaFX for Ultrabooks
Developing Rich Interfaces in JavaFX for UltrabooksDeveloping Rich Interfaces in JavaFX for Ultrabooks
Developing Rich Interfaces in JavaFX for UltrabooksFelipe Pedroso
 

Mais de Felipe Pedroso (19)

Improved Knowledge from Data: Building an Immersive Data Analysis Platform
Improved Knowledge from Data: Building an Immersive Data Analysis PlatformImproved Knowledge from Data: Building an Immersive Data Analysis Platform
Improved Knowledge from Data: Building an Immersive Data Analysis Platform
 
Aprendendo Kotlin na Prática
Aprendendo Kotlin na PráticaAprendendo Kotlin na Prática
Aprendendo Kotlin na Prática
 
Machine Learning em Apps Android com ML Kit
Machine Learning em Apps Android com ML KitMachine Learning em Apps Android com ML Kit
Machine Learning em Apps Android com ML Kit
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
Construindo Chatbots em Node.js
Construindo Chatbots em Node.jsConstruindo Chatbots em Node.js
Construindo Chatbots em Node.js
 
Testes A/B
Testes A/BTestes A/B
Testes A/B
 
Microsoft Bot Framework
Microsoft Bot FrameworkMicrosoft Bot Framework
Microsoft Bot Framework
 
Análise SWOT
Análise SWOTAnálise SWOT
Análise SWOT
 
Conectando Coisas com IFTTT
Conectando Coisas com IFTTTConectando Coisas com IFTTT
Conectando Coisas com IFTTT
 
Minicurso RealSense SDK
Minicurso RealSense SDKMinicurso RealSense SDK
Minicurso RealSense SDK
 
RealSense SDK
RealSense SDKRealSense SDK
RealSense SDK
 
Minicurso "Jogos Multiplataforma com Javascript"
Minicurso "Jogos Multiplataforma com Javascript"Minicurso "Jogos Multiplataforma com Javascript"
Minicurso "Jogos Multiplataforma com Javascript"
 
RealSense SDK
RealSense SDKRealSense SDK
RealSense SDK
 
Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8Palestra Game Engines para Windows 8
Palestra Game Engines para Windows 8
 
Palestra "Game Engines para Javascript"
Palestra "Game Engines para Javascript"Palestra "Game Engines para Javascript"
Palestra "Game Engines para Javascript"
 
Fat binaries
Fat binariesFat binaries
Fat binaries
 
ADB: Um ator invisível
ADB: Um ator invisívelADB: Um ator invisível
ADB: Um ator invisível
 
Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)
 
Developing Rich Interfaces in JavaFX for Ultrabooks
Developing Rich Interfaces in JavaFX for UltrabooksDeveloping Rich Interfaces in JavaFX for Ultrabooks
Developing Rich Interfaces in JavaFX for Ultrabooks
 

ACAT Assistive Toolkit

  • 3. #IntelNoTDC Agenda • Stephen Hawking e Intel • O que é o ACAT? • Detalhes Técnicos • Arquitetura • Criando Extensões • Como? • RealSense + ACAT • SharpSenses + ACAT
  • 4. #IntelNoTDC • O Professor Hawking conheceu Gordon Moore durante uma conferência em 1997, aonde ele ofereceu um PC com processador Intel • Desde então seu hardware é atualizado periodicamente, mas o capacidade de interagir está se deteriorando • Um time multi-disciplinar foi convocado para criar uma solução que permitisse ele se comunicar e interagir de maneira mais eficiente Stephen Hawking e Intel Fontes Imagens: http://www.astrosurf.com/luxorion/hawking-hommage9.htm http://www.wired.com/2015/01/intel-gave-stephen-hawking-voice/
  • 5. #IntelNoTDC • Acrônimo para “Assistive Context- Aware Toolkit” • Permitir que pessoas com limitações físicas se comuniquem e controlem o computador através de um teclado virtual, predição de palavras e síntese de voz • Desenvolvido pela Intel Labs em conjunto com o Professor Hawking • Extensível e customizável O que é o ACAT?
  • 7. #IntelNoTDC Alguns detalhes técnicos • Roda no Windows 7 ou superior • Código escrito em C# usando Visual 2012 (funciona na 2015) e Microsoft* .NET Framework 4.5 • Microsoft* Office Interop Assemblies são usados para interagir com as apps do Office (Word e Outlook) • Algumas ferramentas utilizadas no desenvolvimento: • CodeMaid • StyleCop • ReSharper
  • 8. #IntelNoTDC Arquitetura Apps ACAT Core Library ACAT Extension Library Extensions Extension Extension Extension ...
  • 9. #IntelNoTDC Apps ACAT Qwerty ACAT Abc ACAT Tryout Talk Window
  • 10. #IntelNoTDC ACAT Core Library - Componentes Word Prediction* Management UI Management AnimationsPanels Widgets Themes Text-to-Speech Management Talk Window Management *O ACAT utiliza o Presage, uma engine de predição de texto criada por Matteo Vescov. (http://presage.sourceforge.net)
  • 12. #IntelNoTDC ACAT Core Library - Atuadores Actuator Management Image Sources: http://www.psfk.com/2013/02/intel-stephen-hawking.html & https://commons.wikimedia.org/wiki/File:Assistive_device.JPG Actuators Proximity Sensor Assistive Switch Camera
  • 13. #IntelNoTDC ACAT Extensions Library • Permite criar extensões/plugins para o ACAT • São carregadas dinamicamente durante o startup do aplicativo (reflection) • Possui as classes base e interfaces necessárias para implementar plugins Tipos de Extensão UI Word Predictors Agents Actuators Text-to-Speech Spell Checkers
  • 14. #IntelNoTDC Criando um Atuador • Criar um projeto do tipo “Class Library” e adicionar referências para as DLLs “ACATCore.dll” e “ACATExtension.dll” • Estender as classes “ActuatorBase” e “ActuatorSwitchBase” • Implementar os métodos abstratos e usar os callbacks (Init, Resume, Pause, Dispose) para rodar a sua extensão (threads, configutação, etc) • Chamar os métodos OnSwitchActivated (Press), OnSwitchDeactivated (Release) ou OnSwitchTriggered(Click) para sinalizar a interação do usuário com o seu atuador • Fazer o deploy da sua DLL para a pasta de extensões e atualizar arquivos de configuração
  • 15. #IntelNoTDC Intel® RealSense™ Intel® RealSense™ SDK Scene Understanding Enhanced Photography Augmented Reality Person & Face Tracking Gesture Recognition Background Removal Object Recognition and Tracking Speech Recognition 3D Object Scanning Hand & Blob Tracking User Facing World Facing
  • 16. #IntelNoTDC Rastreamento (Posição) Landmarks (78 pontos) Pose / Orientação Expressões Reconhecimento Estimativa de pulso Intel® RealSense™ - Módulo de Face
  • 17. #IntelNoTDC • Objetivo: criar um atuador que é controlado por expressões faciais • Componentes: • RealSenseExpressionTracker: Utiliza o RealSense SDK para perceber as expressões do usuário e notifica o atuador utilizando eventos • RealSenseActuator: “traduz” a intensidade das expressões em um “comportamento de botão” (press e release) Intel® RealSense™ - ACAT Plugin RealSense Actuator Extension ExpressionTracker Actuator Switch Actuator Management
  • 18. #IntelNoTDC • O atuador de câmera que vem com o ACAT é um cliente de socket que espera a app “ACAT Vision”, que é um servidor de socket • A comunicação tem um protocolo simples e customizável através de arquivos de configuração • O “ACAT Vision” ainda não é open source, mas o código será liberado nas próximas versões Another way to connect an actuator ACAT Vision (Server) Camera Actuator (Client) Actuator Management
  • 19. #IntelNoTDC • O SharpSenses* é uma biblioteca open source escrita em C# que simplifica o desenvolvimento de apps que usam o Intel® RealSense™ SDK. • Criada e mantida pelo André Carlucci (Intel Black Belt e Software Innovator), coordenador da trilha de .NET  • Disponível no Github* e NuGet* SharpSenses*
  • 20. #IntelNoTDC • A idéia é criar um server “fake”, que replica a comunicação/protocolo do “ACAT Vision” • Para notificar a ação do usuário basta enviar a string “gesture=trigger;action=CT;conf=75;t ime=<TIMESTAMP>” • O ACAT também envia alguns eventos para o servidor (HideUI, ShowUI, ExitApp) SharpSenses* + ACAT ACAT Vision Camera Actuator (Client) Actuator Management ‘Fake’ Server SharpSenses
  • 21. #IntelNoTDC Sumário • ACAT é uma boa opção para ajudar pessoas com limitações a se comunicar e interagir com seus computadores • Open Source: Você está mais do que convidado em criar seu fork do ACAT ou criar novos plugins • Extensões: vamos ajudar as pessoas com novos atuadores, agentes e novas funcionalidades  • O Intel® RealSense™ e o SharpSenses* podem ajudar a criar aplicações mais acessíveis
  • 23. #IntelNoTDC Referências • Stephen Hawking e Intel • http://iq.intel.com/behind-scenes-intel-keeps-stephen-hawking-talking/ • http://www.wired.com/2015/01/intel-gave-stephen-hawking-voice/ • ACAT • https://github.com/01org/acat • http://01.org/ACAT • Intel® RealSense™ : https://software.intel.com/en-us/realsense/home • SharpSenses*: https://github.com/SharpSenses/SharpSenses
  • 26. #IntelNoTDC ACAT Server SharpSenses + ACAT SharpSenses bool canRun = true; AcatServer acatServer = new AcatServer(); acatServer.Start(); acatServer.AcatNotificationReceived += (sender, a) => { Console.WriteLine("Notification received from ACAT: {0}", a.NotificationType); if (a.NotificationType == AcatNotificationType.ExitApp) { canRun = false; } }; ICamera camera = Camera.Create(Capability.FaceTracking, Capability.FacialExpressionTracking); camera.Start(); camera.Face.LeftEye.Blink += (s,a) => { Console.WriteLine("SharpSenses: detected a blink from left eye."); acatServer.SendGestureMessage("CT", "trigger"); }; while (canRun) { } acatServer.Stop();

Notas do Editor

  1. Github* link: https://github.com/SharpSenses*/SharpSenses* NuGet* link: https://www.nuget.org/packages/SharpSenses*.