Marker & Landmark Detection Skill
Last updated
Last updated
This skill is used for the spatial detection of so-called markers. It can be used to determine the relative orientation of the camera and thus of the robot in space. Therefore, robot movements can be executed relative to the translational and rotational position of the marker in the spatial coordinate system. The supplied calibration plate can be used as an initial landmark. This can be used for a first example program. The corresponding marker is searched for within the camera's field of view (FOV), while in the left edge of the image the information obtained is shown. In addition to the ID of the marker, the orientation and position in relation to the robot coordinate system are also indicated. The image also shows the marker position as a coordinate system and the outline of the detected marker in green.
You can also search for other types of markers, in specific "Aruco Markers" and "April Tags". It is possible to search for the next marker or a specific ID - The detected information is displayed in the Web GUI and also passed to the robot. For example, different processes can be stored for differently recognized marker IDs.
If the marker is attached to a machine where the door is to be opened, the robobrain® system can recognize the marker and pass this information to the robot. A relative process is then executed by the robot to open the door.
Another alternative is the positioning of a mobile robot in space. The detected markers and corresponding IDs can be used to determine different positions in the room and thus assist the internal navigation of the AGV/AMR.
Position
Position of the grasp point relative to the robot’s coordinate system (in m)
Orientation
Rotation of the grasp point relative to the robot’s coordinate system (in m)
Selected ID
Detected marker id next to the camera
Aruco markers (aruco_*)
The original Aruco dictionary (aruco_original
) is supported. In addition, it is possible to select the inner pattern size (aruco_4x4
, aruco_5x5
, aruco_6x6
, aruco_7x7
). Sometimes the number of markers within a dictionary is given in addition to the pattern size. The skill supports 50, 100, 250, and 1000 markers for each pattern size.
April tags (apriltag_*)
The dictionaries apriltag_16h5
, apriltag_25h9
, apriltag_36h10
, and apriltag_36h11
are supported.
robominds calibration board (cal_board_2)
The calibration board shipped with every robobrain system
pose (Transformation)
Valid pick pose obtained from the estimated marker pose by a rotation by pi around the x-axis
marker_pose (Transformation)
Estimated pose of a detected marker or board
id (int)
The marker ID; is set to the first detected ID for a marker board
detected_markers (List[int])
List of IDs of all detected markers in a marker board.
reprojection_error (float)
The reprojection error of the detected marker/ board in pixels. To calculate this value the estimated 3D positions of the marker corners (based on the estimated marker/board pose) are projected onto the (2D) image plane. The reprojection error is the root mean-squared distance between the projected 2S pixel positions and the originally detected corner positions on the image.
Conditions
Camera mount:
Dynamic
Static
Supported marker types:
Aruco marker
April tags
Specs
Avg. recognition time:
< 0.5 seconds
Features
Multiple ID recognition
Search by known ID
Position and orientation of Marker
Relative movements
Marker type
marker_type
The type of the markers that should be detected. This skill is able to detect Aruco markers and April tags. Both marker types are organized in dictionaries containing several markers with similar styles. In principle, the correct type/dictionary for markers should be provided by the markers supplier or source. It is, however, also possible to use this parameter to test for which choice markers are robustly detected.
Marker size
marker_size
float
The length of the side of the (square) markers. All supported marker types consist of black squares with different patterns inside. This parameter refers to the side length of the outer black square not the size of a plate or paper where the marker has been printed to. The distance between the camera and the marker is determined using the side length. Thus, the accuracy of this parameter limits the accuracy of the estimated marker position.
Marker ID
marker_id
int
The ID of the marker that should be detected. This parameter allows to select a specific marker ID for the selected type/ dictionary. When a specific ID is selected (values of 0 and larger) only the marker with this ID will be detected and its position and orientation are returned. For a value of -1 all markers of the selected type will be detected. If more than one marker is in the image, the pose of the marker closest to the camera will be returned.