-
I think separating like this is a good thing.
Although it is something you only need to learn once, I initially overlooked the existence of apps.json, assuming the apps were completely self contained.or I'll add a python/bash script to do it do you don't have to install Ruby/etc in order to use it.
I think this additional script is an important aspect - needing to install Ruby etc. would have probably swayed me the other way on this. I assume there is a good reason (it would be pretty wasteful) for not doing the concatenation of apps.json client-side.
-
My only worry would be if you write another test harness in Python - just because you need to prove the test harness produces good results that match the real world. Both of the test harnesses work reasonably well.
That is fair enough. My main reason for using Python is that I can most quickly prototype in Python and determine what is a route worth going down. The true measure of success will be the official test harness and, ultimately, real world tests.
Oh, forgot to say, thanks @Gordon - I can compile the harness now and it runs fine too.
-
-
-
-
-
HEART rate - seems to slow right down when I am moving. At one point I was walking up hil puffed out and I knew my heart rate was high. I looked down and it was showing 81, I stopped for 2 minutes and saw it rise to 151 drop to 138, as soon as I started moving it droped to 80 ish. Definitely a problem with heart rate monitoring when moving.
One of the Kickstarter updates (the one about tempering expectations) says that the heart rate monitor is (currently) only good when staying still. I'm not sure whether that still stands.
-
The existing algorithm uses the Magnitude of the accelerometer signal. This SQRT(x*x + y*y + z*z). Many designs use the Magnitude method as it means you dont have to worry about the orientation of the device - eg held flat.
My current best versions use only the component which has changed most since the previous sample.
I am not sure how the accelerometer chip knows its orientation
I don't believe the accelerometer does know its orientation, and the watch will be getting turned this way and that while walking and especially running. Other algorithms use a separate gyroscope to determine orientation and then use just the Z component, which best corresponds to a running motion. I thought that the Bangle had a gyroscope but looking through the reference I can't find it, so I may have misremembered (possibly because I've also been reading about the Puck?).
Edit: It says here it has "device orientation algorithms" https://www.kionix.com/product/KX022-1020
BTW - what device are you using to experiment with algorithms
Actually, I'm just using the data in the two test harness git repos. I didn't check all of them, but I assume they're all as 12.5 Hz. I haven't noticed any papers using as high as 100 Hz, but I did see quite a few use up to 50 Hz. I could use a phone for testing I suppose, but from what I've read the difference between a phone in a pocket and a wrist-based device are large.
-
-
No problem. I might be done with this for the day, but if I get to it before Gordon responds I know from your message that I can probably just check out an older commit.
I've played with an algorithm today that depending on parameters does great on actual steps but not on e.g. your train journey, or does very well on the train journey (not perfect, but not bad) but misses too many real steps. I am hoping a low pass filter will improve matters.
-
I have played around for a few hours this evening. I didn't have any success compiling Gordon's test arness, even though the instructions were straight forward. Is there anything obvious to you?
$ make gcc -std=c99 main.c -o main In file included from main.c:55: ../Espruino/libs/misc/stepcount.c:19:10: fatal error: jsutils.h: No such file or directory 19 | [#include](https://forum.espruino.com/search/?q=%23include) "jsutils.h" | ^~~~~~~~~~~ compilation terminated. make: *** [Makefile:2: all] Error 1
-
That looks great @jeffmer.
-
The link you posted above came back 404. The test harness Gordon developed for Bangle is at:
https://github.com/gfwilliams/step-countÂI had added an extra dot to the URL by mistake, but I was apparrently confused about which of the test harnesses was the test harness (there are two discussed in the forum, and working backwards through the posts the one I came to was the one I found first).
The easiest way to start is to do the work in Javascript
Maybe, but if I'm going to prototype I may as well prototype in any language. As far as I know the test harness(es) only exist in C, so it is write in C or create my own test environment for another language (and if I'm doing that, it may as well be Python).
Someone has kindly sent me the paper I linked to, so I will read that later and see what it brings.
-
I'm addicted to the idea of the BangleJS. I haven't even got one but I read the forum during all my breaks. I've got a head full of ideas for apps and experiments. When I first found out about the watch I read up all about what can be extracted from the heart monitor signals. Already in the emulator I have played with watch faces and am writing a running app. I can't wait to get my hands on the real thing!
-
We have a new generation of Bangle JS programmers now so I am hoping someone will be interested enough to take it to the next level
I just spent the last hour since @johan_m_o posted reading all about step counting algorithms. When I'm actually on the computer with access to a compiler I might try a few things out just to get a grasp of how the test harness works (the link is quite buried, so for people who haven't already read this whole thread twice: https://github.com/dariosalvi78/banglejs-algos-tester.).
I was hoping to have a look at this paper, which seemed interesting: https://ieeexplore.ieee.org/abstract/document/9050443 but sadly it is paywalled. Some of the other papers I have looked at use gyroscope readings instead of or in addition to accelerometer, which is something I don't think the data in the test harness has (right?).
-
-
It seems to be the sortorder attribute of the widget: https://github.com/espruino/Espruino/commit/8ae6fe20d99f158cac2afef5a6841048f349dafd
But I don't know where that comes from because I can't see it on any widget in the BangleApps repository.
-
-
Yes, that is exactly how I came to that algorithm. I had been trying to create a solid ring. At one point in desperation I started with the same polygon approach you tried, but I stopped when I hit the point limit.
It isn't described on the English wikipedia, I don't think I saw it on the German one either even though it lists many more circle drawing algorithms than the English one.
I haven't been able to read the original paper by Andres, it is paywalled, but I have read some of his later papers* and others that expand on the work. If you want to see the proof (or just out of interest) they can be found online.
- I say read, but I don't understand most of it. It took me a long time before I even remembered how the notation for sets worked.
- I say read, but I don't understand most of it. It took me a long time before I even remembered how the notation for sets worked.
-
-
You're too quick @Gordon, do you sleep?
It looks good, I will definitely use some of this. Thanks for pointing it out. -
-
-
I also care about the open, and heart rate monitoring is one of the main features I am after in a watch so when I get one I will also be looking at heart rate and also some of the more novel features we can extract.
I have looked at a lot of papers. I remember one was a particularly good overview, I will see if I can dig it out again @Mi.