Wednesday, March 25, 2015

Settings in PlexFit Pebble 1.14 explained

Hi guys,

1.14 was released yesterday to the Pebble App Store and since Pebble App Store has very poor update policy. I was actually taking advantage of it and used it as a way to test it for limited audience. The initial feedback was good and I will release it soon to everyone.

With the release of 1.14, there were a lot of changes and new features and I want to explain those features/settings in this blog, hoping that everyone will understand the new settings and make those work for you.

First of all, here are the new features:
1) New beta algorithm (Magnitude)
2) Finer granularity of sensitivity control
3) Update or refresh frequency setting added for users to control how quickly the watch face is updated (to conserve battery)

Now let me explain what the existing and new settings mean:

1. Calibration


This is actually the most asked about setting. I have received so far at least 100 emails asking about this so I will try my best to be clear about this topic. First of all, the point of the calibration is to take into account the fact that not all Pebble are made equal. By default, due to manufacturing variation, all Pebble will have very different base calibration values.

By default, an accelerometer at rest on the face of the Earth should register a base acceleration value of 1G or 1000mG, that's equal to 9.80 m/s * s. The Earth exerts a gravitation force on any accelerometer on Earth causing this value. Now, any accelerometers by default will have the base readings deviate from this value, some register 980, some register 1020, 1010, etc... so on and so forth. How far it deviates from the base value is based on the manufacturing tolerance and based on how much the company is willing to spend on QC.

Now, how this base value affects the pedometer algorithm you may ask. That's because the accelerometer is now known to have an offset from the expected value, then all the readings from this accelerometer have a high chance of having this offset as well and they are not accurate, a sound assumption right ? So, let's assume that we know this offset, we can assume that we can subtract this offset from every accelerometer readings then feed that to the algorithm then we should expect the algorithm should behave the same on all the Pebble, a reasonable assumption here.

So when you calibrate your Pebble using PlexFit, what it does is that, it takes a lot of measurement in the 10 seconds, then it computes the average and compares that against the base expected acceleration value, which is 1000mG. Any offset from this value will be reported in the Calibration(x) at the end of the calibration (actually the calibration algorithm is a bit more complicated than that but this is the general idea). Then, PlexFit will store this value and uses it to subtract every readings from it before feeding to the algorithms.

This calibration offset affects both algorithm since it is subtracted from the data before feeding to the algorithms.

2. Sensitivity Level


In short, this is a way for you to customize how sensitive you want the algorithm to be. If the current algorithm is too sensitive for you, reduce the sensitivity level (more negative) and vice versa. In 1.14, this setting has been adjusted to be more granular (around 25% finer than in 1.13 and earlier) so that you can select the sensitivity settings that fit your needs better.

Note that this setting works for both algorithms (Rhythm and Magnitude)

3. Low Pass Filter


This setting is part of the Rhythm algorithm. It serves as an additional filter to filter away events that do not resemble a walking motion. Let's say you take shower, eating, etc... and you have a lot of false positive counts on your PlexFit while using the Rhythm algorithm. This setting will allow you to filter out those events and it should greatly reduce the number of false positives from other activities in your daily life. Some users report that it also filters out false positives when the users drive, ride motorcycle, etc...

Note that this setting only works with Rhythm algorithm. It will not do anything if you select Magnitude algorithm.

4. Step Threshold


This setting affects both the Rhythm and Magnitude algorithm. It controls how many valid step events PlexFit must register before it turns on the pedometer and start tracking. This setting should help considerably if you suffers from a lot of false positives from any activities in your daily life that are not walking (for instance typing, eating, hand gestures while talking etc....). Because this restricts that the user has to continuously walking for more than x number of steps before it will start tracking, any isolated motions like shaking wrist, etc... will not trigger the pedometer.

Please note that there's a battery trade-off if you go to higher step threshold setting due to PlexFit has to do more calculation by comparing more past events to ensure that you walk enough to trigger the pedometer. You should conservatively increase this if you have issues with false positives.

5. Algorithm


Yes, this is the beef of 1.14 and this is the one feature that many users have been asking about. I will try my best to explain here but please let me know if you have any questions or follow-ups and I will address here as well.

The initial algorithm included with PlexFit is the Rhythm algorithm. It's based on the latest research on walking motion and it basically tracks and compares user movement to a rhythm. It works well for users who have normal walking rhythm with certain arm swings when walking but its con is that it doesn't track well when a) users have walking rhythms different from the rhythm expected by the algorithm b) users who artificially constrain or restrict their walking rhythm by actions like putting hands in pocket, using muscle to dampen acceleration generated by arm swing, etc... Please note that you can adjust the above settings so that PlexFit can fit your walking rhythm but there are cases where the users couldn't find the correct settings for them at all and that's a problem preventing PlexFit from appealing to more users.

So I developed the alternative algorithm called Magnitude. Different from Rhythm, it doesn't care if the users walk, or do any actions at all. As long as the magnitude of the accelerometer values is large enough or similar to the value generated from a valid walking event, PlexFit will count that as step. This algorithm is more like a general algorithm that should cater to a larger public or to users who don't have or don't like a normal walking rhythm expected by the previous algorithm. This algorithm should work well enough for most users provided that you take time to tune the sensitivity levels and step threshold to fit your walking style while mitigating false positives. Please note that low pass filter is a Rhythm algorithm setting and it will not do anything if you select the Magnitude algorithm.


6) Update Frequency


Ok last but not least, this new setting allows you to control how frequently you want the watch app to update whenever the step count and active time change. Currently it's set to update immediately as new step coming in but given the understandings that e-ink consumes battery more when there are a lot of refresh or motion. I added in this setting so that you can conserve battery life by having the watch face refresh less often. If you do not check PlexFit frequently, this setting is great for saving battery.


Ok that should be everything in 1.14. Please let me know if you have any questions and I will post it here for everyone to see :). Thank you for your supports and for all the constructive feedbacks I have received. You guys are making PlexFit better day by day and I really appreciate that !!



8 comments:

  1. Fyi. when I updated to 1.14 on my Pebble app via OTA, the obtained steps and activity in the app was doubled.

    ReplyDelete
    Replies
    1. I'm having some issues with 1.14.

      My step counter hasn't been updated all day, it keeps saying 1050, which was the amount I had after I updated to 1.14. Then i go into settings and choose update freq to 1 min, exit the app an enter again. For a short period of time I can see the correct number around 4,9k, but then it goes down to 1050 again.

      After exiting it and entering again a few times, sometime I can get the correct amount back, but short after it dissapears. So there seems to be some bug there.

      Thanks.

      Delete
    2. Hi Erroneous,
      I accidentally deployed a debug build where I set the step count to 1050 to test to see if the steps get reset at midnight. I just deployed 1.15 to the OTA server to fix this. If you open your PlexFit Android app now, you will get this OTA. Sorry for the hassle.

      Delete
    3. I am not getting the 1.15 update via the app. I tried to end the plexfit app a couple of times through Android task manager, and opening it again, but no prompt to update to 1.15.

      Delete
    4. I just released a new Android app with the new companion app 1.15. Your Android should get updated and then your Pebble app will get updated as well. Sorry for the inconvenience. Please let me know once you receive it and are able to update to 1.15.

      Delete
    5. Thanks, all working now!

      Love the support, awesome job! :)

      Delete
  2. Craziness happened last night. At 4:50 AM, while I was sleeping and my Pebble was off, PlexFit sent 11,459 steps to Google Fit. Before I shut it off last night, PlexFit, the watch, and Fit all agreed on the 7,221 from yesterday.

    BTW, I also had the 1050 problem. I unloaded and reloaded the app from the pebble, and it started working again.

    ReplyDelete
    Replies
    1. Hi Grant,
      Sorry about the bug, I deployed an update just now to the OTA server to fix this bug, you should get it soon. I am sorry for the bug.

      Delete