The aim of this project was to compare two 2D localization techniques (Aruco markers  and dot patterns ) for an underwater swimming robot. The 2D localization is to be performed in an indoor pool previously prepared with markers (or dot patterns) on the floor, while the robot is swimming on the surface (constant height) with a camera filming the floor.
Aruco markers () enable full 3D localization and camera’s attitude with respect to the marker. Generation and detection tools are integrated as a module of OpenCV. Testing runs showed that using individual markers for localization gave instable results, in particular when the camera had angular movements in pitch and yaw. Markers were hence organized into boards of 6×4 markers printed on A4 sheets of paper, which fitted well the camera’s field of view (Ximea MUPC9H with a focal length of 2.92 mm) at a height of 15 cm. The solution selected was to cover the floor of the pool with these boards and to load the real-world map of each board’s origin position to convert the camera’s position from marker frame after detection to world frame. This board solution was tested with a Motion Capture system: even with high perturbations in pitch and yaw, the error remained inferior to 5 cms, with a mean detection time per frame of 11.5 ms (30 fps).
Dot pattern provides 2D localization using the sequence coded by dots shifted (up, down, left or right) with respect to an orthogonal grid which is not printed. The generation and detection tools used were those provided in the libdots library (). Given our camera specifications, the optimal spacing (tradeoff between higher dot size and higher number of dots in the field of view) between dots is around 10 mm. This technique offered even higher precision (error inferior to 1 cm) with an even lower detection time per frame, as long as the camera remained parallel to the ground. However, any slight deviation in pitch and yaw leads to a perspective deformation of the orthogonal grid and a failed position decoding : this perspective deformation should be corrected before any libdots perspective. OpenCV perspective transformation functions could be coupled to libdots to create a robust 2D localization technique.