aarchangel64 / Track-O-Tron

Semester Long Design Project for NYU Tandon EG-1003

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Track-O-Tron

Track-O-Tron is a full-body VR tracking solution that uses LSM9DS1 Inertial Measurement Units (IMUs) integrated into clothing for inside-out full-body tracking.

This project was created as a Semester Long Design Project for NYU Tandon's EG-1003 course.

Requirements

  • PlatformIO for compiling the Arduino code
  • CMake for compiling the PC code

Building

PlatformIO (Arduino)

Enter the platformio/ subdirectory and open it in your PlatformIO IDE of choice, or build it using the PlatformIO CLI.

Circuit Wiring

Wiring Diagram

Connect each IMU's SPI pins to the hardware SPI pins on your microcontroller (pins 50, 51, and 52 for the Arduino Mega pictured above). All IMUs share a single SPI bus, so all MOSI pins from every IMU will be connected together, and likewise for all MISO pins. Note that there are two MISO pins on LSM9DS1s for accel/gyro and mag, both of these lines will be connected together!

In order for multiple peripherals to share an SPI bus like this, Chip Select (CS) lines are controlled by the MCU, so that only one IMU at a time will be communicating over SPI. Connect each IMU's seperate accelerometer/gyroscope and magnetometer CS pins to their own digital pin on the MCU.

Make sure to update the 'imus' array in platformIO/src/main.cpp to match which CS pins you are using! The CS pin order is {accel_cs_pin_, mag_cs_pin}. So the array for the schematic above looks like this:

LSM imus[] = {
    {28, 27}, // IMU 0, which could be e.g. forearm_r
    {30, 29}, // IMU 1, which could be e.g. forearm_l
    {32, 31}, // IMU 2
    {34, 33}, // IMU 3
    {36, 35}  // IMU 4
};

See LSM9DS1 module documentation from Adafruit and Sparkfun for more details.

About

Semester Long Design Project for NYU Tandon EG-1003


Languages

Language:Python 71.5%Language:C++ 23.7%Language:CMake 4.8%