Keith Hack

Monday, November 28, 2016

Recently (okay, like weeks ago) I was asked why hasn’t ANT+ been completely crushed by BLE. Normally I’m asked “which should we support” which I have a better answer for – both. The short is BLE could, but several it seems that around every corner companies fumble it. OVER and OVER and OVER. I asked an industry expert and the world and got some new responses, but mostly the same. The same is BLE is a mess. It’s revising without adoption (4.3, 4.2, 4.1, 4.0).Users don’t understand the sensors can only talk to ONE device. The new one was because…. Polar. I’ll get to that near the end.

History lesson time. Before BLE and ANT+ there was a mess. Proprietary protocols, no standards, analog sensors, or secret standards. If you want to see backlash on standards look at the Ray Maker Kurt Kinetic Smart trainer preview and read the comments. Yes I did a piece here as well.

It was inevitable that someone would step forward and create a simple 2.4GHz protocol to unify things. The group that did found themselves in the right place at the right time with the right technology. It was enough of an innovation to attract the attention of Garmin to purchase the company / protocol – and thus ANT+ was in the hands of a corporation to be locked down and….. Wait, none of that happened. In fact the life blood of the sales of Garmin is other people’s sensors. Look at the mass of sensors in a Garmin. There are 14 (really 12) sensor types in my 520. 3 are proprietary – except that two will become ANT+ standards based on those two Garmin exclusive products thus opening the floor for competition. The last is Shimano shifting -- there is a generic and open shift profile used by SRAM and Campagnolo so that doesn’t even matter anymore.

Smart phones had Bluetooth, with it’s 20 – 40 ma draw. It allowed you to talk hands free to your car and then allowed for terrible BT audio, and then after people complained, decent BT audio. It allowed keyboards and mice and a huge number of other devices to work wirelessly without too much problem. Just remember the pairing code is either 1234 or 0000. But even 20ma was too much for sensors and most companies, The power consumption was too high for a coin cell. Other motivations and some time meant BLE emerged. Or Bluetooth low energy. It was remarkably similar in some ways to ANT+ and yet functioned completely different – but it was really for phones.

So how did we get to this BLE mess of “the next version will crush it”. The iPhone emerged and was, as far as I recall, the first device to have BLE in iPhone 4 (or was it 4s?).Then the overwhelming adoption of Android (complete with flaky BLE that still has teething pains in the splintered Android ecosystem) two things have happened. Now every Mac has BLE and standard iPhone like coding API and Windows is such a mess that if software supports BLE, sometimes it’s only on one type of USB BLE adapter (Shout out to Trainerroad for trying with the Bluegiga BLED112). So Apple leads with the phone for all – except every few iOS versions they take more BLE functionality under it’s control and breaks apps.

ANT+ had been around for years unifying powermeters, heartrate monitors, foot pods, speed, cadence, combined spd/cad and other less known sensors. But guess what. The big money maker for BLE is not sports. And this is where BLE could have killed ANT+ but didn’t because it fumbled. It didn’t write good specs. It’s licencing and certification fees were so high most companies just didn’t implement it correctly or pay them. When they didn’t pay them they couldn’t participate. ANT+ on the other had – well, most middle income americans could afford membership and certification by going without a new TV or the latest macbook. Those same people would have to go without there base model Tesla model S base model to do the same with BT. This has gotten better, but it’s still an order of magnitude greater so still most people ignore it. So people don’t have a simple unified way to check their products in the BLE space.

Around the time BLE was emerging there was one company in the sports world that didn’t adopt ANT+. Polar. Polar had been the king of making watches and heart rate monitors for a long time. It was so common that gym’s used some of the variants of it’s technology and it’s still in use today. There are still heart rate monitors that use Polar’s very old analog low frequency (khz) transmitter. Some gym’s and clubs use them now. However, when things unified under ANT+ they said no. I don’t know why but in hindsight, if they knew how it would hurt their company, I doubt they would have done this. The last few years this has caused so many headaches. A quick search for Polar protocol reveals W.I.N.D, 9khz, 5khz (the actual one), “ownlink”, BLE, Nike proprietary partnership (for Nike Run watches), and then I quit. Polar started talking about BLE before 2010 according to blogs and forum posts. When I used the Polar V800 in 2015 it still did not support any BLE powermeter correctly that wasn’t the Polar Look Pedals. In fact, adoption was so poor with those pedals that you can now get ANT+ pods for them. They were the well engineered powermeter pedal option nobody bought. They worked like no other powermeter – dual BLE connections. Each pedal acted like a single sided unit and the watch put things together. If only one was connected, it doubled it. NONE of this is in the BLE spec. There is an identification bit, but it never describes how it is to be used – AND even in the 1.1 doc it still doesn’t clarify this when I checked. The ANT+ Power device protocol is on version 4.2 which was specifically reved to clarify how to deal with setting crank length. It’s backwards compatibility maintained with most devices – a handful MIGHT have problems, but not many and there are work around.

We have BLE with fractured certification, inability to financially participate (initially), poor implementation, a fractured phone ecosystem, and Polar and Sunnto (who left ANT+ after Ambit 2 for BLE) who are still having problems getting peoples sensors to pair and work with their devices.

Special officer Doofy reporting for assignment “Crush ANT+.

So where are we today?

ANT+ has had a big uptick for several reasons. Looking at sales of watches, Garmin had a 300% sales increase year over year after the Apple watch due to probably 1) more exposure and 2) people realize the Apple watch was terrible for sports, a really dumb expensive joke, and realized that the Garmin's were trying to be smart watches -- plus Garmin aligned products, created ConnectIQ. And finalizing the FE-C stuff for trainers has been a major boost to Garmin sales, trainer sales, and software subscriptions -- all heavily ANT+ with BLE supplementing for phone communications.

So why hasn't BLE crushed ANT+ with a wild fiery vengeance. Apple / Samsung / HTC / LG are playing a volumes game. Apple doesn't sell 1 million iphones and call it a success anymore, they need to sell about 40 - 50 million a year. A good year is 75 million. Their apple watch has had 12 million sales in 2015 and a 55% drop in 2016 (pre Watch2). Lets say 18 million for a good measure. A good Garmin year is aggregated 400k (guess based on IDC data) watches with last year but hit 600k in a single quarter. So looking at 3Q16 Apple shipped 1.1 Million while Garmin shipped 600k devices. Garmin’s likely have high usage, probably 80 - 90%. While apple watches slid (Several news sites, Forbes, engadget, WSJ, etc + Keith-o-algo, rumourmill, grain of salt) that only 30 - 50% of Apple watch wear them, let alone use them for much. So say a 6 - 9 million apple watches, 1 million people using them, some smaller, say 10%, using them for sports = 600k - 900k sports users over 2 years. Garmin hit that for a user base in a single quarter.

With all the BLE regulation, fee's, inability to meet, no idea who actually creates things, people find it easier to just do their own thing. People say “I’ll help who ever implement my proprietary protocol”. NOPE. It takes the same effort to write a protocol as to help one client implement. However, if the client is implementing a standard there are references and samples so the time to implement is quick with less testing. Working one on one means they could implement 3 – 4 standards in the same time to implement one buggy proprietary incomplete standard – that the company will evolve. NOPE. And the inevitable feature creep. The “we have a new api, please implement” followed by “really, that wasn’t on our timeline, we can look at implementing it in 6 – 9 months” followed up with it breaking app compatibility when hardware players roll out that update.

The short is, interoperable -- ANT+ still wins at being friendlier to not creating a silo product and a silo product = death now. So with the 40 - 70 million unit companies not caring about BLE for sports sensors (or looking at it as IOT type devices and not understanding people want THEIR OWN data), sports is an afterthought with a constantly changing specification that isn't really backwards compatible causing older devices to have connection issues and with bad API's for the foreseeable future until Google and Apple handle all of that, ANT+ is just simpler and has a better test market of people who actually use their devices.

Anyway. BLE could win if they'd stop running around with their pants down around their ankles but nobody seems to be trying just yelling “ANT+ will die with BLE version 4.x”. Soon to be version 5.x, then 6.x. All the while ANT+ is collecting 8 cents on every ANT+ device in the world (nRF52 royalty. No idea on nRF51, it’s baked into the Nordic chip price).

Tuesday, October 25, 2016

I woke up this morning and I saw that Brim Brothers had quit. I’m sure if I had ever met Barry Redmond I’d likely be asking the question that probably kept him and his team working so hard.

“How do you know the crank angle, or the appropriate relative angle between pedal and crankset?”

So if you want the short answer – It’s hard! It’s VERY VERY VERY hard.

I predicted this was going to be a nearly impossible problem with inertial sensors and I hate that I was right (Or wrong, you’ll see at the end – no comfort for Pre-order people, but the tech is out there). I had played with inertial sensors in University while working on active vehicle suspension design for automotive. And I said things like “I’ll just double integrate acceleration to get position” to which my Masters supervisor said “Doesn’t work” and I marched on my way to find that no matter what I did position drifted and accelerated away in under 2 seconds. The accelerometer was taped down to a heavy old wooden table and the math said it was flying away at 1000m/s. You have two options then; believe that I invented a new form of transport… or accept that the math didn’t work.

So below is a picture that will take a couple of paragraphs to explain, but the short is Brim Brothers measured force on the cleat in two directions (purple) and could be resolved into a single force and direction (red), but not all this force made torque (green, perpendicular to the crank). There are two angles relative to the world (the reference frame I’m using).

A really good inertial algorithm using accelerometers and gyro’s and any other MEM’s could figure out the angle of the shoe (theat_shoe). Those two things only tell us the vertical component and the horizontal in the “world” reference frame. Without knowing the crank angle very precisely you have no idea what torque is. We know the force and direction relative to the shoe and we can convert that to the world, but not the crank reference frame.

In fact, if we leave all the forces the exact same and only change the crank angle the resulting torque is different and reversed. This isn’t even unrealistic as the “lazy leg” has to be lifted by the other. Try cycling with one leg and see how tiring it is (those with Power Cranks are exempt).

We have zero different information (not really, but I’m getting to that). Accelerometers on the shoe state this is the position and angle using a simple algorithm. Let’s ignore time history integration for a second and only look at data which can determine reliably orientation in 3D space. The shoe angle is known, the force vector is known, but we know nothing about the relative orientation against the crank.

So basic inertial is useless because we can’t resolve torque, so that means two things

1) The Luck shoe is 1/100th where the Brim Brothers were years ago and only senses in one direction therefore it can never accurately get power. Some sort of half baked tuned version

2) Brim Brothers were into some very advanced predictive methods to predict and calculate crank angle

Ignoring point one, lets say we can integrate the velocity. Keep in mind we are moving outside and we can only figure out velocity relative to the world (this is how accelerometers work, the reference is the world with gravity vector being “down”). So we know the velocity which is a circle except when we move forward. Then the velocity profile is more of a spirograph. So from this we can figure out just about where we are in the crank rotation as velocity should be tangent to the crank + some averaged forward velocity + some drift. So assuming the filtering cleans up the drift and we can remove the forward velocity component we now have a vector that tells us crank position.

EXCEPT – well, it’s an estimate of crank position. It’s not necessarily true crank position, and it’s a weak filter since we never directly measure truth. So now we must supplement it some how. We can use the cyclic nature of the accelerometer going up and down and that helps stabilize the reference. OR we can use this to find the top and bottom of the pedal stroke, calculate cadence and use that estimate crank position allowing you to calculate torque.

Except if you change how your feet are angled like getting out of the saddle could change expected orientation, or small vibrations, or a speed bump, or even angle change due to starting to ride up a hill.

This is only one example of the problems associated with all this inertial sensor stuff. I don’t really know for certain what was the real problem, but my speculation puts it in the inertial algorithm area. Any time with a powermeter you have to make a guess like estimate an angle, or estimate a position, the answer is wrong. There hasn’t been a powermeter that works reliability that has an algorithm beyond a rotation measurement and been proven accurate yet. That doesn’t mean their won’t be, but when a company uses the words algorithm in terms of power sensing be wary. My suggestion is to avoid anyone who says algorithm too much until you can test their product.

However, I also read today about something that is using inertial sensing to figure out position, orientation, velocity, and acceleration… cheaply ($1500 USD for 32 points). It’s a full body motion capture suit (NOITOM) and it is amazing. It’s been used on a lot of videos. Normally motion capture is IR camera’s and reflective balls with a lot of software. This is just inertial, calibrated to positions, and some amazing filtering algorithm. I’m not sure it would be accurate or fast enough for what the Brim Brothers needed, nor know if it would give enough to back out crank angles without multiple placements, but it’s amazing to see a company able to put together a system that must have a build cost of only 500 – 700 dollars so they can sell for $1500 for the 32 node version. Check it out. It’s this tech which could enable a successor.

Friday, September 9, 2016

It has been a long time since I’ve posted, but I wanted to chime in on something that affects me more as a consumer than a developer. It’s the recent choice by Kurt Kinetic to continue to avoid ANT+ and the standard BLE profiles.

I’ve recently read the Simon Sinek book “Start with Why” and I’ve watched the Ted talk (here) numerous times annually as a reminder. Having worked with a startup and poured my heart and soul, and not to mention 60 – 80 hours a week for over two years, I feel that I’m a little in touch with the why I do things. The why for me is connected with my what – as in my personal history. Motivation to make a cheaper powermeter extends from being poor and being fat, and changing that with smart purchases. One of my first smart purchases was the Kurt Kinetic Road Machine.

I wanted a trainer for my used road bike. My choices were Cyclops, 1up, or Kurt Kinetic at the time and these were all big purchases for a poor Masters student. As a person of engineering I researched and researched and researched. What I came up with was that over long periods of use (think years, like 5+ years) the Cycleops may leak. The 1UP, while well reviewed looked cheap and dated. Then Kurt Kinetic, new in the world of trainers, only one product, a little louder than the competition, had a trainer that was guaranteed not to leak. And boy was the technology amazing. It couldn’t leak! EVER! I was amazed. So I bought it, and I stayed home all morning waiting as long as I could for the UPS guy to show up… only to find that he just left it outside on a busy street. Mixed emotions that day.

Not only this, but there was a power curve. I had just heard about training with power and I was intrigued. I built up a little Arduino platform, wrote some software that pre-dated TrainerRoad and Zwift by years that allowed me to follow my workouts from the Andy Coggan / Hunter Allen book “Training and Racing with a Powermeter”. I trained to this power curve using my own software for 2 years. Over this time I migrated to using the ANT+ Speed / Cadence sensor instead of the Arduino. Then I got a Quarq Cinqo Saturn and adapted the software to use the ANT+ power profile. But the power curve of the Road Machine was in the software still and I tested it against the power meter and I was happy with the results from Kurt Kinetic for all those years. The ANT+ profile was so easy to implement. It could be done in a day!

If you go through my photos on this blog you’ll see my trainer in the background in a lot of them. It doesn’t matter what I’m working on, the Kurt Kinetic Road Machine is always there. It was my rock. It was a powermeter test device. It was a calibration stand. I even got a dial gage and magnetic base and it became an AMAZING truing stand saving me hundreds of dollars.

Over the years Kurt Kinetic grew and I was excited. I was also loyal. They came out with the rock and roll and I loved the idea (but couldn’t afford it). They believed in a reliable trainer that never leaked and innovation! That was their why. They had a cycle computer that had a regressed power curve, like I was doing, but it couldn’t log data and was expensive. I forgave this because I believed in the why of Kurt Kinetic. I would say “They make good hardware. Bad electronics from a probably Chinese outfit can be forgiven”.

Then Kurt Kinetic replaced the bad cycle computer with a little pod. I was excited until I found out that it was only BLE. My Cell phone didn’t have BLE (Samsung Galaxy S). I have a background in mechanical simulation so I don’t use a Mac because there is no Solidworks or ANSYS or ABAQUS or CATIA or Unigraphics or PRO-E or Altium or ORCAD or.. well you get the idea. I make things, and to make things with professional software I use Windows. Windows had almost no good Bluetooth support then, let alone BLE. I figured I’d forgive this transgression because “Kinetic” (dropping the Kurt) does awesome hardware. This module is probably outsourced. It’s not part of their “why” as a company. It’s just to fill a gap to try and catch up with Wahoo. Or maybe they believe in BLE only – not a large sin, but still a sin in my eyes.

Enter Smart trainers. I didn’t like the original Wahoo Kickr. Maybe it was early firmware, maybe it was that the cassette didn’t align properly to my wheel and I’d have to constantly adjust the rear derailleur between riding indoors or outdoors. Maybe it was that it never appealed to my price conscientious history – again, being very poor growing up means that high profit margins can put a very foul taste in my mouth. Gouging customers is akin to murder with me. Charging over an MSRP for instance should be met with the end of the Rick and Morty episode re-enacting “The Purge”.

So I brush it off. Smart trainers aren’t (at the time) my thing. They aren’t even close to accurate to a real powermeter at the time. Software control of the trainers was non-existent and slow and BAD. I also thought there cannot be a market for this 1800 CAD product (Bad exchange rate at one time). However, the market grew and smart trainers were a thing. Wahoo had invented an all new product, and after some teething pains, they got it right. Early adopters through to creating a market. Congrats to Wahoo. Awesome work. Now for the bicycle paddle boat that Chip wants to make.

So now I’m thinking about how most things work so nice together over the years because I got into the right ecosystem. I had a Garmin FR60, replaced with FR910xt and an Edge 500 replaced with 520. I have Trek Bikes with built in Speed/Cadence sensors. I have a HRM from Garmin and one from 4iiii’s. I have numerous pieces of software, all working with an ANT+ USB stick perfectly, reliably, without fail. Multiple devices can receive and transmit. It’s a wonderful ecosystem – now owned by Garmin. However, they try VERY hard every year at the symposium to say “guys, if you have ideas we’ll help you write a whole profile, just work with us!”. They invented Connect IQ as a way to accelerate this! They allow for Private manufacturer pages to be reserved and tested openly with Connect IQ. Garmin wants peripherals! What they probably don’t want is watch and head unit competition – but that’s another story. The only reason I see to not support ANT+ is because you are going to make a BLE only head unit.

Which brings me to Polar. Polar right now is where Nokia was when smart phones were invented (or maybe a few years after). If they survive I’ll be impressed, and if they do, their only saviour is the iPhone and later Android, by latching on (poorly) to the BLE profile and still trying to act superior. I don’t know the story well, so I won’t speculate too much, but it did lead me into an interesting problem.I’ve used the $500 CAD Polar V800. It’s a joke compared to the FR920xt or the new FR735xt. I’d pay 100 – 150 CAD for it personally. Same goes for the Sunnto Ambit 3. So disappointed in these. In a few years they may get their act together and maybe (doubtful) Apple will help out people with the power profile and push the implementation. To Apple, who really is the push for BLE, the dedicated sports market is a small market. Their money comes from the every person who wants to “feel different” and is willing to pay.

Now we can segway into how this affected me and my girlfriend. My girlfriend has a Nike runwatch made by TomTom. It uses the Nike proprietary footpod and a Polar proprietary HRM. While I had spare ANT+ and BLE HRM’s nothing would work with the watch except the nearly $100 CAD Nike specific Polar HRM. She wanted heart rate data while running, but baring multiple devices she couldn’t. She wanted Strava data from here watch, but had to use numerous websites to upload here data or also capture to her very large phone. She couldn’t merge the HRM data with the Nike data from a non-GPS watch. It was bad. Everything was just harder. Initially the BLE was flaky too due to poor implementation in most apps. In fact it was so frustrating as Nike updated their site, removing a lot of features, that she pretty much gave up on Nike altogether. Nike and Polar had blocked her from her own data. So now what?

We got a used FR910XT for her cheap and the Nike watch we don’t know where it is. It was cheaper than buying more proprietary stuff. It uses the FIT format and ANT+ and even though it’s older, it’s way more capable than other newer products I’ve used.

So let’s look at the pro’s and cons of Implement ANT+ / BLE.

Pro

Cons

Instant compatibility with software

0.25 USD Licence Fee for nRF52

Ability to support new profiles quickly

May have to switch from nRF51822 to 51422 and increase cost

Felt as part of an ecosystem, can implement new features and roll them out to others as part of the working group

Develop BLE support or migrate existing proprietary takes time and money

Can use Connect IQ on Garmin products for apps and widgets

Develop ANT+ Transmit / Receive takes development effort, again time and money

Increased industry contacts and exposure via working groups

Risk competitors finding out your ideas

Existing profiles can be quick to implement with reference code

Could be major costs on changing IC – restocking fee’s to lost reels = up to 10000 dollars USD

And now the Pro’s and Con’s of proprietary

Pro

Cons

Build an Ecosystem

Single company implementation is same effort as multiple

Control of development of new features

Slower implementation by 3rd Parties

Control Power consumption

Deploying features could break others API implementation, meaning a lot of support, and risk of it being dropped

Risk of loss of investors (If any) due to incompatibility (testing by investors) or failure to meet sales objectives of new products

I’ve heard that Kinetic will try and explain it’s position, and I welcome them to doing this. Maybe I have missed something in my several years working with the ANT+ and BLE protocols. I also know that working with a single company with something proprietary is harder than a standard for 10 companies. The biggest thing it comes down to is normally feeling like you’re in the Garmin sandbox. Frankly, that’s why people are doing ANT+ and BLE. For choice. Implementing ANT+ gives you access to a whole new Connect IQ platform. Companies like Stryd have used it to implement power recording in run modes – Genius!. Companies like Specialized have used the Apps mode for their MTB demo about a year ago. It could have been done on a smart phone but I don’t know many people who ride a MTB with a smart phone strapped to it. Could Stryd have “worked with Garmin” prior to Connect IQ to implement this – yes and no. Yes because they want to implement a new product. However, implementing power on a non-power watch could turn a run only watch to a tri-watch competitor, so Garmin may have said NO. By taking that risk you could say Garmin could damage their own sales, but for ever sale they damage they probably grew 2+ because of Stryd.

Unless you have a lot of developers it’s going to be harder to do anything on power consumption and getting companies to implement a new feature and recompile and re-release an app is time consuming. And if your new feature you’re pushing to market hasn’t been tested and vetted you risk breaking someone else's software. That makes people less ambitious to update API usage.

There is a smaller development cost to implement existing compared to re-inventing the wheel, a small cost on the chips if thought out from the beginning, and a lot of positive PR. However, if the choice was made and the chips aren’t ANT+ compatible then it could mean a major design change. However, if they use the nRF51xxx series that means they can drop in the ANT+ compatible chip and swap the stack. They likely haven’t purchased more than a reel of IC’s and that could have run them 10k USD. However, that is the lost sales of maybe < 50 trainers profit margins? How many sales would (or have lost) by not supporting it from the start?

I just read all the comments on Ray’s post. Joel from Kinetic is trying so hard to be diplomatic which must be so hard. They have an internal decision that see’s him being beat up on. Not only that, but personally I’m saddened. The Road Machine allowed me to train effectively with power before my powermeter journey. I made my own ANT+ transmitter for it. I tested it’s power curves. I’ve shown my girlfriend how to use her Power Meter with it, and do an FTP test, and ride with TrainerRoad. I watched a new market come to light and I would stand by my Road Machine saying it’s awesome and doesn’t need to be stupidly plugged in. That it was solid with my 100kg putting out a 1200 watt 10 second sprint when I cinched down the tire. I don’t personally stand by their decision and I’ll eventually vote with my dollar. A few months ago I thought my Road Machines bearings were going – I still haven’t confirmed it. They suggested an RMA and I felt a little bad. It’s 6 years old now. It’s seen hundreds of hours. However, I had to pack it up and figured maybe I’ll just buy something new. After today I don’t believe in the why of Kinetic any more. I’m sorry and saddened. They lost their way. They lost their why. I know what it’s like to see a company lose it’s why. It hurts so much.

I’ve seen these type of decisions made because companies want an “ecosystem” but then they don’t realize that it doesn’t matter. It’s ambitious and unless it’s your only focus then you’re developing nothing. If something is a published standard that means there is a way to test and check that it works. If you have to send an API, hold someone's hand walking through it to implement while they are also implementing a standard, then who will get integrated first? It’s cheaper emotionally and time wise to a consumer to buy a whole new trainer than to wait for someone else’s product to be compatible. You’ll never be first to be incorporated into software, you’ll always be last. You don’t get to do what everyone did last year – show off Zwift or whatever new software is being shown in every trainer booth at Eurobike, but you get to do it later after it’s no longer novel. You get to be the last guy to show up to the party, but nobody is waiting for you because they are already starting to leave.

I don’t know what the reason behind avoiding FE-C, Power, Speed, and Cadence on ANT+ or why they are using their own proprietary BLE spec. I mean the ANT+ working group got beat up a lot for “holding back FE-C” but it’s now the unifying body. The problem is that these are standards that are already fighting it out. And as much as I hate to say it, ANT+ may lose. It’s easier to implement, quicker to get right, cheaper to get certified, but BLE is in every cell phone now. However writing your own proprietary characteristics for BLE and not publishing them means you are the third guy – the guy that’s forgotten about before anything starts. The Nokia, the Polar, and the Kinetic?

If Kinetic jumped, listened to the hundreds of thousands of dollars customers are saying they won’t spend, and say “We hear you” – then I’d consider them when I buy a smart trainer in a few months. You were already late to the smart trainer party being hosted by Wahoo and attended by Elite and Tacx with special guests Zwift, TrainerRoad, Training Peaks, Strava and more. Having your own party down the road the next morning isn’t going to be as fun.

BUT

Kinetic has a great opportunity here. There is no unified FE-C equivalent for BLE. What if Kinetic steps up and says “We might only do BLE, but we are going to lead Bluetooth SIG to making a profile because the industry needs it! We are going to reach out to TACX and Wahoo and get us all on the same page”. Without ANT+ I still don’t think I’d buy, but they would have found their why again.

Wednesday, September 10, 2014

It’s been about 10 months since my last post about the powermeter development. Those who have emailed me have been stone walled about it, getting a response such as “I can’t talk about what I am working on in my new job”. The answer is that part of it was in fact a powermeter. So, to the loyal followers (and even the not so loyal) we are offering a discount promo code of Acuityfor a 20% discount on all 4iiii’s products as a thank you for supporting me and following! Oh, here’s the “catch”. It’ll be the most accurate, lowest cost and user installed (no new crank needed for most riders!). And now I do what I love full time. So thank you!
UPDATE: Code was valid until midnight of Sept 12. The last day of interbike. Thank you all that participated.

Now, if you’re still reading but want to hear how this came to pass, I give you the long story
During my Masters degree I had used strain gauges. I needed a tiny load cell to test active suspension. It worked but wasn’t great. I decided to take these “student strain gauges” for a side project. My FSA vero crank, instrumented like almost all crank based meters, showed some results, but it was noisy, drifting, and unusable. After much experimentation I found that cheap off the shelf electronics were not cutting it. I shelved the idea and started working on some training software for use with the regressed power curve of my Kurt Kinetic. That was 2009 – 2011.
In the meantime a friend of mine in Waterloo was doing a Masters with someone at Babcock and Wilcox, the nuclear steam generator company, and passed off my resume. Five interviews, a security background check, and relocating my life from St. John’s, NL to Cambridge, Ontario I was now working in Nuclear Engineering. Most of my work was Finite Element Analysis, or FEA. Essentially I my intuitive understanding of how mechanics, stress, strain, deformation, etc work was being put to work for steam generators. I had been using FEA since the second year of my undergrad and at that point had used FEA on and off for almost six years. I even wrote a free book on using Ansys and FEA to design race car chassis' (link here).
It wasn’t long before a customer concern required experimental work measuring strain. Prior work was inconclusive. I heard the design manager going cube to cube in cube-ville (which was my home) and I ran after him (coffee in hand) and said I know a and used strain gauges, Eventually I disclosed my electronic hacking which had been featured on Hackaday and I was chosen as the ideal candidate.
However, I needed credentials. Everyone knows most engineers never touch things with their hands, but in order to do strain gauges I would. I’d add it to my machining and welding skills. So I was sent to a strain gauge course. After the courseof training later I knew exactly how to fix my vero crank powermeter! I was excited beyond belief. The problems I had seen were so minor!
For the next year I spent most of my time conducting experiments at B&W using strain gauges to great customer satisfaction. Between my FEA, electronics, and attention to detail combined with my knowledge of Design of Experiments and higher level statistics my work was deemed impeccable in execution. I was achieving 1% error with theoretical. A former Pratt and Whitney employee now at B&W stated his work was up to 15% error. I was so proud to be executing things at such an accurate level. In the mean time I had spent thousands of dollars and countless hours building up my own circuit boards and instrumenting cranks.
Vero, which was never self contained, was V1. Later a C-channel shaped SRAM Rival was V2. It was arduino pro micro based with an AP1 ANT+ stick from sparkfun and some analog components that weren’t suitable. V3 combined those onto a Rival OCT (hollow forged) crankset. However there was issues, clearances, etc. I had tried some different ideas and realized forces on a crank aren’t as simple as the industry thinks (or markets). However, I got my powermeter on the famed Hackaday and tens of thousands of visits to my little blog later I felt I was on to something.
So for V4, I moved to a lot of new components and a small custom board. I spent countless hours pouring over datasheets to chose the components. I built both a Rival OCT and Carbon S900 / Quarq unit. Both worked well. Very well. In fact I was on the verge of building up a bunch and starting to beta test. I had a listing of people who were interested from all over the world.
I got an email from the father of a lady who works at 4iiii’s. He was so interested in my work and has remained a strong believer of me. Eventually it seemed to fall to the wayside of the people there or was being evaluated at a slower pace than I wanted. However I liked this company. The founder had built Dynastream, the creator of ANT+. I was impressed. So I eventually sent him a message on Linked In.
A few super early morning calls later and I was using my barely touched vacation time to impromptu fly to Alberta to meet this guy and his team with my bike in tow. I had no idea what to expect. A short drive from Calgary to Cochrane later and I find a small building labeled the 4iiii Innovation Centre.
I had mucked around adjusting code on the carbon crank for more accuracy and messed up some math, so eventually I swapped in my Rival the night before. The battery kept disconnecting during the demo in his office but he was convinced.
Some interviewing and a discussion later on what he wanted to bring to market and I was confused, full of reservations but generally sold. He wanted user installable. He didn’t want into the crank buying, installing, selling market. He wanted to let people have choice. He wanted to drop the price and change the game.
I spent most of the next 6 months working on the basics. Can it be done? What material? What gauges? etc. What I found was that 2% bending error was not actually achievable on a crank arm with the generally accepted setup (a bending bridge). If you narrow your scope to a fine window it does but that didn’t sit well, but if you start introducing some cases that fall to the edge of the norm just a tiny bit (and encountered regularly in mountain biking) you’ll find that it’s closer to +/- 7% to +/-9% on torque accuracy depending on the setup. Let alone rotational accuracy from an accelerometer algorithm.
I’m 4 months in, looking at these numbers thinking I’m a not going to be able to pull it off - not with the accuracy everyone is claiming! I quietly start looking for a solution. How do I make this better. I’ve figured out the fundamental issues with user install but how do meet the accuracy. It doesn’t change from user install to pro installed. I tried angling the sensors, adjusting things, compensating for the non-symmetric cross section of the crank. Nothing!
Then I tried something else. What about adding a second setup! Something that can sense torque but that is very different from the first. Then, using my Design of experiments mythology and statistics I figured out that there is a super cool correlation. I was blown away! This was big, this was the answer to my hopes to get me that 2%. Not only that, but generally gave 0.5% error! This idea is so revolutionary that we put patent pending in place on this technology, among many other things.
We needed to package it, and admittedly the packaging isn’t perfect for the drive side and the last few years we’ve seen a mess in bottom brackets and now we’re seeing a mess on the chain ring bolt patterns causing incompatibility of some manufacturers cranks. This is sad. However I’m glad to say the last 3 generations of Shimano 105 (5600, 5700, 5800) work, Ultegra (6600, 6700, 6800 {this is actually epoxied together!]), and Dura-Ace (7800, 7900, 9000) all work. The latest Deore XT works for the Shimano MTB front. The 10 Speed SRAM Rival OCT works (my original workhorse on the prototype front) and the X9 looks good. FSA Energy is good too but their new 5 bolt asymmetric and SRAM’s 11 speed put bolts where we want the sensor. We are still searching for a solution. On the Carbon front the SRAM S900 works but we haven’t finalized our testing. We will be recommending using the calibration load cell that comes with the kit every year at least to check calibrations depending on crank arm.
Right now the product works, but in my bosses opinion is huge physically, so there will be a shrink in size and weight when we ship in a few months. This will also improve install-ability and compatibility as well as easing access to the battery.
However, one of the coolest things I’ve done which I hope to open to the public is my test data on the existing meters. It turns out it my original bending only design was better than existing solutions but was still +/-7% while the best off the shelf solution once we hacked into it’s sensor produced +/- 9% when we introduces pedal offsets.
Enjoy the promo code while it lasts. It’s our gift to you guys who believed in me on a personal level and going forward believing that we change the face of power for serious athletes at all financial levels.
*gage is generally considered the American spelling and gauge the British form.

Saturday, May 10, 2014

Long time since I posted. Working at a young company is different. It’s vibrant and people are open possibility. For me it certainly helps with encouraging my goals of being a better… Fat-hlete?

Sorry? a what? A fat-hlete you say. It’s pretty self explanatory but it’s something that’s been on my mind as I try and achieve my weightloss goals and get ready for the triathlon season.

The above calculator has told me I’m not just overweight, I’m obese. That word is dreaded, sickening, unmotivating, hateful, and depressing all at once. Honestly, I think I’d rather it say “fatty fatty fatty” as a technical term than “Obese”. It’s a word that is feels foul. And emotionally, it can be devastating to people. So while people say “You don’t look like you’re 220lbs” or “You carry it really well”… there is one place where not showing it doesn’t matter. When you do any endurance sport – especially on a hill.

Being from “The Rock” I’ve ridden hilly, windy, and winding roads. Newfoundland can be considered a tough place to bike. RDF means rain, drizzle, and fog which is a standard day. A low humidity day is 78%, a high is 99% and it’ll linger and not rain. A calm day is 20km/hr winds. A windy day (that I’ve biked in) is 60km/hr gusting at 80-90km/hr. And it gusts! It’s generally so tough that the Vikings couldn’t handle it and left. If they had been tougher North America would have been populated Vikings and the descendants of Leif Erison. I like to consider myself tough, and honestly not that bad on a hill. I can dig deep and find power power.

A rough calculation can show that 1kg of extra mass up a 100m climb with human body efficiency is an additional (m*g*h/0.05) => 5kcal of energy. So 10 of that is 50kcal. That means it takes just about one bag of M&M’s to climb 400m climb with an extra 10 kilo’s. The 5% efficiency is just a guess. I remember the 10% food chain transfer from high school, and assume like a car, you push hard, efficiency goes down.

Sounds great. If I don’t eat that bag of M&M’s I’m down 200kcal and bam 1/17.5 of a pound lost. It’s not that simple.

What works for me

I don’t have too much recent data since I started logging again on a few weeks ago. However I used to log a lot and here is something really cool. Weight gain averages little more than 100kcal a day. In the recent “Unbalanced Job” I was trying to cycle, run, and eat right but I missed too may rides and runs and I ate out too much and seldom do a restaurant have any really good options. If stressed I’d hit a Starbucks for a mocha, then an mocha + a snack, then it’d be twice a day. The company also ditched the semi healthy cafeteria service for a vending machine. A VENDING MACHINE. Yet the company also would pay for homeopathy through health insurance. Who’s fault is this – mine and mine alone. But the interesting thing, is my body is on average packing on 100kcal worth of weight a day. I’ve heard this magic number before. I’m not 100% sure if the body craves that much or if it’s the max “efficiency” for weight gain.

Can you lose weight and still have those mocha’s and junk food. YES! That’s that first straight line in the more recent detailed graph. My life is more balanced, I am focused, but I was still eating junk. Over 2 months and 1.4kg lost. Compare this with 1.5 months and almost 5kg lost. Of useless fatty weight.

It sucks to lock down. You crave things initially. And bad. Soooooo bad. It’s torture. However there is a cool side effect. When I was 260lbs (about 6 years ago) I could almost eat a whole 18” pizza by myself or a 460g bag of Peanut M&M’s and be fine. I wouldn’t get sick. I’d feel guilty, sad, disgusted with myself and during the binge eating I lacked self control. However, I could physically stomach it. Fast forward, I was down to 195lbs and I couldn’t stomach a full bag of M&M’s or a hot chocolate from Tim Horton’s.

I’m not back down to that level, but I’m getting there. An no, I can’t stomach Tim Horton’s hot chocolate. It’s about 3 times too sweet for me.

Victim of circumstances?

No – you can’t blame your life, job, etc. It’s a contributing factor and sometimes it’s harder to compete with. If a job or an element of your life is destroying your health you have to determine if it’s worth it. If you ask me, no… Never long term sacrifice your health.

It’s harder to get back as you get older and then the possibility of kids, permanent disability, etc sets in. Having a single parent that died when I was 14 due to preventable heart disease – NO, you do not sacrifice your health. I warm my friends now of long hours of stress, and doing overtime. 40 hours a week is unnatural if it’s hated work, and 60 hours will probably kill you 20 years sooner even with vigorous exercise.

So here is my long term timeline:

2003 – University begins

Summer 2005 – First Engineering workterm, stayed with cousin who told me to go buy a Canadian Tire (department store) bike to get to work because they would not be driving me and I couldn’t afford a car. There was no public transit in a small town like this. Hadn’t biked really since I was a kid, but it’s a small town! Around 250lbs. Had been continually gaining weight.

October 2005 – Riding to work, a car waved me to cross by riding across a cross walk on a side road, kept going not realizing the cross symbol changed for the major road. Hit by a GMC Yukon. No Helmet and listening to an ipod. I am a helmet advocate. I was lucky, my head scraped the ground and had the Yukon been going a little slower I would have touched down with brain damage. If it had been going much faster I wouldn’t have just cleared the 4 lane intersection, I would have landed in the direct path of traffic coming in the other direction. I was lucky. I won’t ride with anyone who isn’t wearing a helmet.

Knee busted up (Arthritis setting in the last few years) but not broken (I’m tougher than Vikings, remember?). Broke my left big toe. Suggested surgery to reset it – they messed up my mailing address, too late to fix but honestly not bad. Did I mention tougher than Vikings?

January 2008 – First workterm with General Motors in Oshawa, Ontario. I hit over 260lbs. However, it was a tough workterm where I would be walking around a plant six hours a day. I hated the job because it was so hard and there were days I didn’t have the thirty seconds to shove a sandwich in my face (union rep was the hugest asshole I’ve ever met, until I calmly told him I wouldn’t be putting up with his crap anymore – that’s how you get respect from and angry union rep. 90% of my people were amazing though.) I left this workterm at 220lbs. Terrible bus service meant if I missed the bus I’d walk 45 minutes home otherwise it’d be over an hour home via bus. I just spent hours everyday walking.

May 2008 – Returning from workterm I was complimented by my peers so much. Biking was easier. Still biked a bit, but not much, no real weight change.

September 2008 – Haven’t been able to lose weight. Returned to GM for my last workterm. Hoped it would be another 40lbs lost workterm. Didn’t happen. Left at 220lbs.

May 2009 – Bike trip to Europe. Not to lose weight, but cycled around London, to Cambridge, then Belgium and Germany. Not much compared to what I can do now.

Sept 2009 – Grad school begins. More biking. Bought my first road bike (GT Series 4, Low end, Sora components – and no matter what that one bike shop said. If you’re half competent you can maintain Sora shifting well. If you can’t, you’re not a good mechanic).

Jan 2010 – Wanted to do a bike race, but they didn’t exist in NL. My friends girlfriend was a runner, and suggested Triathlon as an option

May 2010 – First sprint distance Triathlon. Nearly died in water (near last), rocked the bike (+40 places), died during the run again (-17 places).

October 2010 - I started locking down on food, exercise, bought a Kurt Kinetic trainer for the winter. Started looking at creating a piece of software that had “virtual power” before Trainer Road did it right.

May 2011 – 2nd Sprint Distance Triathlon. Did well. Got down to the goal weight of 195.

Grad school stress sets in, looking for job, etc. I start to gain weight again. My diet had slipped a bit. Introduction of a few sweets / treats once and a while.

October 2011 to Dec 2013 – My “unbalanced job”. The job was good. I learned a lot. However it was not an enticing place to exercise (and other things). I had a lot of conflicting activities outside of work which meant healthy eating went out the window, exercise was compromised and my weight gain continued. There were several employee’s that made comment to my face ( and some while smoking directly next to the entrance of the building by the “No smoking within X distance” sign) – and not encouraging or positive comments. Later they hired more young people which made it more comfortable. However, it was not 100% conducive to being active at the workplace. Sticking me in an industrial park for 6 months without a shower or even sidewalks was a contributing factor in wanting to leave.

Jan 2014 – Present – New job working on sports tech. It means while I look ridiculous going for a run at –24 Celsius, the response is “awesome!” or asking if it was good, or commenting on how tough I am for doing it.

What’s your point?

I see people posting on Facebook / twitter / blogs about weight loss. Here’s what I see a lot of

Naturally skinny people saying “don’t take advice from fat people”

Overweight people feeling lost

Overweight people have success but usually via spending a lot of money to a “coach”

A handful of success stories, but then struggles to keep off the weight

So what have I figured out

Refined sugar is the enemy of all. Figure out if other things are your specific enemy. Just because you aren’t allergic doesn’t mean you can respond poorly to some foods

Life balance and support. It’s not good if you’re so time constrained that you can’t cook or eat proper meals. It’s also important to be around people who will lock themselves down and understand your goals. This is hard for a lot of people to truly support that

Find a tracking method that works for you. I like to weigh daily. If I start inching up in weight it’s a red flag. I read “weight once a week”. I call BS on that. My weight can fluctuate 2.5kg from day to day with overeating and hydration. If you’re weighting weekly you can’t see that. Honestly that guilt snack you had might show up, guilt you the next day, and keep you way from another for a week. It’s probably unhealthy to rely on guilt, but I figure a little guilt about a snack is better than a lot about being overweight.

Sunday, March 23, 2014

I haven’t written for the blog in a while. I still plan to continue the review process of tracking software but it’s fallen to the way side as I’ve been helping out with all sorts of projects at my new job, getting use to my new surroundings, and just generally trying to keep up with an exercise routine.

That exercise routine means that I’m getting more weight contentious. I like to refer to myself as a “tank of a person”. I’m not designed for endurance sports – my body takes more to things like weightlifting. So triathlon is fighting an uphill battle. I’m getting stringent on the diet side of things. I use to track my weight manually in an excel spreadsheet, but more and more pieces of software can track it as well along with my activities consolidating the data.

Garmin Connect is shown below. With a single data point based on this hack.

Essentially I wanted a Tanita BC-1000 or BC-1500 but as shown by DCrainmaker here in his comments, the ANT+ weight scale thing isn’t what he’d recommend. Sadly, I think he’s right, mainly because of the use case. It’s nice if a watch can track, but the FR910xt isn’t designed to be worn all the time. My FR60 was, but it didn’t do powermeter data.

Since I’m not in the mood to spend that much on a scale, I figured I’d toy with some things first. Mainly the goal is a cheap digital scale, connect it to the nRF51422 and voila – a basic ANT+ scale. It won’t do body fat measurements, but its a start. Eventually I may look at a Withings or Aria solution.

There is suppose to be a bunch of two way communications back and forth but it’s not necessary for basic weight. Essentially the scale spews weight and the watch will get it. I throw the ANT+ sensor simulator into weight scale mode. It starts transmitting data. I can set it to computing, invalid, or a weight and set the weight in 2 decimal increments. No idea what the watches will record.

Page 2/3/4 contain the other information like hydration, body fat, metabolic rate, and mass of muscle and bone. I noticed when I tried this with the FR910xt that it just received the data, but the FR60 immediately sent data back to the sensor simulator for my activity profile. I think this is to try and support multiple people and the scale can use the height and age in the BIA calculation for body fat.

Interesting. Some pictures showing how to turn on ANT+ scales on on your watch. First the FR910xt:

Here is the trick. I had to actually check the manual. Press the power button and it’ll start scanning for the scales! I spent a few minutes feeling like an idiot here.

I noticed that if I changed the software up or down while in this view, so did the value on watch screen. I haven’t experimented yet with what is recorded on the watch.

Now with the FR60. The menu setup:

And here is the FR60 Trick. Hold the light button for a couple of seconds and it should show up scanning.

The next step is finding a scale to disassemble. Also I stumbled onto a great Texas Instruments part that came out recently, the AFE4300. It’s an analog front end to measure strain gages (for weight), an AC current driver to drive current from one foot to the other through the body, with a differential voltage input to determine Bioelectrical Impedance all in the same package. Dev kit is 200 dollars, so that’s probably not the right solution and the chip is a QFN I believe so I’m not keen on trying to wire it up. However, if I wanted to make a scale it would be a good starting point. so I’ll probably be doing it Nordic DK board + sniffing the data lines from a scale or interfacing to an old Accuity board that I have kicking around for basic weight.

Tuesday, February 18, 2014

Just a quick video using an app. I tried gStrings, a guitar tuner but the"Check Spoke" App (here) had better filtering for frequencies and added regression if you know the length, diameter, and material of your spoke.

Haven't checked to see if there is a good iOS equivalent yet, but I'm sure there are guitar tuner apps. Just match the frequency of the spokes, if a spoke it way off you might adjust it down. Keep in mind there is a balance between a true wheel and good spoke tension. If you aren't careful you could mess up how true your wheel is to fix the spoke tension, or more commonly, the spoke tension is messed up to fix the trueness.