Rosina’a Status Update 12/9

This week I made more progress on the IMU. I finished integrating the fail-safe into our design and implemented the other z axis for the IMU movement. We are on schedule since the deadline is next and we are finishing up final touches. For the next week I plan to get the video and final report done and finish up anything small things that need to get done for the demo.

Sarah’s Status Update 12/9

This week, I mainly focused on preparing for the final presentation. We compiled all of our data from testing and created tables to show them in the slideshow. Additionally, I compiled a list of trade-offs that we faced throughout the iteration process as well as information on group studies we conducted. After the presentation, I helped create a final poster to show off our design and work throughout the semester, and made some finishing touches to the information presented as well as documenting the complete solution of our product. Next week, we will work on the demonstration as well as finishing up the final design report. We will also gather any information needed for these presentations as well as conduct any more testing necessary to meet design requirements. We are well on schedule for this week.

Team Status Update 12/9

This week, we worked on finalizing our code for the project. Rosina and Saumya worked on expanding the code for the IMU to the z-axis (decoupling x and z and creating separate Kalman filters for each), and flipping the direction of the z-axis. Sarah practiced and presented our final presentation slides and took the lead on making the poster, while Saumya and Rosina helped write the different sections of the software portion.

One interesting problem we solved was the failsafe triggering. We tried to make the failsafe interrupt the IMU to avoid as much drift as possible and “freeze” the mouse in place when the failsafe was let go. No considerable changes have occurred to our design, and we are seemingly on track with the rest of the project. There are no risks to us presenting what we planned to present in the demo.

To answer the ABET question:

Latency: To test our latency requirement, we manually started a timer while at the same time triggered one of the sensors on the glove. In this way, starting the timer would be manual, and the timer would stop when the gesture propagated through. We achieved an average of 40ms for keystrokes.

We noticed a ton of latency (on the order of seconds) when testing our mouse movements, so we tried to reduce the amount of calls to pyautogui and reduce the amount of computation. Specifically, if the mouse position did not change between IMU data arrivals, we didn’t call pyautogui. This improved latency of the mouse to below 1s.

Weight: Unfortunately, we were unable to reach our weight use case requirement, weighing in at ~20g over our budgeted weight. We prioritized battery life as it is more inconvenient for the user to recharge their device multiple times during a session. Additionally, 20g is not very significant in the realm of human detection. Because of this immense increase in battery life, we decided this trade off was well worth it.

Accuracy: To test accuracy, we conducted a user study in which we guided each user through all the available gestures on the glove. Participants were asked to carry out each gesture and we recorded whether this gesture produced the expected shortcut. We were able to achieve a 100% accuracy after many iterations of sensor positioning.

Wireless Range: To test wireless range, we slowly incremented the distance between the glove and the device it was paired to. For each ½ a foot, we triggered one of the sensors and recorded whether the desired gesture was produced. We found that the final distance that triggered a gesture was 3.05 meters (10ft).

Battery Life: To test battery life, we connected our product to a battery of known voltage, current, and battery capacity. We continuously sent out packages over Bluetooth until this battery ran out. Since we are using Bluetooth Low Energy (BLE), we were able to achieve a battery life of over 12 hours for a 5V, 2.1A, 10,000mAh portable charger.

Saumya’s Status Update 12/9

This week I worked on finalizing code for our demo as well as the final presentation slides and poster. I created a final flow chart that contained a full description of the software architecture we implemented. I also worked on expanding the IMU code to the Z-axis and translating this to the movements onscreen. I also worked on finishing up the GUI.

In terms of the Gantt chart, we are right on track to finish by the demo. We just have to code the remaining parts of our project (GUI, touching up IMU movement, etc) and practice for our demo on Monday.

Rosina’s Status Update 12/2

This week I mostly did work on the IMU. I made a lot of progress this week regarding the IMU. There is still some error that needs to be accounted for, which is the goal to be completed for the next week. I also helped put some of the hardware components together and permanently solder the components. I also plan the GUI this upcoming week. We are a little behind schedule, but once these parts are completed we’ll be on track.

Sarah’s Status Update 12/2

This week, I mostly focused on getting all of the sensors onto the glove itself. I helped in soldering wires onto the sensors as well as soldering them directly onto the board. I measured roughly and made sure there was enough wire to reach the board on the back of the hand. After this, I tested each sensor to make sure they were still working, and then gave it to a small user group to try out. One of the most concerning responses was that when the user reached up to squeeze the touch sensors, it would accidentally trigger the flex sensors, since the finger naturally bends to touch finger pads with another. I experimented more with the placement of each sensor on the glove, and we decided to move all the sensors down so that the touch sensors were easier to reach and the flex sensors would only trigger with drastic finger flexes. After this, I experimented with actuating certain commands with the sensors, and it worked fairly well. Additionally, I toggled with the thresholds of what we consider a press or not, and mapped them more closely with this new placement of sensors.  I also started working on the slides for the final presentation as well as practicing my speech during the presentation. We are currently on schedule and will be able to present next week for the final presentation. Next week, I will work on fine tuning the thresholds and adding a way for the user to calibrate the sensors to their liking.

Team Status Update 12/2

This week, we started integrating our hardware with the glove and thresholding sensors now that they are in their final positions. The software portion of our team worked extensively on IMU mouse movement algorithm. Our product is now able to move the mouse left and right, and we plan to extend this code to vertical movement along the z-axis in the early half of this week. We also worked this past week on our slides for the final presentation.

No major changes are being made to the device, but the IMU code may impose some limitations on how long the mouse can be used before it needs to recalibrate. The Bluetooth protocol was also modified slightly to send IMU data using a bytearray rather than an array of floats due to compatibility issues with the ESP bluetooth library we were using.

Saumya’s Status Update 12/2

This week, I worked on code for reading in the IMU data and mapping this to mouse movements. Working with Rosina, I experimented with the calibrated linear acceleration data coming from the IMU. We noticed that our data was decently accurate thanks to the IMU’s software for bias-reduction and combating drift. We used this data accuracy to our advantage when designing our position calculator. We utilized a 3-state Kalman filter with position, velocity, and acceleration as our states. On each iteration of the filter, we used a double integration method to calculate the position.

When experimenting with this, we noticed that the Kalman filter resulted in a good amount of smoothing of our position curve, but the position would shift back a little bit due to our velocity values. To correct for this, we implemented code that would snap the velocity to zero if several acceleration measurements of 0 were detected. That way the drift would be minimal. When we implemented our mouse movement code, this resulted in pretty good movement. In order to make this as accurate as possible, we plan on using our failsafe button as an interrupt to snap the mouse position in place and avoid the recoil. Now that this works for a single dimension, we plan to implement a second kalman filter to handle vertical movement at the same time.

In terms of the Gantt chart, I still have a lot of progress to make towards polishing our product, but a lot of the main challenges are completed.

Team Status Update 11/18

This week more work on was done with the bluetooth protocol, glove, mapping keystrokes, and IMU. Significant risks we are currently facing is the size and usability of our device. We are entering the testing phase of our project now that the physical components are being placed on the glove. The components are a bit bigger than expected. This might interfere with the accessibility of our product because it may not be as comfortable, however, it is necessary to meet our other requirements. No other changes are being made to the device.