From a2351d418894eecc7783d9a9ee2aad18498e6683 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sun, 30 Nov 2025 17:19:53 +0100 Subject: [PATCH] - workaround number of Ids must be known prior board generation --- ar_tag_pose/detector_board.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/ar_tag_pose/detector_board.py b/ar_tag_pose/detector_board.py index 98c26af..c29426e 100644 --- a/ar_tag_pose/detector_board.py +++ b/ar_tag_pose/detector_board.py @@ -14,20 +14,31 @@ class BoardDetector(abc.ABC): t_vecs = None obj_points_list = [] img_points_list = [] - + rs = None + board_id = None def __repr__(self): return self.name def __init__(self, name: str, board_id: str, n_syms: int): self.name = name + self.board_id = board_id msg_size = len(board_id) n_rs = n_syms - msg_size - rs = RSCodec(n_rs, c_exp=7) + self.rs = RSCodec(n_rs, c_exp=7) + msg = bytes(f"{board_id}", 'utf-8') - byte_string = rs.encode(msg) + byte_string = self.rs.encode(msg) self.ids = np.array([x for x in byte_string]) print(f"{name}: markers: {self.ids}") + def decode(self, ids: np.array): + print(ids) + try: + msg = self.rs.decode(ids) + return msg[0:len(self.board_id)] + except ReedSolomonError: + return None + @abc.abstractmethod def get_board_name(self) -> str: pass