Aruco Spiegeln
This commit is contained in:
69
setup/generateTabletopPDF/A0_46Arucos_25mm_Seet223.json
Normal file
69
setup/generateTabletopPDF/A0_46Arucos_25mm_Seet223.json
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"page_format": "A0",
|
||||
"orientation": "portrait",
|
||||
"page_size_mm": {
|
||||
"width": 841.0,
|
||||
"height": 1189.0
|
||||
},
|
||||
"seed": 223,
|
||||
"num_arucos": 46,
|
||||
"aruco_size_mm": 25.0,
|
||||
"aruco_dictionary": "DICT_4X4_250",
|
||||
"aruco_start_id": 103,
|
||||
"page_border_margin_mm": 50.0,
|
||||
"forbidden_rectangle_mm": {
|
||||
"x": 318.5,
|
||||
"y": 94.5,
|
||||
"w": 204.0,
|
||||
"h": 1000.0
|
||||
},
|
||||
"forbidden_rectangle_margin_mm": 30.0,
|
||||
"placements": [
|
||||
{"id": 103, "position": [536.71, 185.44, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 104, "position": [344.23, -286.54, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 105, "position": [688.69, -320.72, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 106, "position": [1006.0, 158.33, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 107, "position": [573.41, 211.86, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 108, "position": [167.8, -172.08, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 109, "position": [94.68, 208.66, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 110, "position": [486.25, 212.24, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 111, "position": [342.27, -330.59, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 112, "position": [283.72, -262.58, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 113, "position": [498.68, 168.67, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 114, "position": [602.86, -364.05, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 115, "position": [50.09, -218.11, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 116, "position": [626.21, -278.75, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 117, "position": [434.36, 283.81, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 118, "position": [-22.42, 335.83, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 119, "position": [404.7, -175.1, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 120, "position": [777.4, -236.15, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 121, "position": [-21.27, -188.23, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 122, "position": [803.39, -297.37, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 123, "position": [209.75, -363.23, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 124, "position": [523.07, 267.04, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 125, "position": [573.73, 170.64, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 126, "position": [7.61, -281.21, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 127, "position": [601.87, 300.33, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 128, "position": [749.75, -284.01, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 129, "position": [440.99, 194.32, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 130, "position": [221.73, 333.11, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 131, "position": [93.78, 144.5, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 132, "position": [-25.7, 194.58, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 133, "position": [685.21, 166.8, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 134, "position": [18.19, 191.57, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 135, "position": [823.11, -344.38, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 136, "position": [312.3, -159.11, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 137, "position": [863.59, -335.92, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 138, "position": [132.14, 169.03, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 139, "position": [219.16, 297.24, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 140, "position": [44.16, 339.22, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 141, "position": [407.49, 258.42, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 142, "position": [504.58, -312.75, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 143, "position": [362.89, 292.01, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 144, "position": [943.63, -245.76, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 145, "position": [765.87, 316.04, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 146, "position": [988.02, -369.14, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 147, "position": [643.17, 316.43, -19], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 148, "position": [723.35, 328.05, -19], "normal": [0, 0, 1], "spin": 90}
|
||||
]
|
||||
}
|
||||
74
setup/generateTabletopPDF/A0_46Arucos_25mm_Seet223.pdf
Normal file
74
setup/generateTabletopPDF/A0_46Arucos_25mm_Seet223.pdf
Normal file
File diff suppressed because one or more lines are too long
@@ -9,7 +9,7 @@
|
||||
"num_arucos": 60,
|
||||
"aruco_size_mm": 25.0,
|
||||
"aruco_dictionary": "DICT_4X4_250",
|
||||
"aruco_start_id": 103,
|
||||
"aruco_start_id": 46,
|
||||
"page_border_margin_mm": 50.0,
|
||||
"forbidden_rectangle_mm": {
|
||||
"x": 318.5,
|
||||
@@ -19,845 +19,65 @@
|
||||
},
|
||||
"forbidden_rectangle_margin_mm": 30.0,
|
||||
"placements": [
|
||||
{
|
||||
"id": 103,
|
||||
"position": [
|
||||
-536.71,
|
||||
-185.44,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 104,
|
||||
"position": [
|
||||
-344.23,
|
||||
286.54,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 105,
|
||||
"position": [
|
||||
-688.69,
|
||||
320.72,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 106,
|
||||
"position": [
|
||||
-1006.0,
|
||||
-158.33,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 107,
|
||||
"position": [
|
||||
-573.41,
|
||||
-211.86,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 108,
|
||||
"position": [
|
||||
-167.8,
|
||||
172.08,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 109,
|
||||
"position": [
|
||||
-94.68,
|
||||
-208.66,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 110,
|
||||
"position": [
|
||||
-486.25,
|
||||
-212.24,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 111,
|
||||
"position": [
|
||||
-342.27,
|
||||
330.59,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 112,
|
||||
"position": [
|
||||
-283.72,
|
||||
262.58,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 113,
|
||||
"position": [
|
||||
-498.68,
|
||||
-168.67,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 114,
|
||||
"position": [
|
||||
-602.86,
|
||||
364.05,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 115,
|
||||
"position": [
|
||||
-50.09,
|
||||
218.11,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 116,
|
||||
"position": [
|
||||
-626.21,
|
||||
278.75,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 117,
|
||||
"position": [
|
||||
-434.36,
|
||||
-283.81,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 118,
|
||||
"position": [
|
||||
22.42,
|
||||
-335.83,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 119,
|
||||
"position": [
|
||||
-404.7,
|
||||
175.1,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 120,
|
||||
"position": [
|
||||
-777.4,
|
||||
236.15,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 121,
|
||||
"position": [
|
||||
21.27,
|
||||
188.23,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 122,
|
||||
"position": [
|
||||
-803.39,
|
||||
297.37,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 123,
|
||||
"position": [
|
||||
-209.75,
|
||||
363.23,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 124,
|
||||
"position": [
|
||||
-523.07,
|
||||
-267.04,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 125,
|
||||
"position": [
|
||||
-573.73,
|
||||
-170.64,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 126,
|
||||
"position": [
|
||||
-7.61,
|
||||
281.21,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 127,
|
||||
"position": [
|
||||
-601.87,
|
||||
-300.33,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 128,
|
||||
"position": [
|
||||
-749.75,
|
||||
284.01,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 129,
|
||||
"position": [
|
||||
-440.99,
|
||||
-194.32,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 130,
|
||||
"position": [
|
||||
-221.73,
|
||||
-333.11,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 131,
|
||||
"position": [
|
||||
-93.78,
|
||||
-144.5,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 132,
|
||||
"position": [
|
||||
25.7,
|
||||
-194.58,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 133,
|
||||
"position": [
|
||||
-685.21,
|
||||
-166.8,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 134,
|
||||
"position": [
|
||||
-18.19,
|
||||
-191.57,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 135,
|
||||
"position": [
|
||||
-823.11,
|
||||
344.38,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 136,
|
||||
"position": [
|
||||
-312.3,
|
||||
159.11,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 137,
|
||||
"position": [
|
||||
-863.59,
|
||||
335.92,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 138,
|
||||
"position": [
|
||||
-132.14,
|
||||
-169.03,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 139,
|
||||
"position": [
|
||||
-219.16,
|
||||
-297.24,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 140,
|
||||
"position": [
|
||||
-44.16,
|
||||
-339.22,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 141,
|
||||
"position": [
|
||||
-407.49,
|
||||
-258.42,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 142,
|
||||
"position": [
|
||||
-504.58,
|
||||
312.75,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 143,
|
||||
"position": [
|
||||
-362.89,
|
||||
-292.01,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 144,
|
||||
"position": [
|
||||
-943.63,
|
||||
245.76,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 145,
|
||||
"position": [
|
||||
-765.87,
|
||||
-316.04,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 146,
|
||||
"position": [
|
||||
-988.02,
|
||||
369.14,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 147,
|
||||
"position": [
|
||||
-643.17,
|
||||
-316.43,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 148,
|
||||
"position": [
|
||||
-723.35,
|
||||
-328.05,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 149,
|
||||
"position": [
|
||||
-645.09,
|
||||
184.84,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 150,
|
||||
"position": [
|
||||
-934.88,
|
||||
-143.6,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 151,
|
||||
"position": [
|
||||
-875.7,
|
||||
-173.65,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 152,
|
||||
"position": [
|
||||
-186.04,
|
||||
274.07,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 153,
|
||||
"position": [
|
||||
-369.77,
|
||||
186.49,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 154,
|
||||
"position": [
|
||||
-304.35,
|
||||
359.67,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 155,
|
||||
"position": [
|
||||
-575.27,
|
||||
-315.06,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 156,
|
||||
"position": [
|
||||
-959.16,
|
||||
321.55,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 157,
|
||||
"position": [
|
||||
-803.25,
|
||||
-172.36,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 158,
|
||||
"position": [
|
||||
-117.7,
|
||||
-298.66,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 159,
|
||||
"position": [
|
||||
-649.69,
|
||||
223.0,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 160,
|
||||
"position": [
|
||||
-105.71,
|
||||
187.71,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 161,
|
||||
"position": [
|
||||
-826.71,
|
||||
-239.16,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
},
|
||||
{
|
||||
"id": 162,
|
||||
"position": [
|
||||
-524.84,
|
||||
266.25,
|
||||
-19
|
||||
],
|
||||
"normal": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"spin": 90
|
||||
}
|
||||
{"id": 46, "position": [536.71, 185.44, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 47, "position": [344.23, -286.54, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 48, "position": [688.69, -320.72, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 49, "position": [1006.0, 158.33, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 50, "position": [573.41, 211.86, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 51, "position": [167.8, -172.08, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 52, "position": [94.68, 208.66, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 53, "position": [486.25, 212.24, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 54, "position": [342.27, -330.59, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 55, "position": [283.72, -262.58, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 56, "position": [498.68, 168.67, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 57, "position": [602.86, -364.05, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 58, "position": [50.09, -218.11, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 59, "position": [626.21, -278.75, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 60, "position": [434.36, 283.81, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 61, "position": [-22.42, 335.83, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 62, "position": [404.7, -175.1, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 63, "position": [777.4, -236.15, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 64, "position": [-21.27, -188.23, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 65, "position": [803.39, -297.37, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 66, "position": [209.75, -363.23, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 67, "position": [523.07, 267.04, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 68, "position": [573.73, 170.64, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 69, "position": [7.61, -281.21, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 70, "position": [601.87, 300.33, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 71, "position": [749.75, -284.01, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 72, "position": [440.99, 194.32, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 73, "position": [221.73, 333.11, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 74, "position": [93.78, 144.5, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 75, "position": [-25.7, 194.58, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 76, "position": [685.21, 166.8, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 77, "position": [18.19, 191.57, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 78, "position": [823.11, -344.38, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 79, "position": [312.3, -159.11, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 80, "position": [863.59, -335.92, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 81, "position": [132.14, 169.03, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 82, "position": [219.16, 297.24, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 83, "position": [44.16, 339.22, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 84, "position": [407.49, 258.42, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 85, "position": [504.58, -312.75, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 86, "position": [362.89, 292.01, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 87, "position": [943.63, -245.76, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 88, "position": [765.87, 316.04, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 89, "position": [988.02, -369.14, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 90, "position": [643.17, 316.43, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 91, "position": [723.35, 328.05, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 92, "position": [645.09, -184.84, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 93, "position": [934.88, 143.6, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 94, "position": [875.7, 173.65, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 95, "position": [186.04, -274.07, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 96, "position": [369.77, -186.49, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 97, "position": [304.35, -359.67, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 98, "position": [575.27, 315.06, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 99, "position": [959.16, -321.55, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 100, "position": [803.25, 172.36, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 101, "position": [117.7, 298.66, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 102, "position": [649.69, -223.0, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 103, "position": [105.71, -187.71, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 104, "position": [826.71, 239.16, -27.3], "normal": [0, 0, 1], "spin": 90},
|
||||
{"id": 105, "position": [524.84, -266.25, -27.3], "normal": [0, 0, 1], "spin": 90}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -9,6 +9,7 @@ from typing import List, Tuple
|
||||
|
||||
from reportlab.pdfgen import canvas
|
||||
from reportlab.lib.units import mm
|
||||
from reportlab.pdfbase import pdfmetrics
|
||||
|
||||
try:
|
||||
import cv2
|
||||
@@ -27,7 +28,7 @@ ORIENTATION = "portrait" # "portrait" oder "landscape"
|
||||
|
||||
NUM_ARUCOS = 60
|
||||
ARUCO_SIZE_MM = 25.0
|
||||
ARUCO_START_ID = 103 # erster Marker aus DICT_4X4_250
|
||||
ARUCO_START_ID = 46 # erster Marker aus DICT_4X4_250
|
||||
SEED = 223 # Zufalls-Seed für reproduzierbare Verteilung
|
||||
|
||||
PAGE_BORDER_MARGIN_MM = 50.0 # Abstand aller Marker vom Seitenrand
|
||||
@@ -37,6 +38,9 @@ FORBIDDEN_RECT_H_MM = 1000.0
|
||||
FORBIDDEN_RECT_MARGIN_MM = 30.0 # keine ArUcos innerhalb dieses Abstands
|
||||
|
||||
LINE_WIDTH_MM = 1.0 # Linienstärke des Rechtecks
|
||||
TEXT_FONT = "Times-Roman"
|
||||
TEXT_SIZE_PT = 8
|
||||
TEXT_GAP_MM = 4.0
|
||||
|
||||
OUTPUT_BASENAME = f"A0_{NUM_ARUCOS}Arucos_{int(ARUCO_SIZE_MM)}mm_Seet{SEED}"
|
||||
|
||||
@@ -151,7 +155,8 @@ def draw_aruco_vector(
|
||||
for col in range(modules):
|
||||
if pattern[r][col] == 1:
|
||||
cell_x_mm = x_mm + col * cell_mm
|
||||
cell_y_mm = y_mm + (modules - 1 - r) * cell_mm
|
||||
#cell_y_mm = y_mm + (modules - 1 - r) * cell_mm
|
||||
cell_y_mm = y_mm + r * cell_mm
|
||||
c.rect(
|
||||
mm_to_pt(cell_x_mm),
|
||||
mm_to_pt(page_h_mm - cell_y_mm - cell_mm),
|
||||
@@ -162,6 +167,24 @@ def draw_aruco_vector(
|
||||
)
|
||||
|
||||
|
||||
def draw_aruco_label(
|
||||
c: canvas.Canvas,
|
||||
x_mm: float,
|
||||
y_mm: float,
|
||||
size_mm: float,
|
||||
page_h_mm: float,
|
||||
marker_id: int,
|
||||
) -> None:
|
||||
c.setFont(TEXT_FONT, TEXT_SIZE_PT)
|
||||
text = str(marker_id)
|
||||
text_width_pt = pdfmetrics.stringWidth(text, TEXT_FONT, TEXT_SIZE_PT)
|
||||
text_x_pt = mm_to_pt(x_mm + size_mm / 2.0) - text_width_pt / 2.0
|
||||
font = pdfmetrics.getFont(TEXT_FONT)
|
||||
ascent_mm = (font.face.ascent / 1000.0) * TEXT_SIZE_PT * 0.352777777777778
|
||||
text_baseline_y_mm = y_mm + size_mm + TEXT_GAP_MM + ascent_mm
|
||||
c.drawString(text_x_pt, mm_to_pt(page_h_mm - text_baseline_y_mm), text)
|
||||
|
||||
|
||||
def place_markers(
|
||||
page_w_mm: float,
|
||||
page_h_mm: float,
|
||||
@@ -295,27 +318,27 @@ def main() -> None:
|
||||
mm_to_pt(page_h_mm - (origin_y_mm + ARROW_LEN_MM - 4)),
|
||||
)
|
||||
|
||||
# Y-Achse (grün, nach links)
|
||||
# Y-Achse (grün, nach rechts)
|
||||
c.setStrokeColorRGB(0, 0.7, 0)
|
||||
|
||||
c.line(
|
||||
mm_to_pt(origin_x_mm),
|
||||
mm_to_pt(page_h_mm - origin_y_mm),
|
||||
mm_to_pt(origin_x_mm - ARROW_LEN_MM),
|
||||
mm_to_pt(origin_x_mm + ARROW_LEN_MM),
|
||||
mm_to_pt(page_h_mm - origin_y_mm),
|
||||
)
|
||||
|
||||
# Pfeilspitze
|
||||
c.line(
|
||||
mm_to_pt(origin_x_mm - ARROW_LEN_MM),
|
||||
mm_to_pt(origin_x_mm + ARROW_LEN_MM),
|
||||
mm_to_pt(page_h_mm - origin_y_mm),
|
||||
mm_to_pt(origin_x_mm - ARROW_LEN_MM + 4),
|
||||
mm_to_pt(origin_x_mm + ARROW_LEN_MM - 4),
|
||||
mm_to_pt(page_h_mm - origin_y_mm - 4),
|
||||
)
|
||||
c.line(
|
||||
mm_to_pt(origin_x_mm - ARROW_LEN_MM),
|
||||
mm_to_pt(origin_x_mm + ARROW_LEN_MM),
|
||||
mm_to_pt(page_h_mm - origin_y_mm),
|
||||
mm_to_pt(origin_x_mm - ARROW_LEN_MM + 4),
|
||||
mm_to_pt(origin_x_mm + ARROW_LEN_MM - 4),
|
||||
mm_to_pt(page_h_mm - origin_y_mm + 4),
|
||||
)
|
||||
|
||||
@@ -332,39 +355,59 @@ def main() -> None:
|
||||
marker_id=item["id"],
|
||||
page_h_mm=page_h_mm,
|
||||
)
|
||||
draw_aruco_label(
|
||||
c=c,
|
||||
x_mm=item["x_mm"],
|
||||
y_mm=item["y_mm"],
|
||||
size_mm=item["size_mm"],
|
||||
page_h_mm=page_h_mm,
|
||||
marker_id=item["id"],
|
||||
)
|
||||
|
||||
c.showPage()
|
||||
c.save()
|
||||
|
||||
# JSON mit Positionen
|
||||
with json_path.open("w", encoding="utf-8") as f:
|
||||
json.dump(
|
||||
{
|
||||
"page_format": PAGE_FORMAT,
|
||||
"orientation": ORIENTATION,
|
||||
"page_size_mm": {"width": page_w_mm, "height": page_h_mm},
|
||||
"seed": SEED,
|
||||
"num_arucos": NUM_ARUCOS,
|
||||
"aruco_size_mm": ARUCO_SIZE_MM,
|
||||
"aruco_dictionary": "DICT_4X4_250",
|
||||
"aruco_start_id": ARUCO_START_ID,
|
||||
"page_border_margin_mm": PAGE_BORDER_MARGIN_MM,
|
||||
"forbidden_rectangle_mm": {
|
||||
"x": round(forbidden_rect.x, 2),
|
||||
"y": round(forbidden_rect.y, 2),
|
||||
"w": forbidden_rect.w,
|
||||
"h": forbidden_rect.h,
|
||||
},
|
||||
"forbidden_rectangle_margin_mm": FORBIDDEN_RECT_MARGIN_MM,
|
||||
"placements": [
|
||||
{"id": p["id"],"position": [-1*round((p["y_mm"] + ARUCO_SIZE_MM / 2) - origin_y_mm, 2), round(origin_x_mm - (p["x_mm"] + ARUCO_SIZE_MM / 2), 2),-19],"normal": [0, 0, 1],"spin": 90}
|
||||
for p in placements
|
||||
],
|
||||
meta = {
|
||||
"page_format": PAGE_FORMAT,
|
||||
"orientation": ORIENTATION,
|
||||
"page_size_mm": {"width": page_w_mm, "height": page_h_mm},
|
||||
"seed": SEED,
|
||||
"num_arucos": NUM_ARUCOS,
|
||||
"aruco_size_mm": ARUCO_SIZE_MM,
|
||||
"aruco_dictionary": "DICT_4X4_250",
|
||||
"aruco_start_id": ARUCO_START_ID,
|
||||
"page_border_margin_mm": PAGE_BORDER_MARGIN_MM,
|
||||
"forbidden_rectangle_mm": {
|
||||
"x": round(forbidden_rect.x, 2),
|
||||
"y": round(forbidden_rect.y, 2),
|
||||
"w": forbidden_rect.w,
|
||||
"h": forbidden_rect.h,
|
||||
},
|
||||
f,
|
||||
indent=2,
|
||||
ensure_ascii=False,
|
||||
)
|
||||
"forbidden_rectangle_margin_mm": FORBIDDEN_RECT_MARGIN_MM,
|
||||
}
|
||||
|
||||
f.write(json.dumps(meta, indent=2, ensure_ascii=False)[:-2])
|
||||
f.write(',\n "placements": [\n')
|
||||
|
||||
for index, p in enumerate(placements):
|
||||
item = {
|
||||
"id": p["id"],
|
||||
"position": [
|
||||
round((p["y_mm"] + ARUCO_SIZE_MM / 2) - origin_y_mm, 2),
|
||||
-1*round(origin_x_mm - (p["x_mm"] + ARUCO_SIZE_MM / 2), 2),
|
||||
-27.3,
|
||||
],
|
||||
"normal": [0, 0, 1],
|
||||
"spin": 90,
|
||||
}
|
||||
line = json.dumps(item, ensure_ascii=False)
|
||||
if index < len(placements) - 1:
|
||||
line += ","
|
||||
f.write(f" {line}\n")
|
||||
|
||||
f.write(" ]\n}\n")
|
||||
|
||||
print(f"PDF geschrieben: {pdf_path.resolve()}")
|
||||
print(f"JSON geschrieben: {json_path.resolve()}")
|
||||
|
||||
Reference in New Issue
Block a user