StarGaze is a branch of the Roomba Project. Inspired by the NorthStar® localization system by Evolution Robotics, it enables the robot, with a webcam attached to its body facing up, to locate itself reading the position from several markers in the ceiling.
Available through svn at https://www.verlab.dcc.ufmg.br/svn/StarGaze and through http at 4shared.
The strategy used in this navigation system is to have a camera facing up and several fiduciary markers in the ceiling. Previosly knowing the position of each mark, and reading the position of the markers in relation to the robot's camera enables it to know its global position.
The marks are used because they are accurately detectable using tools such as ARToolKit and ARToolKitPlus. The piece of software responsible for that localization is silvver, developed by Renato Garcia, which is an API to enable easy access to ARToolKitPlus.
The relative position given by silvver is seen at the following picture:
Where Vmark and θmark are relative to the camera.
With this we have this global map.
Global Vmark and θmark are known. To find the desired θrobot we add the two θmarks, the known global, and the relative to the camera. To find Vrobot we flip camera's reading of Vmark around the y axis, then rotate the result by an angle of θrobot and subtract the result of global Vmark. As follows: