Jump to content

Prototipo Head Tracker con Arduino: funcionando!


Nakon
 Share

Recommended Posts

Hola!

Como soy un pesao de los que no se pueden estar quietos, he seguido jugando con el Arduino en otros inventos.

Entre otras cosillas (que ya os diré, si consigo algo decente), empecé a trastear para ver si podía hacer algo similar a un TrackIr.

Buscando por ahí, vi que alguien lo había conseguido y que incluso estaba integrado en FaceTrackNoIr (se llama Inertial Tracker).

Eso sí, lo venden a unos 100 euros (que para eso, por un poquito más te pillas un TrackIr "de verdad", digo yo).

El caso es que, al menos, esto demostraba que se podía hacer.

Era "sólo" cuestión de saber cómo.

 

Hasta ahora estaba con el Freetrack con un mando de la Wii.

Se obtienen buenos resultados y es fácil de hacer.

Y barato (si tienes wii, claro).

La verdad es que estoy bastante contento con él.

Pero ahora que el churrumbel empieza a jugar con la Wii y se ha apoderado del mando... :joy:

En fin.

Donde hay patrón, no manda marinero je,je,je

 

Así que me puse a investigar.

 

Usando un gyro con acelerómetro y un poco de programación básica, conseguí hacer un prototipo que funcionaba como un ratón.

Es decir, hice una plaquita con dos pulsadores con las mismas funciones que los botones de un ratón y que si mueves la plaquita, se mueve el cursor en la pantalla.

Bueno, y "por si acaso" un tercer botón que activa y desactiva el funcionamiento del invento (para controlar que no se desmadrara el experimento ja,ja,ja)

Esto realmente no tiene ningún misterio :wink:

Mezclando en el programa un par de los ejemplos que vienen con el propio Arduino, se consigue rápidamente.

Y con librerías de libre distribución que existen (FreeIMU no tiene desperdicio :crack: y habrá que seguir exprimiéndolo porque las posibilidades son increíbles: pedazo de invento :crack: :crack: ) se manejan estupendamente los datos de los gyros y acelerómetros, y se pueden interpretar casi de cualquier manera que se necesite de forma sencilla.

Sobre esto, además, tengo que decir que otro de mis vicios es el aeromodelismo :flyer:

Y en ese mundillo hace tiempo que se han desarrollado cosas similares (si no iguales) aprovechando estas librerías, para mover una cámara instalada en un avión (por ejemplo) o directamente controlar los movimientos de un avión.

Ahora está muy de moda también con el tema de los drones y tal.

Todo esto, me vino muy bien para investigar y empezar a ver por donde van los tiros... :hunter:

En RCGroups, el foro de aeromodelismo por antonomasia ja,ja,ja, hay varios hilos muy concretos y muy buenos sobre el tema, que explican todo lo necesario para estos menesteres.

En otros foros también encontré información de explerimentos similares pero para hacer algo parecido a un mando de wii con Arduino.

En resumidas cuentas, si se busca por ahí, se encuentran diferentes aproximaciones a una misma idea: un sensor detecta movimiento y Arduino lo interpreta y "hace algo" con ello.

 

Ya me estoy liando otra vez... :oops:

Bueno, conseguido el "efecto ratón" con mi invento, ya se podían controlar las vistas en simuladores como el Il-2.

Incluso un poco en BMS (podía "dejar pulsado" por código el "botón derecho" del invento para que funcionara con las vistas).

Pero para qué mentir: de forma muy tosca y muy poco amigable.

Más bien, nada :cabreo:

Como curiosidad o experimento, estaba muy bien y era muy efectista, pero usable... no.

Así que empecé a buscar formas de afinarlo.

Encontré algunos filtros (por código) que suavizan bastante el movimiento.

Pero ya puestos, lo suyo también sería poder "hacerlo pasar" por alguno de los programas existentes que gestionan funcionamientos de este tipo, como Freetrack, FaceTracknoIr, etc...

Así que estuve buceando por ahí una vez más... y al final encontré (un poco escondido) que un menda había conseguido el objetivo en toda regla! :shock:

O sea, un head tracker totalmente funcional de verdad, con Arduino.

De forma fácil, efectiva y estable.

No moviendo el ratón y con ello las vistas.

Sino que directamente funciona como un track reconocido por FacetracknoIr a todos los efectos: pudiendo además gestionar curvas de respueta, profiles, etc... :shock: :shock:

De hecho, hasta hay una dll para meter en la carpeta de FaceTrackNoIr y de esta manera el programa reconoce al invento como controlador independiente y seleccionable, con sus propias características y tal :shock: :shock: :shock:

 

Y no sólo eso, sino que este tio (que habría que ponerle una estatua :crack: :bravo: ) ha publicado cómo montarlo, todo el código necesario,... vamos, prácticamente un "paso a paso" sencillísimo!

Tanto, que al verlo comprobé que tenía todo lo necesario, me puse a hacerlo... y en media hora lo tenía funcionando en BMS!!!!!!!!!

 

:flyer: :grupo: :chulo: :birras: :lol2:

 

Lo que yo tenía montado... pues viendo los resultados que da el método de este hombre, lo he desechado instantáneamente :mrgreen: ja,ja,ja

Bueno, la parte "hardware" (montar el Arduino con la plaquita de gyro+acelerómtero), que es lo más sencillo de todo, es la misma, evidentemente.

Pero el código, literalmente, lo he copiado, pegado y volcado en mi Arduino tal como lo he bajado de internet.

Y funcionando del tirón a la primera :lol:

Lo mejor es el coste total del cacharrín je,je,je

Es de risa!!!!

En esto entraré más adelante :wink:

 

No me he puesto todavía a ajustar curvas y demás en FaceTrackNoIr, pero por ahora, sin haber tocado nada, el resultado es prometedor (tirando muy por lo bajo).

Esta tarde o mañana os pondré más información y datos.

Y una cutre-prueba que he grabado con el móvil anoche mismo, nada más ver que funciona.

Ya os digo que es sin ajustar curvas ni nada de nada, pero para dar una idea inicial, sirve.

 

Tiene 3 ejes (pitch, yaw y roll).

El zoom no está implementado :roll:

Aunque estoy pensando en una forma de conseguirlo con otro sensor diferente en el mismo Arduino...

Bueno, ya veremos :loco:

 

Por ahora no os doy más la brasa.

Sólo quería presentaros el nuevo experimento.

Yo estoy encantado! ja,ja,ja

 

Seguiremos informando.

 

Saludos!

Link to comment
Share on other sites

Una foto del prototipo usado para la prueba:

DSC_0155.jpg

 

 

 

Como podéis ver, el Arduino está sujeta a la protoboard con papel de celo ja,ja,ja,

Realmente sólo he usado aquí la protoboard como base.

Lo mismo podía haber usado un cacho de cartón o cualquier cosa.

Empleé la protoboard porque es lo que tenía delante cuando lo monté je,je,je,je :mrgreen:

 

 

 

Por cierto:

para que os hagáis una idea del tamaño del cacharrín, tened en cuenta que el USB que se ve a la izquierda es de los tipo "mini" (vamos, como cualquier teléfono móvil de los de ahora).

Bueno, a ver si llego a casa y subo el cutre-video, que aunque está grabado con el móvil, al tener referencias el tamaño se aprecia mucho mejor.

 

Saludos!

Link to comment
Share on other sites

Mooola. Puede ser muy util para integrar en un casco, sin necesidad de infrarrojos ni nada.

¡Pásate los enlaces! Jajaja

 

Ese Arduino ¿es el micro?, que ese cuesta un pastizal y el shield de accelerometro ¿por cuanto sale?

 

Como nos juntemos un día, ¡arde Troya! Y si metemos a Dragun ¡arde todo el Peloponeso!

Bueno, lo de siempre ¿no?... 20 millas y al turrón.

http://www.victor-pozo.com/imagenes/Otras/Red-4.jpg

Link to comment
Share on other sites

ja,ja,ja,ja

 

Pues a ver si es verdad que juntamos ideas y montamos una del cagalse :mrgreen: :mrgreen:

 

El Arduino es un Leonardo, y el gyro+acelerómetro es el GY521.

Ambos elementos son bastante baratos.

Sobre todo si se compran en tiendas chinas.

El leonardo unos 6 euros y el GY521 unos 3 euros.

Vamos, para echarse a reír.

Yo hice un pedido de varias pijadas para probar inventos... y viendo que poco a poco van funcionando (ante mi propio asombro :shock: ), voy a hacer otro pedido con más pijadas :lol2:

Eso sí, lo mismo te tarda un mes y medio en llegar...

 

En fin, lo prometido es deuda:

Aquí está el cutre-video de marras.

 

Como os decía, lo grabé con el móvil y no se ve muy bien.

Y muevo el cacharrín con la mano para que se vea.

Además, las curvas de sensibilidad y demás de FaceTrackNoIr están sin tocar,...

En fin, que es sólo para hacerse una idea a groso modo.

He tratado de dar "una vuelta" por el cockpit para que se vea la respuesta del cacharro más o menos.

Y luego he hecho zoom (con el ratón) para que se aprecie lo estable que es al detener la vista en algún punto con los instrumentos cerca:

 

 

Saludos!

  • Like 1
Link to comment
Share on other sites

Muy bueno el video. :birras:

Eso es ideal para un pitbuilder porque, aunque no tenga zoom, con un pit completito, no te hace falta. Tienes tu vista. Sino para ver los instrumentos necesitas el zoom, y la rueda del ratón no es viable.

 

Pues pillaré algo de eso hacer hacer pruebas ¡Ya te estás pasando el código y la web de donde salió! :twisted:

 

PD: Me ha molado ese cable USB plano… a ver si lo encuentro ¿las cosas son de DX, de Tinydeal o de donde? :wink:

Bueno, lo de siempre ¿no?... 20 millas y al turrón.

http://www.victor-pozo.com/imagenes/Otras/Red-4.jpg

Link to comment
Share on other sites

El leonardo y el gy521 son de una tienda china de ebay.

Luego te pongo el enlace.

El cable plano de un todo a 100 que han abierto delante de mi curro

Mola, pero para esto es corto

Lo del zoom... Hay que conseguirlo, leche

Luego os cuento la idea que tengo para implementarlo en el cacharrito.

Creo que puede funcionar, pero tengo que pedir a la tienda china esa de ebay un sensor que cuesta un euro y medio, y funcionaría como un eje de joystick, y por tanto asignable al zoom en el setup de bms

Ya veremos...

Link to comment
Share on other sites

ja,ja,ja,ja

 

Pues a ver si es verdad que juntamos ideas y montamos una del cagalse :mrgreen: :mrgreen:

 

El Arduino es un Leonardo, y el gyro+acelerómetro es el GY521.

Ambos elementos son bastante baratos.

Sobre todo si se compran en tiendas chinas.

El leonardo unos 6 euros y el GY521 unos 3 euros.

Vamos, para echarse a reír.

Yo hice un pedido de varias pijadas para probar inventos... y viendo que poco a poco van funcionando (ante mi propio asombro :shock: ), voy a hacer otro pedido con más pijadas :lol2:

Eso sí, lo mismo te tarda un mes y medio en llegar...

 

En fin, lo prometido es deuda:

Aquí está el cutre-video de marras.

 

Como os decía, lo grabé con el móvil y no se ve muy bien.

Y muevo el cacharrín con la mano para que se vea.

Además, las curvas de sensibilidad y demás de FaceTrackNoIr están sin tocar,...

En fin, que es sólo para hacerse una idea a groso modo.

He tratado de dar "una vuelta" por el cockpit para que se vea la respuesta del cacharro más o menos.

Y luego he hecho zoom (con el ratón) para que se aprecie lo estable que es al detener la vista en algún punto con los instrumentos cerca:

 

 

Saludos!

CAGO EN LA PUTA , CAGO EN LA PUTA ....acabas de conseguir que mi casco de vuelo controle las vistas y que el trackir no este pegado por ningun lado ....... :bravo: :bravo: :bravo: :bravo:

Link to comment
Share on other sites

Hale, pues ya he pedido, jeje :D

 

PD: si cambiais esos enlaces el .com por .es te estima los € y gastos de envío (n este caso da igual). Funciona con todos los enlaces de ebay

Bueno, lo de siempre ¿no?... 20 millas y al turrón.

http://www.victor-pozo.com/imagenes/Otras/Red-4.jpg

Link to comment
Share on other sites

Coño Mr Well, que rapidez :shock:

 

Aprovecha el pedido para pedir más cosillas, hombre.

Que está a precio de chiste, y luego te arrepientes de no pedir más pijaditas.

Yo hice un pedido con casi lo justito y luego me arrepentí...

... y voy a hacer otro, con por lo menos 3 o 4 leonardos ja,ja,ja,ja (el ICP que tengo por otro hilo, y algún invento más que ya os contaré...).

Varios GY521, protoboards con cablecitos de conexión (para no soldar ni un cable), pins machos y hembras,... en fin un poco de todo.

Por 20 ó 25 euros te llevas un quintal de cosas :wink:

 

Luego tarda un mes o mes y medio en que te llegue, y es entonces cuando te acuerdas de nosequé que te falta para algún invento ja,ja,ja

 

Por ejemplo, tienen un lote de 10 sensores hall por 2,14 $ (una auténtica ganga!!!). Los que hayáis indagado un poco en joys y pedales DIY sabréis lo que es esto. Están prácticamente regalados!

 

Concretando más en este proyecto, no estaría mal pillar una protoboard para hacer prototipos (esta es la mía, la que podéis ver en el vídeo, que además viene con un montón de cables):

http://www.ebay.com/itm/310513842038?ss ... 1497.l2649

 

Pins hembra para poner en placas y luego no tener que soldar (ahí pinchas los "finales" de los cables):

http://www.ebay.com/itm/200924888625?ss ... 1497.l2649

 

Pins "macho" que nunca está de más y sirven para mogollón de cosas:

http://www.ebay.com/itm/180974247480?ss ... 1497.l2649

 

Y, no sé, alguna cosilla más que me hiciera gracia por 3 ó 4 euros :mrgreen:

 

 

En el pedido que voy a hacer, para los cacharrines que estoy investigando, os adelanto que voy a incluir esto:

http://www.ebay.com/itm/New-ENC28J60-Et ... 4855606986

Esto:

http://www.ebay.com/itm/Ultrasonic-Sens ... 5d3f0ab38d

Y esto:

http://www.ebay.com/itm/3-2-inch-TFT-LC ... 2ec7195ccd

 

jia,jia,jia,jia (risa maléfica del malo de la película :mrgreen: )

Link to comment
Share on other sites

Buen trabajo tío.. Me tienes intrigado con lo del eje z... Te veo poniendo un sensor de ultrasonidos contra la pared jajaja

 

Enviado desde el móvil con Tapatalk.

 

 

ja,ja,ja,ja

 

Qué jodío!!!!!! :D :D :D

 

Me tienes calao!!!!! :mrgreen: :mrgreen: :mrgreen: :mrgreen:

 

Pues la idea es algo así!!!!!!

ja,ja,ja,ja

 

http://www.ebay.com/itm/Ultrasonic-Sens ... 5d3f0ab38d

 

Contra la pared no, directamente contra el monitor o lo que sea que tengas delante.

Ya que no creo que entre tú y el monitor haya nada que pueda confundir al sensor.

La idea básica (muy básica, que todavía no tengo el sensor para probarlo) es:

Lo que entrega el sensor al Arduino en un pin digital es un valor numérico, muy fácilmente interpretable (vamos, es más simple que el mecanismo de un peine).

Y si lo enviamos al PC con el HID de joy, tenemos un eje de joy.

El cual es directamente asignable en el simulador al zoom.

 

PD: Insisto: qué jodio estás hecho!!!! ja,ja,ja,ja,ja :plas: :plas:

Link to comment
Share on other sites

Pido poco por probar eso en concreto, ya tengo muchos gastos con el pit y no me quiero "distraer", además tengo una política de no comprar a gente con menos del 99,5% en eBay 8)

 

También pensé lo del sensor ultrasónico pero lo he desechado porque si haces zoom en un panel lateral no funciona, o sea, tendrías que mirar hacia el panel y acercarte al sensor, en vez de al panel en si. No es natural. Lo ideal sería implementar los 3 ejes que le faltan… Y supongo que será bien chungo jajajaj

 

El touchpad es caro. Hace poco pedí (ya me llegó) un touchpad multitouch USB para incluir en el pit como ratón "oculto" y me costó incluso menos. Y es un producto acabado, no un componente. Como este: http://www.ebay.es/itm/2-4GHz-LOFREE-MT ... cda&_uhb=1

 

 

Por cierto, ¿Es esto? http://sourceforge.net/p/facetracknoir/ ... 1cb2/#3c52

 

¿Lo has modificado tú (máquina) para el mini-leonardo?

 

Saludos

Bueno, lo de siempre ¿no?... 20 millas y al turrón.

http://www.victor-pozo.com/imagenes/Otras/Red-4.jpg

Link to comment
Share on other sites

Sí, el enlace es ese :wink:

Lo único que hay que modificar son los pines a los que se conecta el GY251 al arduino, ya que en el leonardo son otros (2 y 3 :wink: )

Y ya está!

 

Voy a colgar un "paso a paso", que prácticamente el 90% es lo que se dice en ese hilo :wink: :wink: :wink:

 

Lo del zoom, para mi (con un solo monitor) me sirve.

Tengo otra idea para el caso que comentas (con otro gyro en la misma placa pero en otra posición y con algún cambio...) pero no he empezado ni a planteármela todavía seriamente :loco:

También me pillé otro modelo de sensor que es posible que por sí solo pudiera hacer algo similar (9DOF IMU) pero, sinceramente, casi no me he puesto con él.

 

Oye, de lo del touchpad que comentas no tenía ni idea!

Voy a echarle un ojo al enlace...

 

Realmente la pantallita que he puesto no es porque sea táctil, sino porque una "de las otras" que hay se queda corta para mis oscuros propósitos... jia,jia,jia.

Necesitaría una de 5 lineas con 25 caracteres y tan grande no la encuentro (lo más grande que he visto es 4 x 20).

Sí, para intentar hacer un DED con Arduino :mrgreen: :mrgreen: :mrgreen:

Pero eso sí que está totalmente en estado embrionario.

Y es un auténtico follón (FAST+SIOC+PYTHON+ARDUINO).

He hecho experimentos con FAST+SIOC+PYTHON para leer datos del simludor (y enviarle datos también), pero todavía tengo que profundizar mucho.

Link to comment
Share on other sites

Pues aquí va la guía rápida de cómo hacerse el invento.

 

Información sacada, sobre todo, de aquí:

 

http://sourceforge.net/p/facetracknoir/ ... /eced1cb2/

 

 

Ahí está todo lo necesario!!!

 

Hasta un breve "how to" que prácticamente es lo mismo que voy a poner yo a continuación (como dije a principio de este hilo, yo no he inventado nada)

 

Así que este es el proceso básico:

 

-Necesitamos un Arduino (yo diría que el Leonardo es lo más indicado, por tamaño, precio, prestaciones, uso para otras cosas,...)

http://www.ebay.com/itm/Leonardo-Pro-Mi ... 4853468c6a

 

-Un gyróscopo+gyro basado en el MPU6050 barato y fácil de encontrar. O sea, el GY521:

http://www.ebay.com/itm/6DOF-MPU-6050-M ... 2ecca73356

 

-Un cable USB-miniUSB para conectar el Arduino al PC :D

 

-Bajar de la web de Arduino el IDE (el programa para meter el código, compilarlo y volcarlo al Arduino).

En este momento, última versión es la 1.0.5

http://arduino.cc/en/Main/Software#toc2

 

-Conectar el Arduino Leonardo y el GY521.

Son sólo 4 cables. Así:

 

PINS ARDUINO LEONARDO ----- PINS G521

 

GND -----------------------------------> GND

VCC ------------------------------------> VCC

2 ---------------------------------------> SDA

3 ---------------------------------------> SCL

 

-Cuando conectemos el Arduino al PC, es importante saber en qué "COM" está conectado (lo necesitaremos para el IDE de Arduino y para el FaceTrackNoIr). En mi caso, por ejemplo, está en "COM24".

Así que tenemos que mirarlo, en el Administrador de dispositivos de Windows.

También es conveniente que, ya que hemos entrado en el administrador de dispositivos, modifiquemos un dato: los bits por segundo en la configuración del puerto. Por defecto, aparecerá el valor "9600".

Vamos a seleccionar "115200".

 

-Bajarse el programa TrackNoIr e instalarlo.

La última versión en este momento es la V170

http://facetracknoir.sourceforge.net/in ... wnload.htm

 

-Bajarse el siguiente archivo y pegarlo en la carpeta donde se haya instalado el FaceTarckNoIr

(esto hará que FaceTarckNoIr reconozca al cacharrín como controlador independiente con sus propia configuración, profiles,...)

http://sourceforge.net/projects/hatire/

 

-Bajarse el archivo "gy_512_send_serial_HAT_ITG_spring_reset.ino", de aquí:

http://sourceforge.net/projects/gy512fo ... oir/files/

Ese es el programa de Arduino listo para funcionar!!!

 

-Abrir el IDE de Arduino que bajamos antes.

Habrá que decirle al programa, antes de nada, el modelo de nuestro Arduino (que hay un quintal y el nuestro es el Leonardo) y el "COM" donde lo tenemos conectado, el que vimos en el administrador de dispositicos de Windows.

Abrir con este programa el archivo que acabamos de bajar (el .ino) y volcarlo en el Arduino Leonardo.

Una vez cargado el programa en el Arduino, es importante que tengamos encuenta una cosa:

CADA VEZ QUE SE CONECTE EL ARDUINO AL PC NO MOVER EL GY521 HASTA QUE PARPADEE EL LED DEL ARDUINO.

Tarda sólo unos segundos (quizás 5 ó 6) y es un tiempo que debemos darle al gyro cuando se inicia su actividad para que funcione correctamente.

Si alguno de vosotros ha volado un heli de 6 (o más) canales sabe a lo que me refiero sin tener que decirlo je,je,je

 

-Una vez volcado el código en el Arduino ya no necesitaremos el IDE, por lo que podemos cerrarlo.

 

-Abrimos el FaceTrackNoIr y en donde pone "Tracker Source(1st=Master)" debería aparecer "Head Arduino Tracker".

Lo seleccionamos.

 

-Pulsamos justo debajo en "Settings".

Aquí tenemos que seleccionar en "Serial Port" el mismo "COM" de antes ("COM24" en mi caso, por seguir el ejemplo).

Nos aseguramos que SOLO están seleccionado como habilitados los ejes de YAW, PITCH y ROLL (por ahora, es lo que hay...)

Dejamos las opciones de "Invert" desmarcadas.

 

-Pulsamos en "Save" y en "OK"

 

-Ahora, por fin, pulsamos en "Start".......... y funcionando!!!!!!

 

 

 

Falta, evidentemente, configurar curvas, definir combinación de teclas para centrado, asegurarnos que los ejes son los que deben ser y que no están invertidos,.... en fin, temas de ajustes.

 

Saludos!

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...

Important Information

Terms of Use