Currently, we are using Photonvision and Orange Pi for vision tracking (Note and April tag). With this system, the range is about half the field, if that. What other Camera/Vision package that is good for 40-50’ range. Something you can adapt to perhaps Tennis Ball Bot Practice that track a player.
This seems a bit overkill for FRC robotics, since the field is only like 40’ long so you can almost always see a tag. If this is for something else like an offseason project, I might suggest just using your current setup and bigger AprilTags. Photonvision and Limelight both allow you to change the size of tags (to my knowledge) and this should increase your range.
If your goal is like machine learning tracking a human and not AprilTags, this wouldn’t work though.
What if you tape a AprilTag to a human (T-shirt, label, etc) and track that? Imagine tracking a player in tennis court and have a shooter that either shoot/lob the ball to certain location. Basically practice bot.
To detect the presence of an apriltag from a distance just requires there’s enough pixels on the tag for the processing algorithm to run and decode the ID and the corners. A high-enough resolution camera with a snazzy, low-distortion lens is probably sufficient here.
The next question is how to use the detection.
Simply looking for the yaw of the center of the tag left-right in the image is pretty straightforward - even at distance, I expect this to be fairly robust and free of footguns.
Using it for 3d pose at distance will be fraught - if the corner detection is off by even a fraction of a pixel, it’s likely that your estimated pose will be off by a comparatively large amount. Additionally, you’ll be really sensitive to accurately measuring your camera’s physical mount position - small degree errors in the angle the mount is at will cause large errors in detected position when the target is far away.
The only plausible solution to this that I can see is multiple cameras (2, 3 or 4) so that no matter where you are on the field there is a tag within a reasonably short distance. With last year’s field worst cases (afaik) were in the shadows of the stage (green lines), leaving you about 20’ from the speaker tags.
Invest in high accuracy cameras and camera mounting solutions (read: very expensive)
Maybe others but that’s what comes to mind for me.
It’s important to understand the issue I’m laying out for you is fundamentally a Signal-to-noise ratio problem. There’s no magic algorithm to get around this, information theory can prove that. Your only options are are make the signal bigger (option 3 or option 1 above, or John’s answer), make the noise smaller (option 4 above), or just accept whatever SNR you have at the moment is good enough to accomplish your goals (option 2 above).
I think if you doubled the size of the AprilTag it would double the range, at least according to a pinhole model of a camera. Switching to the 16H5 class would also give a slight boost, as the squares would be comparatively larger. The drawback of this is taping a 14"–15" solid square to whoever is getting the projectile launched at them, but it could maybe boost your range significantly.
Assume we start from some known pose [position & orientation] (+/- uncertainty). As we travel we can maintain our pose state via IMU / Odometry, but our uncertainty keeps increasing.
Whenever we see an AprilTag there is also some amount of uncertainty. If the AprilTag uncertainty is less than our current state we can update our state (seeing multiple AprilTags at once reduces that uncertainty).