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]!
60 thoughts on “Dartboard Watches Your Throw; Catches Perfect Bullseyes”
that seems a bit…overengineered. It has to be fast yes, but 6 PSUs? not to mention that half the steppers are being wasted at any given time, because all they’re doing is releasing slack. Mebbe a Core-XY arrangement would have been more suitable?
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.
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.
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.
I don’t think that approach would work. The resolution and capture rates are much lower with a wiimote sensor vs the current hardware.
Perfect if you want a dart in your lens every time.
> neural net or some other cumulative learning approach
A Kalman filter would be more appropriate.
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.
Greg – I know it has been 5 years since your comment, but if you still have any more detail you could share about your project, I would greatly appreciate it. We’re looking for a reference project that doesn’t require the Vicon camera setup. (I did check out DJ Lee’s lab page!). Thanks in advance!
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.
The least amount of engineering would be to tune the PIDs in your body… with practice. ;)
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!
The least amount would be to attach a funnel. Deflector coils would be another fun example of over-engineering, though!
Or an active guidance system for the dart. :-) With IR emitter in the bulls-eye and actuated vanes on the dart.
Mark Rober worked on the curiosity mars rover. I wonder if he pitched the overengineered landing system.
This is too cool!
haha this is wonderful, I was laughing out loud when I saw the gif!
Curious what it cost to build. Decent quality parts being used here.
“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.
I like it, It’s the Aimbot the real world never wanted this has other applications i’m sure of it ground drones that catch those attempting suicide, OH no that would then turn into a sport of some sort Fek.
So the goal now is, how to not hit a bulls eye.
Throw two darts at once.
Throw a dart without retroreflectors.
Use the other dart :)
He mentions one hits the center every time, the other misses every time.
I SEE A GIF :(
My netbook will be quite thankful once that GIF is gone…
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.
My xu4’s a15 seems to handle it fine
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.
Acorn branded? I think you are living in the past – ARM stands for Advanced RISC Machine since 1990.
That’s nearly 30 years ago!
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.
Or “LG” doesn’t stand for Lucky Goldstar…
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.
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.
Isn’t this a browser thing? Like how badly Chrome handles memory?
Miniaturisation needed and fit it in the dart. :)
Doctor Who did it with an arrow.
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”.
Kobayashi Maru cheat, mark II.
To hit the target every time, shoot first and call what ever you hit the target.
This is an amazing project. Good job
No using an IMU on the thrower won’t work, people have fingers – and erratic motions.
Next step is auto-guided darts, not moving board, with ever miniaturising electronic, everything will be possible…
This looks like something that needs to be in every cartoon villain’s lair.
Usually the term “moving target” means something completely different!
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?
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.
It certainly works. Could it still be improved a bit? Of course.
Now add voice recognition, to allow for announcements and different hit zones: “Triple 16!”
Not to mention that in true darts competition, the triple 20 is more valuable than a bullseye.
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.)
“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.
The board could wait for the thrower to blink, then move. :)
It’s the Barney’s Beanery in Pasadena right?
They did this back in the Robin Hood days. :-)
Put this guy in charge of missile defense. :-)
Just build cities on large gantries that move away from wherever the missiles are headed.
Creative :-) I supose it’s more practical just to abolish cities alltogether and force people to spread out so no one missile can take out a significant number of us, then the rest can respond appropriatly. rural >> metro on any account as long as we can get food, water, electricity, civil order, internet, parcel delivery and local friends. (rural America is very strong on all these) That’s all a maker/hacker really needs right? If we want lots of bright lights and noise like in the city we can just play with LEDS and class D amplifiers or play beat-saber on our HTC Vive. Big cities are overrated. It’s amazing how few city-dwellers have seen a beautiful dark star-filled sky and navigated campsite trails by starlight, something that should be on everyone’s bucket list. :-)
Awesome project. Something I thought of last year was a model that predicts where the dart will hit based on eye-tracking, previous throws, angle, etc. (calculated as soon as it leaves the hand)
Please be kind and respectful to help make the comments section excellent. (Comment Policy)