Tuesday, June 30, 2015

Setup Dev Environment for the Parrot Minidrone SDK

Why a Minidrone SDK?

A coworker recently received a Parrot Minidrone Jumping Sumo. This is a wheeled drone that can jump 2.5 ft into the air and jump gaps (forward jumps). It has an onboard camera that allows you to drive the drone with your iPhone and see through it's eyes.

The drone also has an SDK for iOS and Android. Seeing that he has no time to use it he thought my kids and I might like it. So, now we have a minidrone with an SDK that we can use to control it.

But before we start with some code we have to get the dev environment setup so we can start to use this.

Start With Optimism

To get started, download the ARSDKBuildUtils and use this to install and build the environment.

Parrot Developers Github Community

There is an install document located in their repo: Docs/install/INSTALL

Here are the tools I had to pre-install:
  • wget, automake, autoconf, libtool
I already had homebrew install so installing them was fairly easy.
I already had git installed as well and did not need to install it with homebrew.

Here is where I said, I have a copy of libtool, I will skip that.

I had an openssl issue as well, but I will cover that later.

You Skipped A Step

Even though I had libtool installed, it was the pre-installed version and it caused many build issue. Since I had an older libtool than the library was built with the build scripts that were automagically generated were incompatible and hence I ran into a lot of compile issues.

Lesson for Devs Installing: Do not skip a step.

Lesson for Devs Publishing Libraries: List the exact versions of the tools you used to build your libraries on your machine.

When All Else Fails, Start Start Again

After trying the built in clean and force clean options of the SDK3Build.py build script and then rebuilding, I was still running into issues. I could see that the clean was not working.

So, I did the logical thing. After having installed the latest libtool through homebrew, I started over.

First, I deleted all the repos that the SDK3Build.py had downloaded.
Next, I deleted the ARSDKBuildUtils repo (folder, repo meaning repository I had downloaded from GitHub).

Now, with a clean environment with the list of prerequisite tools installed I started over, fixed the openssl issue, and volia I have a working dev environment for the minidrone.

What Next?

The samples for the SDK come with a sample of the new API they have written for one of their flying drones. That drone is a BlueTooth LE based device but the Jumping Sumo I have is a WiFi based drone. So, first I have to convert the BLE sample into a WiFi sample that can communicate and control the Jumping Sumo before I can do something more interesting with it.

Before We Go, What About OpenSSL?

The wget command to get openssl fails in the current version of the SDK3Build.py due to a certificate failure during the curl call. To get around this, I downloaded the version of openssl that the script was trying to download. Unzipped it into the openssl folder it had created and then reran the SDK3Build.py.

This allowed the SDK3Build.py script o get past the failure with openssl downloading. I had to do this again, after I wiped out everything when I went back to a clean slate.

Saturday, June 13, 2015

Mountain Bike Test Ride: Specialized S-Works Enduro 29 vs Santa Cruz Tallboy

How Old Am I?

I love to mountain bike. Always have, always will.
Riding Bauline Line, Newfoundland, 1999

About 17 years ago, boy I am old, I bought my hardtail XC Giant ATX 860. What does the XC stand for? It means Cross Country and at the time it was rated as one of the top XC bikes for the price point. Suspiciously, the price was about $860 as well.

That bike served me well for years as I rode trails in Newfoundland and Ontario. It was great for what I stuck too back then. But, here in the Northwest, it is not up to snuff. There are too many awesome trails calling out to me and for that I need more suspension.

Having ridden the trails out here, I have shied away from trying some of the "sick" stuff people have told me about since my bike and I are not up to these gnarly trails. I continually bottom out my front shock and get jostled around as I try to stay out of my seat to absorb the roots, rocks, and drops that the single track presents here.

It's time to change that and step up to the next level of riding I know awaits for me. So, when I saw that the local bike shop was having a demo day at one of the nearby trails I jumped at the chance to try some new bikes.

Specialized S-Works Enduro 29

Specialized S-Works Enduro 29, Image: Specialized
I wanted to try out the Specialized Stumpjumper 29 but unfortunately they only had the Medium which for my short legs was too tall. So, they setup their only Small Specialized, a Specialized S-Works Enduro 29.

Now, first, before you look at the price, oh you did already? Ya, $9300. I knew bikes could get expensive but that's insane.

This bike fit better than the Medium though, so I took it for a spin on the trails. For those keeping track, this bike has 155mm of travel (in it's suspension) and weighs about 26 lbs. The light weight and plush ride adds to the cost of this bike but this is one of the best All Mountain/Enduro bikes you can ride today.

So how did it ride? It was like floating over the trail. The trails at Soaring Eagle were not enough for this monster to notice. I went from picking a smooth line to avoid "technical obstacles" like logs, roots, rocks, drops, too hunting them out and smashing through them. I found nothing on the trail that made me slow down. This bike eats gnarly for breakfast.

Throughout the ride I hooted and whooped as I tried to keep up with this bike. Over and over I had so much speed coming through previously gnarly sections that I almost propelled myself into the woods as turns would come up too fast. Nothing slowed this bike down but my cardio.

The bottom line, this bike is more than I need. It is a blast to ride. But it would take some time to learn how to ride this bike. There is a learning curve here that years of XC riding did not prepare me for. I also don't have a lot of trails around here that truly need this level of travel.

If I had to make a complaint, it was that this bike was too plush for the cross country trails I rode it on. It felt like riding an easy chair through the woods and took away some of the joy as it was less nimble through turns.

Juliana Joplin (Standing in for Santa Cruz Tallboy 29)

Next up I wanted to ride a Santa Cruz Tallboy. Unfortunately they did not have one in my size. They
Image: Juliana
did have the women's version, the Juliana Joplin in red (my favorite color no less), in a Small which was a perfect fit. 

This bike felt like I expected. This bike has the same 100mm of travel as the Tallboy and is basically the same model with different colors.

This bike is dialed into the riding I most often do, XC. With it's 100mm of travel it let me scream through the same ride we had just done and still slam through technical sections.

This is more bike that I am riding with my hardtail today but definitely not as plush as the Enduro. Has the Enduro ruined me? Maybe.

This bike and the Tallboy are more in the ballpark of what I expect to spend. At $3399 for the entry level model this bike is more than I would like to spend (I'm cheap), but I know bikes are not cheap today. 

This bike would bring riding in the Northwest to the new level I am looking for. It is responsive, nimble in turns, wants to take flight off humps, and can absorb the gnarly sections. 


The insanely priced monster Enduro would be great if I step up bombing down the sides of mountains. Then I could use more travel but I don't see the need for it for my regular rides. Though fun, it actually took the spirit out of the tame, for this bikes suspension, ride that I put it through. It felt very squishy, especially with lateral control since this bike was built to fly down gnarly trails, not sprint nimbly cross country.

The Tallboy/Joplin was nimble, responsive and tuned to the trails we rode. This is the majority of what I plan to ride and with the travel in it's full suspension this bike felt like riding my hardtail with an upgrade.

The Tallboy also comes in Small so I can get the geometry and reach I want. That said, I really would like to try the Tallboy LT (Long Travel) which is a Tallboy with 130mm of travel. The big problem being that I would not be able to make that decision to go up in travel without trying out the bike since it starts in Medium.

All in all, it was a great morning and has given me some reference points to work with as I search for my new ride.

Saturday, June 6, 2015

Taking the Apple Watch for a Swim

I decided to try out the Apple Watch to track my swim today. I did an open water swim across the
lake and for today's setup, I took just the watch and left the iPhone at home. For a future swim, I will put the iPhone in my waterproof case and slip it down the back of my surf shirt which should hold it in place and hopefully get a GPS signal.

First off, yes, the Apple Watch is water-resistant. To see an in-depth review and set of tests check out DC Rainmaker;s post The Apple Watch Waterproofing Extravaganza: Swim, High Diving, Test Chamber.

What Worked

  • The watch continued to function (as expected).
  • I was able to track my workout time and heart rate using the Other option in the Workout app.
  • The Watch tracked my heart rate at 6 second increments.
What Could be Improved
  • Heart Rate measurements had some wild swings (likely due to reading interference from water). That said, most were consistent and appear to track with my perceived effort. 
  • Heart Rate was very high when I first dived in. Either due to my body adjusting or water interference due to a loose fit on my strapp. I tightened the watch strapp after a short distance and the readings became more consistent.
  • The workout app kept navigating to [End][Pause] screen. I can only assume this is due to water causing phantom taps due "Activate on Wrist Raise" being activated by swim strokes.
Things to Try Next Time
  • Disable "Activate on Wrist Raise" during swim to see if this eliminates the Workout navigating to the [End][Pause] screen.
  • Try out iPhone on board (ok, stuffed down back of shirt) to see if I can track the swim on GPS.
Here's a little swimming footage with the Apple Watch as I try out "Activate on Wrist Raise".