Locate area which the Sawyer should draw on.
Give the size of the canvas to resize the picture.
We used the camera on the robot's limb to detect the AR-Tags. And using AR-Tags coordinate information to locate the size, position and height of the canvas(actually paper). This action would let the sawyer draw on any table with arbitrary height, and on paper with arbitrary size (this working area should not be at a singular configuration, i.e. the sawyer cannot reach, of course).
However, there are real-world errors from camera and the built-in ar-tag locating algorithm. This kind of errors may be about <1 cm. Since the length of the nib(or tip of the marker pen) is just about 2-3 mm, and it can at most have a elastic deformation of < 1mm, even the < 1 cm errors are way too much. The solution to this is just let the canvas have more elastic deformation. We put used papers and bubble wraps under the paper on which the robot drew, and this would be helpful to eliminate the errors caused by inaccuracy.
Using two AR-Tags (top-left and bottom-right) to get the size, height, position of the canvas.
Using AR-Tag packages to recognize AR-Tags
Getting the coordinate of the AR-Tags and using TF transformation look-up to convert the coordinates into base frame.
Calculating the size of the canvas and store the x-y-z position of the canvas.
Resize the input feature points to fit the canvas.
Lab materials of EECS C106A at UC Berkeley