140 likes | 227 Views
Swish Sleeve Software Design Narrative. Team 7: Stephen MacNeil, Michael Kobit , Sriharsh Achukola, Augustus Hong. Project Overview .
E N D
Swish SleeveSoftware Design Narrative Team 7: Stephen MacNeil, Michael Kobit, Sriharsh Achukola, Augustus Hong Team 7 - Swish Sleeve
Project Overview We would like to design and implement a series of sensors that can be attached to the arm with Velcro straps. Basketball players would wear these straps to track their motion, without the use of cameras. This prevents current occlusion issues inherent in optical motion capture. The sleeve can be extended to other sports as well and beyond the scope of this class could be extended to an entire suit which could monitor sports performance in athletes. With the help of OpenGL the movement can be recreated in simulation. Team 7 - Swish Sleeve
Basic Idea Team 7 - Swish Sleeve
Block Diagram Team 7 - Swish Sleeve
Software Overview • PIC32, Embedded C • 80 MHz clock • Sampling of IMU’s is 100 Hz • Event-driven/polling • Every .01 s the IMU’s will be polled and data transmitted to base station via XBee • Every 5 s the LCD screen will be updated • Every 30 s the Battery monitor will be polled • Atom board (base station) – C++ and OpenGL
Main Loop – Waist Unit .01 s gone by? Yes No Wait Receive IMU Data Apply Kalman Filter and update states Yes 5 s gone by? Update LCD display No 30 s gone by? Yes Update LCD display No Transmit data to base
Main Loop – Waist Unit Wait No Xbee waist data ready? No Time to Refresh? Yes Read data transmitted from waist Update 3D model Yes Draw 3D Image
IMU and filtering • Communicate with I2C up to 400 kHz clock • Data will be read every .01 s • X,y,z data each 2 bytes (both accel and gyro) • Kalman states for each IMU • X,y,z position • X,y,z velocity • Update current state of each IMU based on measurement and past state
LCD • Write and read mode • Enable Cycle Time – 400 ns • Most instructions take 37 us • Clear display and return home take 1.52ms • We will not use read functionality
Battery Monitor • 1-wire interface • Remaining Active Absolute Capacity (RAAC) [mAh] • 2 bytes • Interface operation • Normal – 16 kbps => 2 bytes every .001 seconds • Overdrive – 140 kbps => 17.5 bytes every .001 seconds • Not extremely time critical, can read the bits when the micro has time
XBee – Transfer • Configure XBee network ID and communication channel to avoid receiving information from other modules in the lab • Operate XBee in simple transparent mode • Baud Rate: 9600 bits/s • Serial data comes in on one end and comes out the other • Code should be interrupt driven, to allow faster data transfer rate • Transmit interrupts occur when XBee is asking for more character to send
XBee – Receive • Receiving XBee connected to the atom board through the XBee Explorer • USB interface • FTDI drivers on PC allows treating USB connection as standard PC serial port • Received data can then be obtained through the SerialPort class in C++
Atom Board – 3D Output • Written in C++ and OpenGL • Atom board’s graphic support limits refresh rate • Aiming for 15-30 frames per second • Refresh rate of less that 60 fps is visibly noticeable • Packets from XStick unpackaged and used to update 3D model