| (4 revisões intermediárias por 3 usuários não estão sendo mostradas) | |||
| Linha 18: | Linha 18: | ||
** Um software é uma sequencia de instruções que são interpretadas por um computador e passadas para um hardware. | ** Um software é uma sequencia de instruções que são interpretadas por um computador e passadas para um hardware. | ||
* Como funciona? | * Como funciona? | ||
** Neste caso, todos os softwares são privados, utilizados pelas empresas para lucro, desse modo não é possível obter informações mais específicas sobre o seu funcionamento. | ** Neste caso, todos os softwares são privados, utilizados pelas empresas para lucro, desse modo não é possível obter informações mais específicas sobre o seu funcionamento. Recentemente a Microsoft disponibilizou exemplos do código do kinect. | ||
* Exemplo: No fragmento de código abaixo é feito o reconhecimento do corpo da pessoa que está utilizando o Kinect. | |||
<br | |||
\> | |||
:/// <summary> | |||
:/// Handler for skeleton ready handler. | |||
:/// </summary> | |||
:/// <param name="sender">The sender.</param> | |||
:/// <param name="e">The event args.</param> | |||
:private void OnSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) | |||
:{ | |||
:: // Get the frame. | |||
:: using (var frame = e.OpenSkeletonFrame()) | |||
:: { | |||
::: // Ensure we have a frame. | |||
::: if (frame != null) | |||
::: { | |||
:::: // Resize the skeletons array if a new size (normally only on first call). | |||
:::: if (this.skeletons.Length != frame.SkeletonArrayLength) | |||
:::: { | |||
::::: this.skeletons = new Skeleton[frame.SkeletonArrayLength]; | |||
:::: } | |||
:::: | |||
:::: // Get the skeletons. | |||
:::: frame.CopySkeletonDataTo(this.skeletons); | |||
:::: | |||
:::: // Assume no nearest skeleton and that the nearest skeleton is a long way away. | |||
:::: var newNearestId = -1; | |||
:::: var nearestDistance2 = double.MaxValue; | |||
:::: | |||
:::: // Look through the skeletons. | |||
:::: foreach (var skeleton in this.skeletons) | |||
:::: { | |||
::::: // Only consider tracked skeletons. | |||
::::: if (skeleton.TrackingState == SkeletonTrackingState.Tracked) | |||
::::: { | |||
:::::: // Find the distance squared. | |||
:::::: var distance2 = (skeleton.Position.X * skeleton.Position.X) + | |||
:::::::(skeleton.Position.Y * skeleton.Position.Y) + | |||
::::::: (skeleton.Position.Z * skeleton.Position.Z); | |||
:::: | |||
:::::: // Is the new distance squared closer than the nearest so far? | |||
:::::: if (distance2 < nearestDistance2) | |||
:::::: { | |||
::::::: // Use the new values. | |||
::::::: newNearestId = skeleton.TrackingId; | |||
::::::: nearestDistance2 = distance2; | |||
:::::: } | |||
:::::} | |||
::::} | |||
:::: | |||
:::: if (this.nearestId != newNearestId) | |||
:::: { | |||
::::: this.nearestId = newNearestId; | |||
:::: } | |||
:::: | |||
:::: // Pass skeletons to recognizer. | |||
:::: this.activeRecognizer.Recognize(sender, frame, this.skeletons); | |||
:::: | |||
:::: this.DrawStickMen(this.skeletons); | |||
::: } | |||
:: } | |||
:} | |||
<br> | <br> | ||
= Aplicação = | = Aplicação = | ||
<br | <br> | ||
* Cite as situações onde podemos usar esta tecnologia? | * Cite as situações onde podemos usar esta tecnologia? | ||
| Linha 51: | Linha 115: | ||
= Referências = | = Referências = | ||
<br> | <br> | ||
*http://olhardigital.uol.com.br/noticia/sistema-de-controle-por-gestos-e-finalizado-e-comeca-a-ser-entregue-este-ano/42509 | * http://olhardigital.uol.com.br/noticia/sistema-de-controle-por-gestos-e-finalizado-e-comeca-a-ser-entregue-este-ano/42509 | ||
*http://oglobo.globo.com/sociedade/tecnologia/no-estilo-minority-report-microsoft-mostra-tecnologia-de-controle-por-gestos-15910492 | * http://oglobo.globo.com/sociedade/tecnologia/no-estilo-minority-report-microsoft-mostra-tecnologia-de-controle-por-gestos-15910492 | ||
*http://gizmodo.uol.com.br/leap-motion-v2/ | * http://gizmodo.uol.com.br/leap-motion-v2/ | ||
*http://www.stylourbano.com.br/bracadeira-myo-o-futuro-do-controle-por-gestos/ | * http://www.stylourbano.com.br/bracadeira-myo-o-futuro-do-controle-por-gestos/ | ||
*https://www.leapmotion.com/ | * https://www.leapmotion.com/ | ||
* http://www.significados.com.br/software/ | |||
* http://kinectforwindows.codeplex.com/ | |||
* http://kinectforwindows.codeplex.com/SourceControl/latest#v1.x/ToolkitSamples1.6.0/C#/SlideshowGestures-WPF/MainWindow.xaml.cs | |||
Edição atual tal como às 17h48min de 16 de setembro de 2015
Conceito
- O que é?
- É a ação de controlar máquinas, geralmente computadores, por meio de gestos corporais, como os das mãos, olhos, cabeça, voz e outros.
- Porque é interessante?
- Permite uma interação homem-máquina mais natural, um modo diferente de controlar interfaces. Seja por meio do touchscreen, captação de movimento através de cameras ou joysticks.
- Quais as características marcantes?
- A alta aplicabilidade, podendo ser utilizada em qualquer área, desde jogos até ao aprimoramento da medicina.
- Como está o Brasil neste segmento em termos de pesquisa?
- Há algumas pesquisas nesta área, porém não existem softwares totalmente brasileiros ainda.
Software
- Qual o papel do software?
- Um software é uma sequencia de instruções que são interpretadas por um computador e passadas para um hardware.
- Como funciona?
- Neste caso, todos os softwares são privados, utilizados pelas empresas para lucro, desse modo não é possível obter informações mais específicas sobre o seu funcionamento. Recentemente a Microsoft disponibilizou exemplos do código do kinect.
- Exemplo: No fragmento de código abaixo é feito o reconhecimento do corpo da pessoa que está utilizando o Kinect.
- /// <summary>
- /// Handler for skeleton ready handler.
- /// </summary>
- /// <param name="sender">The sender.</param>
- /// <param name="e">The event args.</param>
- private void OnSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
- {
- // Get the frame.
- using (var frame = e.OpenSkeletonFrame())
- {
- // Ensure we have a frame.
- if (frame != null)
- {
- // Resize the skeletons array if a new size (normally only on first call).
- if (this.skeletons.Length != frame.SkeletonArrayLength)
- {
- this.skeletons = new Skeleton[frame.SkeletonArrayLength];
- }
- // Get the skeletons.
- frame.CopySkeletonDataTo(this.skeletons);
- // Assume no nearest skeleton and that the nearest skeleton is a long way away.
- var newNearestId = -1;
- var nearestDistance2 = double.MaxValue;
- // Look through the skeletons.
- foreach (var skeleton in this.skeletons)
- {
- // Only consider tracked skeletons.
- if (skeleton.TrackingState == SkeletonTrackingState.Tracked)
- {
- // Find the distance squared.
- var distance2 = (skeleton.Position.X * skeleton.Position.X) +
- (skeleton.Position.Y * skeleton.Position.Y) +
- (skeleton.Position.Z * skeleton.Position.Z);
-
- // Is the new distance squared closer than the nearest so far?
- if (distance2 < nearestDistance2)
- {
- // Use the new values.
- newNearestId = skeleton.TrackingId;
- nearestDistance2 = distance2;
- }
- }
- }
- if (this.nearestId != newNearestId)
- {
- this.nearestId = newNearestId;
- }
- // Pass skeletons to recognizer.
- this.activeRecognizer.Recognize(sender, frame, this.skeletons);
- this.DrawStickMen(this.skeletons);
- }
- }
- }
Aplicação
- Cite as situações onde podemos usar esta tecnologia?
- Ela pode ser utilizada em jogos interativos (para diversão), jogos sérios (para aprendizado), reabilitação, deslocamento e computadores em geral.
Tecnologias
- Quais tecnologias são usadas?
- Um sistema operacional, geralmente Windows, Mac ou Linux , câmeras ou sensores para a captação do movimento.
- Cite alguns hardwares possíveis de serem usados?
- Alguns hardwares comumente usados são os joysticks, as câmeras para a captação do movimento tanto corporal quanto dos olhos, o kinect e o Leap Motion. Recentemente foi desenvolvida uma pulseira que capta atividades elétricas do músculo e assim controla os aparelhos.
- Como o software conversa com o hardware?
- Cada empresa tem a sua forma de desenvolver o software e o hardware, logo informações específicas sobre eles não são de domínio público.
Estado da Arte
- Cite alguns exemplos de uso mais recente desta tecnologia
- Como é uma tecnologia recente, todos os seus usos também são recentes. Ela é mais utilizada para jogos interativos e controle de computadores, porém vem sendo fortemente testada na área de reabilitação.
Referências
- http://olhardigital.uol.com.br/noticia/sistema-de-controle-por-gestos-e-finalizado-e-comeca-a-ser-entregue-este-ano/42509
- http://oglobo.globo.com/sociedade/tecnologia/no-estilo-minority-report-microsoft-mostra-tecnologia-de-controle-por-gestos-15910492
- http://gizmodo.uol.com.br/leap-motion-v2/
- http://www.stylourbano.com.br/bracadeira-myo-o-futuro-do-controle-por-gestos/
- https://www.leapmotion.com/
- http://www.significados.com.br/software/
- http://kinectforwindows.codeplex.com/
- http://kinectforwindows.codeplex.com/SourceControl/latest#v1.x/ToolkitSamples1.6.0/C#/SlideshowGestures-WPF/MainWindow.xaml.cs