2
$\begingroup$

This might be a more theoretical question than a practical one, but I couldn't find a more fitting Stack Exchange (if you know of one, please point me in the right direction?).

I have control of a rover-like robot that has a single front facing camera. The rover itself will be placed in a room (which my team and I won't be able to see) and we will only be able to see through the robot's camera. On the floor of the room are a series of fiducials that the robot needs to find within a limited time period.

What navigation strategy should I apply to find the highest number of fiducials possible?

NOTE: The camera isn't a live feed, it takes a single photo on command.

$\endgroup$
3
  • $\begingroup$ what do you mean by find? ... what qualifies as found? ... what is the purpose of the excersize? $\endgroup$
    – jsotola
    Apr 26 at 15:31
  • $\begingroup$ @jsotola Sorry for the oversight, a fiducial is defined as found so long as it goes into the view of the camera. The purpose of the exercise is to find as many fiducials as possible within a small time frame. What I'm asking is: "Is there a more efficient approach to this than taking pictures at various degrees and proceeding in that fashion?" $\endgroup$ Apr 26 at 17:05
  • $\begingroup$ no, the explanation belongs in the question ... it does not belong in a comment ... please edit your question and delete the comment ... this site is not a forum $\endgroup$
    – jsotola
    Apr 26 at 17:22

2 Answers 2

2
$\begingroup$

Is the room/environment fully unknown to you in advance? Or do you have some information about the shape of the room for example.

Assuming that the room is rectangular, you could use something like a little bit adjusted FCPP (full coverage path planning) to find the fiducials. You just have to calculate your camera's FOV in the world's frame: Measure/calculate the maximum width that the camera is able to see, as well as the "depth distance" (as you mentioned the camera is front-facing and not ground-facing you have to find a good value for the "depth" to get clear images close enough to the fiducials). You can also solve both of these distances through trigonometry (with the help of cameras specifications e.g. camera's angle, focusing distance, FOV & width/height) if you want. But I'm sure that you can get to the same results by trial and error ;).

After defining good values, you can tell your algorithm to plan the path like shown in the picture fcpp_fiducials(where picture is taken in each red circle, d meaning the depth distance, and w being the pictures width in the world frame). There are some blind spots (and other issues) with this approach, but it should catch most of the fiducials in the camera.

$\endgroup$
0
$\begingroup$

This falls under the category of exploration algorithms. One of the approaches is frontier based exploration first described in this paper:

B. Yamauchi, "A frontier-based approach for autonomous exploration," Proceedings 1997 IEEE International Symposium on Computational Intelligence in Robotics and Automation CIRA'97. 'Towards New Computational Principles for Robotics and Automation', Monterey, CA, USA, 1997, pp. 146-151, doi: 10.1109/CIRA.1997.613851.

The basic idea is to build a map (SLAM) and find the frontiers (boarder of known space) and explore them.

$\endgroup$

Your Answer

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

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