Construir capturadores de movimiento

Saludos a toda la comunidad,

Es para mi algo muy interesante entrar a este mundo de Arduino, ya que me gusta mucho la programación y tambien la electrónica, por parte de la programación estoy en un desarrollo de un videojuego, como todos saben en un videojuego en la parte de los personajes se necesitan animaciones, muchasanimaciones, a veces no todo se consigue en internet, por que las animaciones son muy especificas, entonces pense en comprar un kit para capturar el movimiento de una persona para animaciones 3D, son pocos los que venden y muy caros tambien, por esome surgio la idea de crear ese kit con la tecnologia actual, sabiendo que me gusta la programacion y el lenguaje que maneja Arduino noto mucha similitud con C++ lo que me anima mas, entonces para construir este kit necesitaria alrededor de 20 sensores, he averiguado que con el MPU 6050 que es el giroscopio y acelerometro podria lograrlo, lo que me gustaria saber es:

  1. Para construir un sensor con un circuito MPU 6050 como podria hacer que envie datos ya que obviamente debe ser sin cables por que cada uno se adhiere a una parte del cuerpo que se va a mover, creeria que por bluetooth puede ser, pero no se que otros componentes debe acompañar a este circuito aparte del que transmite la informacion por bluetooth u otro metodo inalambrico.

  2. Si cada sensor contiene un circuito MPU 6050, no se si un mismo circuito Arduino podria capturar los datos de los 20 sensores que transmitiran su informacion.

  3. Como podria desarrollar el software para que capture estos datos (20 o mas sensores), y si es posible hacer que en una app nativa de C++ con librerias de Arduino pueda capturar los datos para procesarlos graficamente.

Espero haber sido lo mas claro posible, si desean aqui hay un video que muestra lo que quiero lograr Xsens 3D Motion Capture System with Inertial Sensors - YouTube si desean adelantenlo al min 1:00

Gracias cualquier aporte será bien apreciado.

Bienvenido al foro Arduino.

Según el manul del MPU6050 debes hacer esto:

Using more than two MPU-6050 sensors can be achieved by connecting each of the AD0 pins to a separate output of the Arduino." What does this output refer to?

The output of a 5V Arduino can not be used. In that case a voltage divider or level shifter for 3.3 volts on each of the outputs is needed." Voltage divider can be implemented. However, I am not able to make the connections like how to connect the output 3.3V to the output (referred in the first clause above).

"Suppose all AD0 lines are default high (3.3V), so every MPU-6050 is I2C address 0x69. That I2C address is however never used ! The Arduino makes one of the AD0 lines low, and uses that sensor at I2C address 0x68. After that is finished, the Arduino selects another AD0 line, and can use that sensor." I know how to make a line LOW. However, this can only be accomplished once the connections are clear.

quitando la
Entonces basicamente esa explicación es por si usas un Arduino de 5V pero si usas un arduino de 3.3V no tienes nada que modificar.

Ahora bien, dejemos ese tema pero solo recuerda que un pin del Arduino debido debe controlar ese pin AD0 y cuando lo actives entonces uno de tus 20 MPUs será el que responda a las peticiones correspondientes.

Cual es el problema? Que tienes que hacer esto por cada uno de los 20 MPUs de modo que si la lectura te lleva un tiempo T, entonces demorarás 20T para tener todas las lecturas.

Puedes mejorar eso? Claro, mas Arduinos controlando menos MPUs.
Pero todo requiere energía, o sea baterías.

Mi consejo es que uses algo como ESP8266 o MKR1XXX para la tarea, son 3.3V y pueden alimentarse con baterías de litio que dan buena capacidad.

Es un primer enfoque. Veamos que sugieren otros a tu idea. Si me dices que la persona estara sin moverse en un asiento ya es otra cosa porque no hará falta la parte inalámbrica.
Usar BT tmb es posible. A mi no me gusta tanto porque todo lo que sea BT esta restringido a un máximo de 115kbps o mejor en algunos casos.

¡Gracias!,

Me bastaia con solo un circuito Arduino UNO o con cuantos ?, para armar un sensor bastaria con el MPU6050 y el circuito ESP8266 y baterias, que mas necesitaria?

Gracias

Yo tengo dudas, que funcione, porque no hay una referencia absoluta de posicion. Se estaría calculando la posicion por deriva y pequeñas diferencias producen grandes errores acumulados.
Saludos

Bueno, no había visto el video y estoy de acuerdo con lo que dice @PeterKantTropus

Un par de ideas a considerar

1 IDEA

20 MPUs con nRF24L01 y un arduino que podria ser un ATtiny85 o similar

Del otro lado habría que hacer pruebas suponiendo que cada Sensor podria almacenar algunos datos tanto como para dar tiempo a procesar todo junto.

2da IDEA
Un arduino podría ocuparse de 5 Sensores porque curiosamente eso es lo que en la topologia nRF24 esta como primer nivel.

Todo eso hay que verlo con tiempos para ver si es o no posible.

3ra IDEA
Por supuesto queda la opción de que cada sensor envíe datos a un receptor y luego esos receptores junten la información para que la PC lo procese o que cada sensor envie los datos por WIFI a través de UDP y que la PC los reciba.

Gracias a ambos @PeterKantTropus y @surbyte

por su aporte, ya que no se en absoluto nada de arduino y como lo dije antes, seria un buen comienzo, entiendo que no se tomaria una posicion de referencia, nno se si calibrando los sensores en una posicion estatica, pues en el momento compre 5 circuitos MPU 6050 y un Arduino One 5v, no se cual de las ideas que me dio @surbyte seria la mejor por que como dije no se mucho sobre arduino, que piezas mas deberia comprar.

Gracias

Creo que cada sensor debería estar microprocesado ( y algo verdaderamente rápido). Como la posición se obtiene por un calculo de deriva, no creo que funcione un sistema distribuido, en los que sensores informen los datos en crudo, deberían informar la posición calculada. Cuando mas se aleje en el tiempo de la rutina de calibración, o los movimientos sean mas bruscos, aumentara la diferencias con la posición calculada.
Sobre el vídeo tengo mis dudas, sobre todos los que no están hechos de una toma, si se fijan no muestran las rutinas de calibración y los movimientos son pausados. En el único momento donde se ve una explosión de actividad es cuando saltan el aro de basquetbol, ese debe ser el limite del sistema entre calibraciones con movimientos bruscos.

Necesitas investigar lo máximo posible sobre como funcionan esos equipos. Conocer la idea base y luego ver si con los elementos disponibles se puede repetir y con que limitaciones.
Es un proyecto complejo.

Sin ánimo de ofender, tienes las habilidades para mezclar tantas cosas, hablo de Arduino/Esp8266, sensores enviar datos por Radio/WIFI, procesarlos luego en una PC y generar una animación?

Es mucho trabajo para una sola persona, al menos si tuvieras un grupo, alguien que se encargue de los sensores y otros trabajando en el procesamiento.

Gracias, @PeterKantTropus y @surbyte,

En el momento la parte de animacion no hay problema, si tendria una ayuda para ambos casos de la parte de sensores y el procesamiento, por lo que entiendo entonces ovbiamente necesito baterias para los sensores que van a estar adheridos al cuerpo, entonces por cada sensor debe haber un Esp8266, osea es que no entiendo como deberia ser la estructura de cada sensor, por ejemplo (solo eso un ejemplo es obvio que no es asi) un sensor compuesto por un MPU6050, un Esp8266 otro cirtuito xxxx que conecta estos 2 cirtuitos, baterias, y estos se conectan a un Arduino quien envia los datos inalabricos al pc, dejo una imagen adjunta para expresar otro ejemplo pero la idea estener la estructura y evaluar que es viable, espero asus valiosos aportes, gracias

estructuraa.png

Busca en Google " navegación inercial arduino" para ver los problemas a los que te enfrentas. Te aconsejaria un arduino con cable USB y el MPU6050 e intentar lograr que funcione, el resto en comparación es pan comido.

Si el receptor si seria el que trae cable

Ohh gracias por decir que los sensores van con cables.. jaja y yo hablando de WIFI o RF.
Tiempo perdido.

No no no, si se necesita en algun punto el wifi o RF, ese es el punto donde en que parte de esa estructura ponerlo, disculpa aveces no me se expresar muy bien :frowning:

Asi como se ve en esta imagen es algo de lo que desearia, pero no se si es lo correcto o viable

estructuraa.png

estructuraa.png

Cuando dije que

Ohh gracias por decir que los sensores van con cables.. jaja y yo hablando de WIFI o RF.

Es porque pensé que no habia interfaz WIFI o RF pero veo que si. Cada vez me confundo mas.

Observaciones a la topología planteada:
El esquema que presentas tiene dos errores del lado receptor y del lado emisor (1 en cada sección).
Los ESP8266 pueden manejarse sin Arduino y como vas a leer sensores I2C mejor hacerlo directamente. Pasar de un Arduino a un ESP implica perdida de tiempo.

por otro lado del lado de la PC lo mismo. El ESP no requiere de nuevo el uso de un ARduino para comunicarse con la PC.

Asi que se te simplifica y ganas tiempo.

Entonces por lo que entiendo en la parte del emisor( como la parte donde de los sensores conectados a un punto y luego envian datos) no es necesario el arduino ? ellos pueden enviar datos a traves del ESP?

Por partes.
SI usas algo con RF si necesitas arduino.
SI usas un ESP8266 no necesitas.

gracias @surbyte

Ok, vi algo que me parece puede ayudar un tal "Sensor Shield V2" para Arduino Mega, que tra mas conectores no se que tantos, ahora seria bueno conectar todo a un aruido y enviarlo por wifi y la pc lo recibe por el mismo y procesa la informacion, que tal suena?

Suena que solo es un conector mas cómodo y nada mas. No te va a ayudar en nada, porque es lo mismo que harías por tu cuenta para unir los sensores.

Seguimos dando vueltas sin tener especificaciones. Sin ellas esto puede debatirse por siempre.
Dime que es Tiempo Real para ti... los 20 sensores deben reportarse en que tiempo a la PC y vayamos viendo que se puede o no cumplir con lo que estamos conversando.

gracias , Ok entiendo y me disculpo, mis errores de principiante....

La velocidad pues por lo que es en tiempo real deberia ser lo mas rapido o no importaria si se demora un poco, desde que digamos todos transmitan sincronizado,

Estoy viendo algo que mencionaste, sobre el ESP y es que ellos pueden enviar datos a un servidor o algo asi, no se si por cada MPU deberia haber un ESP.

Creo que no me comprendes, por lo que intentaré ser mas descriptivo con mi línea de análisis.

Siguiendo el lado de pensamiento de @PeterKantTropus te propongo este sencillo ejercicio o proyecto de fiabilidad:

  1. Tomas un MPU6050, mas un arduino, el que sea o tengas a mano. No va a cambiar mucho usando I2C.
  2. Buscas la libreria MPU6050 y corres un sketch ejemplo que te de los datos que buscas.
  3. A ese código le vas a agregar la medición de cuanto tiempo tarda en realizarse una o 100 lecturas como gustes. Con millis() por supuesto.

Empieza por una lectura de todos los datos necesarios y con ese dato que espero sean pocos mseg debatiremos donde estamos y que línea de trabajo seguir.

Ese dato T te dirá cuanto tardas en relevar 1 sensor. Qué pasa con 20? Demoramos 20T ahora 20T es viable o esta fuera de nuestro RT (real time) y aun le falta procesamiento y envio de datos wireless.

Espero que ahora sea mas claro lo que pienso?