Swish SleeveSoftware Design Narrative
Team 7: Stephen MacNeil,
Michael Kobit, Sriharsh Achukola,
Augustus Hong
1Team 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.
2Team 7 - Swish Sleeve
Basic Idea
3Team 7 - Swish Sleeve
4Team 7 - Swish Sleeve
Block Diagram
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
Receive IMU Data
Apply Kalman Filter and update states
.01 s gone by?
5 s gone by? Update LCD display
30 s gone by?
Update LCD display
Transmit data to base
Yes
Yes
Yes
No
No
NoWait
Main Loop – Waist Unit
Read data transmitted from waist
Update 3D model
Time to Refresh? Yes
Draw 3D Image
Xbee waist data ready?
No
Wait
No
Yes
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
Questions?
Top Related