Thantacles, MTB Ryan and I have been thinking for a while about how to empirically and efficiently measure the accuracy of various darts and blasters. The advent of chronographs and widespread fps testing has sparked an arms race in blaster performance, but for accuracy testing we're still mostly going by gut feel, or measuring how many darts hit a target at a certain distance, which is never the same between two people testing. The accuracy testing that Bobololo and Coop have done in their videos is great, but extremely time consuming, because they go through the video footage and mark the location of every dart hit by hand. We've thrown around ideas ranging from shooting a sheet of Play-doh to a big sensor grid based on capacitive or resistive touchscreen technology. But the one that seems to show the most promise so far is Computer Vision. Here's the criteria:
Low hardware cost and construction time, so that this can catch on and we start seeing more empirical accuracy data. Giant sensor walls would require significant time, experience, and hardware to build.
Empirical, with large data volumes. Not subject to people's aim. Additionally, having more data is better, eg the location of every dart on a target is better than just a group size number which is liable to subject to outliers, or a number for what percentage hit the target.
Low testing effort. Play-do or inked darts require setting up for every test, and then you have to manually digitize them. You're probably not going to bother recording the location of every dart, and just measure group size, which doesn't give you as much to work with.
So the solution we came up with on Sunday was to shoot the darts against a white wall, and place a microphone on that wall to record the impact of each dart. Take a video of the whole thing, and extract the frames that correspond to the audio spikes when the dart hits the wall, and then do a computer vision analysis of those frames to get a location for every shot. I've never done computer vision before, but I hear the OpenCV Python library makes it fairly straightforward. Let me know if you're interested in helping.