I’m assuming if we stick the fiducial images (QR Codes) on the floor, as opposed to the ceiling, and then if we could find a way to point the on-board RaspiCam down on the floor instead of up to the ceiling, would it amount to the same thing and work just as well?
I’m assuming downward facing camera should work, but wanted to ask since there is a setting in the /etc/ubiquity/robot.yaml file that explicitly sets the orientation of the camera to ‘upward’.
Also, does the camera mount have to be angled-down exactly 20° as opposed to 20° up?
The main things that matter for use of fiducial follow is that the ROS level software knows the orientation of the camera and the sizes of the fiducials are also known.
The orientation of the raspicam is set relative to base_link of the robot and is in a file called magni.urdf.xacro which is a heavy duty XML file found well under /opt/ros/kinetic on our images.
In our magni_robot repository but not yet on our images we were starting to play around with a raspicam pose of ‘downward’ to do the sort of thing you are asking about, following fiducials on the floor. For a while I had a page discussing this sort of technique but since the software was not really official to do it we decided not to publish that page any longer.
Take a look at the ‘downward’ section near the end of magni.urdf.xacro in our floor_follow branch of the magni_robot repository which was where we were playing around with the sort of thing you describe. That is unsupported code just being messed with but you can look for some thoughts you may want to go after for your own needs.
So select branch of floor_follow then look in magni_robot/magni_description/urdf/magni.urdf.xacro for just some ideas.
Then in the demos repository there was a branch also called floor_follow where I discussed what was involved to some extent and below that demos repository in branch floor_follow was floor_follow.py. All of that was put on hold and is not part of our product. Consider it a 'science experiment not very sound and certainly not a product at all. BUT you may find it interesting for ideas and so on.
It would not be a ‘slam dunk’ easy thing in any way to get all you are discussing working but above I offer some help in the way of code and urdf file that may help you get started.