Close

Changing platforms.

A project log for GimbalBot

Gimbaled thrusters, aerospace-grade adhesives, carbon-fiber-reinforced polymers, and inertial measurement units. This is a space project!

zakqwyzakqwy 06/26/2014 at 23:352 Comments

TL;DR: STM32F4+ChibiOS/RT --> Arduino Due, because I need to keep moving.

In my 29 years, the biggest challenge I've had with projects has been staying motivated. That's why GimbalBot is on HaD.io; chasing a silly prize is a great bonus, but I'm hoping that staying in the public eye will keep me moving forward. I don't want to dig through my closet in ten years and find a half-glued carbon fiber frame with a few sad blinking LEDs; I want to follow this one through to the end. If you've made it this deep in to the project logs, I'm guessing you've experienced the same thing (or else it's you, Mom, and you remember the piles of half-finished circuits in the basement). After all, there's no better way to procrastinate coding a difficult control loop than to get lost in an insanely long build thread.

So what affects project motivation? What pushes us to stay up past midnight on a weeknight, hammering out circuit board designs and building BOMs? Why do we stay at our soldering irons when the other kids run outside to hit things with sticks? 

Forward progress is key.

Or at least the feeling of forward progress. I often sit down and work on GimbalBot for a few hours after work, or after breakfast on the weekend... and I like it when something happens each time. It can be minor, like a few tweaks to the CAD model or soldering up a few power connectors, or it can be major, like a successful prop thrust test. Or I can work on something for a few hours, have it not work at all, toss it in the trash, and put together a plan for fixing the problem during my next work session. That's still progress.

So what happened? Why did I get all philisophical on you, my imaginary reader base? I've stalled with my code. Between last weekend and most nights this week, I've probably got 20+ hours in to the STM32F4+ChibiOS/RT platform without much to show for it, and I'm ready to cut my losses and move on. It may seem like I've made progress--well-tailored build logs can create that illusion--but I really haven't. I need to get a basic serial debug system set up and the inner workings of the firmware have thus far eluded me, so I'm stuck pasting together demo programs and helpful (but not always compatible) projects from the greater Internet. It's gotten to the point that when I google 'ChibiOS' or 'STM32F4' along with 'USB', 'Serial', 'I2C', or any of a number of other terms, all of the links are purple. Even on the second page. Not a good sign.

Why? Well, I took a class in C++ a number of years ago but we really stopped short of the advanced (intermediate?) stuff. Dealing with pointers and casting variables makes my head spin a bit, and I haven't had much luck figuring out what makes the program tick by studying gobs of publicy available source code. I should point out here that Giovanni Di Sirio has done an amazing job developing ChibiOS/RT--no small feat for a team of paid programmers, let alone a single guy working on an open source project. But he didn't develop the OS for newbies; it's a robust, compact, efficient platform for experienced developers. Which brings me to a humbling point I've danced around for many years...

I'm not a programmer. 

Maybe I should say I'm not a good programmer, or I'm not an experienced programmer. But it's just not my specialty, by a long shot. To be fair, I'm not a CAD modeler either, but I can fake my way through that (at least for the basic stuff I putz around with). I can piece things together from old programs I've written with a lot of help, but I need a lot of help because it's not something I do every day. As such, I've decided to transition GimbalBot from the STM32F4+ChibiOS/RT platform to the Arduino Due. The Due (which I haven't used in the past) features an ARM Cortex M3 32 bit processor and plenty of I/O, so I'm not worried about it handling my computational requirements; I'll miss the convenience of multithreaded development, but realistically my application will be fairly simple and broken in to discrete functional blocks.

So what's the lesson? Simple: I need to keep my pride in check. I started playing with Arduinos a number of years ago and eventually decided that I'd "graduated" to the big leagues. Some of this is because I read plenty of forum posts decrying the 'Duino's sometimes frustrating IDE, or its limited capability compared to dedicated processors, or, or, or... in any case, it's more than suited for this project and switching over will remove a MAJOR frustration point.

Thanks for letting me vent.

Don't worry, normal posts will continue early next week. I'm headed up north this weekend, but the Due (along with the power converter, hopefully) will show up next week so I can get crackin' on Kalman filters!

Discussions

Michael O'Brien wrote 06/27/2014 at 04:33 point
Nothing is harder than admitting that you screwed up. I've done that a couple times already and will have to change things again soon too. However, that's preventing me from getting the rest of my parts ordered to get this prototype functional enough to test performance of the SPI bus, which is the primary technical question I have.

Good Luck. Stay motivated!

  Are you sure? yes | no

zakqwy wrote 06/27/2014 at 11:57 point
Thanks man. It's always worth stepping back from a project for a few days when it starts to drive you a bit nuts. Or taking a minute to vent a bit here and there.

The challenges you're having with power and heat dissipation aren't trivial, but it's good that you're thinking about them now; also, keeping the documentation rolling always helps when you need a reminder of how far you've actually come!

  Are you sure? yes | no