I'm trying to implement a tracking system for small robots essentially on a like a table top arena or maybe slightly bigger. I want to be able to track their position/rotation and radio it back to the robot to close the loop on it's navigation.
I believe Aruco markers would be ideal in this case allowing me to track position/rotation/id where I can use the id to radio back to the robot with that position. However, my concern is that most of, if not all examples I see around this are related to figuring out the camera's pose with the camera moving as well as possibly the markers.
In my case the camera would be static in that it would be fixed above the arena would be more focused on the rotation/position of the robots and their distance from each other in a 2d plane in this case. To give a rough idea of arena size maybe 2m x 2m surface and the camera would just be high enough to have the arena in frame if that helps.
Given that setup with a static camera looking down and just moving markers I have a few questions
- Is there a better tracking method for this sort of thing in OpenCV? So far Aruco looks like a good starting place from what have used in the examples
- I assume camera calibration is still important even in this fixed position?
- Do I need to do pose estimation given that I'm restricting this to a locked off camera and more interested in the markers positions within the frame in the xy plane? It's tempting take the corners from the detectMarkers call and work everything out from that especially if I mark the corners of the arena and know the distances between them and ditch the pose estimation.
- Lastly, if I'm not mistaken the corners are "fixed" and based on the pattern of the marker correct? My understanding which seems to go with what I observed in running the examples is that the "top" left corner, for example, is defined in a specific spot on the marker and given that the marker carries data that would make sense. The docs are slightly fuzzy and I'm still new to opencv/aruco and machine vision in general so just looking for confirmation.
I have tried to do as much research as possibly but it seems like I'm going slightly against the grain here so most of what I've found I'm reading between the lines, however, it does feel like it would work for my purposes...