Dartboard Watches Your Throw; Catches Perfect Bullseyes

Some people really put a lot of effort into rigging the system. Why spend years practicing a skill and honing your technique to hit a perfect bullseye in darts when you can spend the time building an incredibly complicated auto-bullseye dartboard that’ll do it for you?

In fairness, what [Mark Rober] started three years ago seemed like a pretty simple task. He wanted to build a rig to move the dartboard’s bullseye to meet the predicted impact of any throw. Seems simple, but it turns out to be rather difficult, especially when you choose to roll your own motion capture system.

That system, built around the Nvidia Jetson TX1, never quite gelled, a fact which unfortunately burned through the first two years of the project. [Mark] eventually turned to the not inexpensive Vicon Vantage motion capture system with six IR cameras. A retroreflector on the non-regulation dart is tracked by the system and the resulting XY data is fed into MATLAB to calculate the parabolic path of the dart. An XY-gantry using six steppers quickly shifts the board so the bullseye is in the right place to catch the incoming dart.

It’s a huge amount of work and a lot of money to spend, but the group down at the local bar seemed to enjoy it. We wonder if it can be simplified, though. Perhaps tracking just the thrower’s motions with an IMU-based motion capture system and extrapolating the impact point would work.

Thanks for the tip, [Bmsleight]!

58 thoughts on “Dartboard Watches Your Throw; Catches Perfect Bullseyes

    1. First of, I love this hack so much!

      I do agree that some overengineering went into it, but before you know how large the problem will end up being I think it’s easy to do too much to solve it. Now that there’s a proof of concept I’d love to see a minimal version of this. Dan mentioned IMU for the thrower in his writeup — I doubt that would work since there’s so many variables in how the dart is released from your grasp. But certainly I want to see that method tried, I bet you can get that to be accurate enough to always get the dart within the “triple” ring on the dart board.

      1. I think cameras are the way to go really. A dart doesn’t really experience a whole lot of variation in trajectory once it is thrown, it’s pretty much designed around that specific goal. The software seems to be taking a ‘best guess’ every time instead of refining its trajectory data as it goes, so I suspect applying a neural net or some other cumulative learning approach would allow the trajectory to be plotted much more accurately, with the board ‘homing’ in on a particular location instead of jumping all over the place.

        1. With such responsive motors, you could put an IR pinhole camera on the dartboard itself and have it track the dart’s retroreflector and just move the board to keep it centered in the camera shot. Could probably do it with just a wiimote sensor, ir led’s and an avr.

        2. Cameras would work great. We did this exact same project in our computer vison class. With black and white, medium resolution, 60 fps cameras in a stereo vison setup, we could catch tennis balls shot out of a cannon going 60mph. The catcher was an XY gantry oriented vertically with a small net on the gantry head. It had a lot less mass than a dartboard. We could get about 3 frames before we had to extrapolate the trajectory and start moving the gantry but we continued to update the command position with subsequent frames. The balls position was computed using the stereo vision functions (and calibration features) in OpenCV. It was an incredible project! Oh, and it was doing all the image processing in real time on a pentium 4 with a multithreaded C++ application. Check out DJ Lee’s lab at BYU. He taught the class.

        3. I’ve seen a demo of this at a vision tradeshow. That particular instance used a framegrabber with integrated FPGA for the processing, which was what the company for which the demo was built was selling. Only two cameras where required for that one, and that system was a few years old already.

          There is little need for neural networks; we already pretty much know how a trajectory of such projectiles work, and have quite detailed functions to describe them. As such, using the fuzzy logic of neutral networks is not that useful. Neural networks are good at pattern recognition, and are just a bit to messy for something that behaves so predictable as the dart would IMHO.

          The jerking of the board could also be caused by the lack of data. The resolution of the camera (in px per mm) would increase in time as the dart comes nearer to the board. Hereby increasing the estimation of the position (and the estimation of the current speed and suchlike). This might very well not be a problem of the algorithm but one that stems from data uncertainty.

        1. Yeah -> I had to share this with my dart league team, and you can imagine *that* email thread is going to rapidly devolve into back-and-forth teasing along those lines. heh.

          Nice job, over-engineered or not!

  1. “When I get an idea like this, I can’t not do it.” Firstly, I don’t doubt it, this is an awesome idea! Secondly, been there — BB-8 droid. Wasn’t my idea, but couldn’t not do it.

    1. I know right? I tried using a quad ARM Cortex A7 SBC as my desktop a few days ago, I never realised how much GPU acceleration and overall CPU power is required for smooth web browsing. An A17 might do a better job but if that fails we’re into A73 territory which is expensive right now.

    2. Surprisingly, GIFs were invented 30 years ago (animated ones were introduced two years later, in 1989) and they’re still a problem for modern PCs with overclocked multi-core Intel 80386s. Apparently, they’re a problem for Apples, Raspberries, Oranges and Bananas with Acorn-branded (what a coincidence!) CPUs, too.

        1. It will always be “Acorn RISC Machine” to some of us, who do not abide by retro-naming. Next you’ll be telling us that “GE” doesn’t mean “General Electric” any more.

      1. 80386 is 32bit age, now we wave mostly 64bit CPUs in the PCs :-) But, on the other hand, I don’t see problems with the GIFs, except when the internet connection is slow. But then videos would be even more slowed down.

    3. Decoding GIFs are easy and animated GIFs are just a sequence of timed frames. IOW if you can’t view GIFs without problems with a tiny CPU load something is very, very wrong.

    1. What I liked about this hack is the different approach. When presented with the problem of hitting the bull’s eye, most people think “homing dart”. He decided to “move the target”.

  2. Great laugh seeing that GIF, and even more-so upon learning what all goes into it.
    Overengineered is an understatement, but gotta give props to the dude for accomplishing it with his these methods… often this extent of overengineering would result in fail due to ever-compounding unexpecteds… e.g. low frame-rate on the camera? Simple solution: look into different sensors. Hard to determine the trajectory from the initial throw (where it wobbles)? Simple solution: don’t use math based on initial-trajectory. It’s funny how we have computers capable of (and pretty much *designed for*) incredibly-fast iterative-approaches to things, and yet solutions often seem to be based on non-iterative and incredibly-complex *predictive* approaches, like this. What’s a parabola look like when zoomed in to 1 millionth of a second, or even 1 thousandth? OTOH, this dude actually accomplished it, so what’s that say about my approach?

    1. It actually doesn’t say anything about YOUR approach. It only says that his approach can be made to work. It appears to be hunting, which doesn’t surprise me since the use of stepper motors is going to put a lot of time lag in the feedback loop, which has a destabilizing effect on most control systems. But still, it’s hard to argue with success.

  3. Haha… I showed this article to my younger sister, who is a bit of a darts enthusiast, and she deadpanned “…that’s stupid, you don’t always want a bullseye.” then walked away.

    Personally, I think this is an awesome proof of concept. I foresee two evolutionary steps for it; finding a way to ditch the retro-reflectors on the darts, and installing the motion axes inside a wall, coupling the board to it magnetically…so it appears outwardly as just a normal dart board installation.

    From there, you’ve got a platform for making it do just about anything…though it’d be *hilarious* to make the board move EVER SO SLIGHTLY (Or very dramatically at the last moment, depending on the comedic effect you’re going for…) to screw up peoples’ throws. So you’ve got a normal-looking dart board that ninja-dodges your darts. Best prank ever! (The “I’m not drunk, you’re drunk!” dart board.)

    1. “You don’t always want a bullseye.” — It shouldn’t be too difficult to program this thing to change the target for each shot to the perfect sequence of shots for whatever type of darts game you wish to play.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s