Written by Elecia White.

Intro slide

 

I gave a talk last week at the SupplyFrame/Hackaday metetup. It was supposed to be a reprise of my introduction to inertial sensors that I wrote about here a few months ago.

 

However, when my order for a pair of the Star Wars BB8 robots came, I decided I’d rather talk about a specific application of inertial sensors instead of the theory and math. (Chris got co-credit for the talk because he did a lot of exploration with me as well as taking the pictures. Plus, his is the robot I took apart. Mine is unharmed, naturally.)

 

After talking to Dan Hienzsch (115: Datasheeps), I wanted to try out disassembling something, to see what I could learn from reverse engineering. These robots had the allure of odd motor systems, consumer electronics, and incredible niftiness.

 

Even so, the BB8 is very much an interesting inertial sensor problem. The smart phone application that drives the robot can be set to show sensor plots, sometimes showing all three accelerometer axes as well as its other available sensors (gyro, temperature, proximity (via BLE signal strength, I believe).

Three sensor viewssensor view showing dead reckoning

The system even showed some dead reckoning capability. It would reset often and wasn’t precise. However, it indicated the system was running some sort of sensor fusion algorithm to integrate accelerometer and gyro readings to get to position. This is neat!

 

All of this made me want to know what was inside the robot but the next step was somewhat difficult. Oh, not physically or mentally… but once you’ve driven one around or left it in its patrol mode, they seem quite friendly. Applying a Dremel tool to open my new little friend feels a little odd.

Applying Dremel to shellOpening the shell to see the inside

BB8 without the shell

 

The robot is based on the Sphero, the ball robot that has been around for several years. Somehow putting a magnetic head on a stalk made it more personable to me (or possibly it was the Star Wars branding, I’ll admit to being extreme susceptibility to that). The head doesn’t have any sensors or smarts, it is just a magnet encased in plastic. The device works perfectly fine without the head on.

 

Once I opened the robot, I could take off the stalk and reattach the head (which travels on the outside of the shell). The head stays “up” because it is magnetically connected to this stalk that is opposite the weighted bottom.

 

The BB8 has only two motors. And these are two normal DC motors, not the six needed from howbb8works (you can slide the button to see it with an invisible shell) or the four in the xkcd view. From a consumer electronics point of view, this makes perfect sense. Differential drive can suffice for all occasions: going forward/back is rotating the wheels together and turning is simply rotating the wheels in opposite directions. The solution seems obvious (now).

Weight and coil at bottom of robot

Like a Weeble, the device has a low center of gravity (CG) so pushing on it (either in the shell or outside) means that it will wobble, tending to right itself. This is due to the weight at the bottom of the internal assembly. (The copper rings are there to support inductive charging of the battery.) It is easy to consider the mass as a counterweight. However, that isn’t right: when the wheels move, the system becomes overbalanced causing the mass to fall which causes the ball to roll which is how the system moves.

 

There are clear Sphero SPRKs to show this unintuitive mechanism. Not having one, I put my disassembled unit in a clear plastic ornament from a craft store and got a finicky but enlightening version.

 

That is all neat and such, and I don’t know about you, but I’m here for the electronics. Forgive me for spending so long on the things that matter less, let's look at this board. The bottom side is filled with passives, connectors, and test points.

 

Bottom of board

The test points are exciting: it gives me some confidence that I can see some software. The fact that the board is clearly labeled and parts are not potted means this disassembly is going to be fun. Of course, the top side of the board is the more interesting with processors, more pin labels, and some hints about how it all works.

 

Top of board

 

I suspect the chip package markings are a little difficult to see on that photo. With judicious use of macro lens and camera, here is a view of the board with the identifiers marked more legibly.

 

Top of board with markings

One of the things I learned with this disassembly was that I appreciated the puzzle nature of this problem. The things I had to work for were far more satisfying than the concepts with immediate understanding. With that in mind, I’m going to finish the electronics part of this teardown tomorrow. I plan to cover the sniff-able parts of the software and the BLE next week.

 

In the meantime, there are other teardowns that are worth a look:

 

Sphero makes the BB8. They also make the ball robots (without heads) and have an extensive education support system.

The slides and video from the talk are on embedded.fm/hddg. (That also has a video link to the Solid Conference inertial sensor talk.)