Pulling data from fast moving disc

I want to be able to pull speed, rotational velocity and tilt from a frisbee/disc moving 60-70mph from about a 15-20x15-20 foot area.
What are recommendations to do this? the view would be from above, or from above and sides. my main problem is being able to pick up the data from the disc that fast, as I have a webcam running a simple fiducial marker program that can barely pick it up with speed right now.

If you don’t need real-time measurement, you can store the video frames as they come, and take your time with the detections and calculations

show us some data. I could speculate a lot but that’s pointless without data.

if you’re gonna do rocket science, may I suggest units that don’t require caution.

  • 70 mph = ~30 m/s
  • 15 … 20 ft = 4.5 … 6 m

so your UFO traverses the area within ~0.2 seconds, which gives you just a handful or so of frames.

what’s the type and size of the marker on that frisbee? pics are best, banana for scale sufficient. if you need motion blur to be under ~10 mm (assuming a big fat aruco 4x4 marker on an average frisbee), you’ll have exposure times of 1/3000 secs (0.3 ms) or shorter. you better be doing this under daylight conditions.

Ive been thinking about that, I just don’t know how fast of a camera I need for it, so I’ve been trying to research that. I will look more into that option. Do you have any advice on applying that? Storing the video that contains that data and nothing else, so I don’t end up recording the entire thing and wasting space, to increase the speed of processing it at least.

I don’t have any actual data as I haven’t built the structure it will be in. I have included an image however of what i intend it to look similar to. It is for a disc golf simulator, so I will be throwing a disc golf disc into the screen and I want to be able to pull the data from it and render the rest of the flight through unity with that data. I plan on having artificial lighting to make sure the camera picks of the disc better. I have a prototype disc I have also included in this response.

the disc is about 11 inches, but they can range from 8-11

Since I can only add one photo per post, here is the disc:

if that disc can warp like here, those smaller arucos might be a good idea to keep around. small “module” sizes (marker “pixel”) are bad, so make them all as big as you can.

oh and you should use 4x4 arucos, not more. the finer the detail, the harder it’s to decode.

of course you could just ignore the marker ID and just use the largest detected quad… but that’s an option, not a design goal.

if you can, you should synchronize the light to the camera’s exposures (either end signals the other). you’d need an “industrial” camera for that (three-figure prices). the point is that you need the light only during the exposure, not outside of it, so you save energy/light, conversely concentrate it where (when) it matters.

light would strobe at the camera’s frame rate, of course. frame rate doesn’t really matter for your trajectories. 30 fps gives you some data already. it’s more important to have enough light in each exposure, and short exposures. if you don’t, you won’t be able to make out the marker at all (blur).

more light also allows you to narrow the aperture, so you have more depth of field.

another trick is to use retroreflective tape. cut the marker from that (I’d try that for the black modules, and then inverting the picture). this gets more light back into the camera, requiring less light, or shorter exposure times.

and I would strongly recommend a camera with global shutter, rather than rolling shutter. at exposure times of less than a millisecond, it’ll probably not matter though.

you can safely start playing with a “webcam” but they generally suck. perhaps try a camera module for a raspberry pi. those allow some hardware control that random webcams don’t, and they’re cheaper. and I think those things can either take a strobe input or output on GPIO.

resolution needn’t be too high. given the distances you’re working with, and the size of the markers, and the field of view, something like Full HD (~2000 px) ought to be good enough. 6 meters / (3 mm/pixel) = 2000 pixels.

that won’t catch those tiny arucos but the big one would be resolved well enough. you’d want to calculate with at least 2.5 pixels per module.

perhaps deploy multiple cameras. assuming they’re mounted on the ceiling, if the ceiling is too narrow, you’d have to have ridiculous field of view for a single camera. of course, synchronizing them can be tricky. best if they support that in hardware, or each frame comes with a usable timestamp attached to it. different computers can be synchronized to better than millisecond time when they’re on a LAN.

Thank you, that is all so incredibly helpful!! I would look into the retroflective tape, but the way the business wants it to be manufactured would prevent me from being able to implement it, however that sounds like it would be very beneficial.

I didn’t even think about the resolution of the marker themselves, 4x4 sounds like a good size as it can be picked up at a lower resolution and faster decoding.

I was considering synchronizing the lights with the exposure, however, I don’t know how that would affect the user of the product. Would it be possible to just leave the light on the entire time? or keep it on and just pulse brighter in sync with the exposure?

I will probably increase the size of the arucos on the edges and decrease the resolution to 4x4. I also don’t have a ton of experience with localizing with the arucos, so if you have any resources you could point me towards that would be much appreciated. I have worked with them previously, but only utilizing my own algorithms that were basically a simple pixel analysis.

I also found this camera. it seems to meet the specifications you stated, and more. Does that seem right? “Sony XC-ST50 B&W CCD Camera.” it also is black and white, and I assume that since it is one channel it allows the processesing speed to be faster.

play around with it. 60 hz flicker won’t bother anyone. 30 hz flicker will. if you synchronize to a 30 fps camera, you could insert additional strobes for creature comfort. if you need humans to not notice the light, either keep it strobing above perceptible frequency all the time, or switch between continuous and strobed as needed. you should worry about that after you know from experience how much light you need to still get a low-noise picture, given the low exposure times you need to keep the motion blur down.

strong (continuous) light should do for prototyping. you’ll see how much/little noise you get.

opencv comes with all the stuff for aruco.

monochrome in general is perfectly fine, because the algorithms don’t use any color, and this way you get all the photons to matter (no bayer color filter on the sensor), but…

it’s useless. it’s analog, meaning you need a capture card for that. sensor resolution is stated to be “768 x 494”, which is potato. it’s doing interlaced scan. junk. and pricey. I see one company selling them for over $500. probably to people that need this as a replacement part and would otherwise have to put their entire systems in the trash.

if you pay that kinda money, you’d want something with USB3 or GigE (and don’t forget a suitable lens). industrial stuff sadly doesn’t often support “USB Unified Video Class” (“webcam”, supported by all operating systems) but industry-specific standards like “USB 3 Vision” or “GigE Vision”. I have no experience with using those from OpenCV. the manufacturers may give you drivers and custom APIs.

perhaps go with brands like basler or allied vision. they at least give you a python API. nobody in their right mind would prototype anything in C++ and I wouldn’t even do production stuff in C++ because it’s just insane. with the right “tricks”, python can be made to perform to nearly the same speed, or better, with ease you will never get in C++.

before you spend money on an “industrial” camera, I’d recommend talking to their representatives, or their resellers. for prototyping, borrowing a webcam, or grabbing a camera module for a raspberry pi, would be just fine.

hell, maybe someone you know is a youtube streamer. these people have HDMI-to-USB3 converters (usual price ~100 bucks) and if you then have a DSLR or camcorder with HDMI output, these cameras tend to be able to do 1080p60, which is enough for prototyping. and these cameras usually let you adjust exposure time and aperture.

I think 60 Hz strobing will bother some people, particularly with a moving object in their field of view, and with as bright as it will (presumably) need to be.

I would consider using infrared light and a camera (and lens) without an IR cut filter. You might need a special ink / printing process so the markers would be visible when illuminated by IR. You might want to use a lens with an IR pass filter to block out the visible light, but if your IR strobe is bright enough and your exposure time is short enough, it might not matter.

For a camera, there are a lot of options out there. I have used Basler and Point Grey in the past and had good luck. Depending on the volumes and the budget for the imaging package, you might consider looking at e-con systems (India). They have been good to work with and had the best combination of support, customization services and prices (for my application), and their cameras are UVC compatible. I’m most familiar with the See3cam-CU30 family based around the AR0330 sensor. This uses a rolling shutter, which might be a factor, but they do support manual exposure control, and I think they have an external trigger pin (to synchronize with your flash.) I think they are all board-level cameras (no housing, maybe no lens mount, etc.) so you have to be willing to deal with that. For the fastest readback over USB you will have to use a compressed format(I think it’s mjpeg, but I’m not sure), otherwise you will get lower frame rates for raw (UYVY) images. I think you can get samples of USB3 cameras in the $100-$150 range, but it’s a bit of a process. They will want to qualify you project first, most likely. They will sell small volume sample quantities, but their business is focused on larger volume customers, so that might not work for you.

For lenses I have sourced quite a few from Alibaba suppliers. Probably the highest quality (and most expensive) supplier I have used is cn AICO, but have had good luck with less expensive options (Fuzhou Chuangan Optics, Shenzhen Trace Optical, Shenzhen Hyee, Shenzhen JSD). This is mostly with S-mount / M12 lenses, but some M8/M7/M6 lenses, too. Most of these lenses can be ordered with or without an IR filter.

I like the Sunex products, too, but they are too expensive for my application.

If you know what lens parameters you need, I might be able to suggest something. I have an extensive library of S-mount / M12 lenses. Most are wide FOV with focal lengths ranging from 1.5mm-2mm, but I also have about 6-10 in the 4mm-5.5mm range. Most are pretty fast lenses (f1.6-f2.0), but a few have smaller (larger numerically) apertures. Most are 1/3" format or larger, most have notable optical distortion. They range from 2mp to 12mp optical resolution.


1 Like