1
$\begingroup$

(Hopefully this question fits here. I'm absolutely new to this field, this is my first question to the community, so please handle my question accordingly. Thanks!)

Problem to solve: I have around 20-30 small sensors providing signals (their size is circa 2*2 cm and they are approximately 2-3 cm away from each other). I want to know with (possibly sub) mm precision where these sensors are located. Since the position of sensors change before the experiments (but are fiexed during them), I have to determine their precise position before the measurements start. The shorter the time needed for precise mapping the better.

The idea: I want to put markers on the sensors then move a camera over the setup to detect the markers and reconstruct their 3d position relative to each other, so later on I'll know the 3d configuration of the markers precisely. (I want to stick to the idea of using markers)

My questions:

  1. What do you think about the idea? Is it possible to solve it this way?
  2. I've found that AprilTags would be useful for this problem (aruco markers too, but based on research AprilTags will provide better precision). Am I right that AprilTags are good for this? Are there any other marker types you suggest?
  3. I tried to build the whole thing up from scratch using python and OpenCV. However I soon realized that there must be solutions already built, tested, working nicely and very efficiently (fusing frames, filtering, etc). That's how I've found ROS, mapping and SLAM algorithms. I feel that using a SLAM algorithm would be an overkill since I don't need to localize my camera, only need the mapping. Am I right so far?
  4. Finally could you please suggest me fully working "tools", packages or github repos that would fit my problem? Shall I use ROS, or are there other direction I haven't found so far? A constraint is that I'm familiar with python and not much with other languages so it would be nice if it were in python.

Any feedback are welcome, even suggestions about other forums where I should have posted this question if it's not fitting here, or how to post a problem properly... :)

Thanks a lot!

$\endgroup$

1 Answer 1

1
$\begingroup$
  1. This is definitely feasible by using visual fiducial markers. Usually you would use a motion capture system (Vicon etc) for that, so if you have one available or can get access to one, that should be your first choice. If not, then visual localization with AprilTags or Aruco markers can be recommended as well. (On a fundamental level Aruco markers are not that different from AprilTags so I would take claims of superior localization accuracy of one over the other with a grain of salt).
  2. Yes, use AprilTags and TagSLAM (disclosure: I'm the author of TagSLAM). Your posted title says you don't want camera localization but any visual method will give you the camera position with respect to the tags, that's just how it works.
  3. You will get the camera localization with respect to the tag coordinate system for free.
  4. ROS is great and I think TagSLAM is good for what you want to use it for. The only catch is that it is only supported under ROS1, which is phased out and no longer available on the latest Ubuntu versions (last ROS1 version is supported on Ubuntu 20.04). You can however work around that using Docker or running a virtual machine.

As far as accuracy is concerned: using a good monochrome machine vision camera (FLIR) with e.g. HD resolution and global shutter is advisable, and using a lens such that you can always see multiple tags/sensors in one image is important. But you don't want too short focal length or else the tags get too small. Pay attention that there is a ROS driver available for your camera. If you do a good job on the camera intrinsic calibration you should be able to get 1mm accuracy.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.