NVIDIAがROS2ベースで開発したパッケージIsaac ros Apriltagが使われているパッケージを含んだ独自のパッケージにバグがいくつかあったためその修正を行なった
仕様調査の意味合いも込めて備忘録として記述しておきます
バグ対応
タイムスタンプ
ROS2のmsgにタイムスタンプの項目があるのですが、これがIsaac Ros Apriltagに送るカメラと画像のメッセージの2つがあります
これが揃っていないとversion3.1のIsaac Ros Apriltagでバグが発生していました
Isaac Ros Apriltagのバリデーション?が厳格化したのかも
タイムスタンプがずれているところを修正してfix
送信する画像サイズ
次の課題はApriltaが処理できる画像サイズの調査
推奨として1920 x 1024 の画像をIsaac Ros Apriltagを送れと公式にも記述があったが、4032 x 3024 の画像を送っていたのが原因の模様
ただラボのRTX A6000を積んだマシンであればバグらなかったのでマシンスペックの影響かもしれない
運用していく途中で再発したら再調整してみよう
仕様調査
画像の中に複数のApriltagがある場合の優先順位
画像の中に複数のApriltagがある場合、Isaac Ros Apriltagはtag_detectionというタグ情報の配列の中で、画像の左側のApriltagから順番に格納しているようでした
例えば一番大きいサイズを採用する場合は、tag_detectionの中の情報からApriltagの大きさを計算して採用する処理を挟めばOKです
Apriltagの大きさ(ひし形の面積)の計算は、対角線同士の長さを掛け合わせ、2で割る公式を採用しました
\[ \text{面積} = \frac{1}{2} \times d_1 \times d_2 \]
\[ \text{距離} = \sqrt{(x_2 – x_1)^2 + (y_2 – y_1)^2} \]
