16MPixel Bilder + Arbeiten an Statistik
1462
pipeline/3_multiview_bundle_adjustment_v5.py
Normal file
484
pipeline/4_robotState_estimation_v7.py
Normal file
@@ -0,0 +1,484 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
4_robotState_estimation_v7.py
|
||||
|
||||
Estimate the Arm1 joint angle from ArUco marker positions.
|
||||
|
||||
What this script does
|
||||
---------------------
|
||||
1. Loads a robot configuration JSON and extracts the local marker positions of Arm1.
|
||||
2. Loads an observation JSON with marker positions (e.g. aruco_positions_optimized.json).
|
||||
3. Matches observed markers to Arm1 markers by marker_id.
|
||||
4. Estimates the Arm1 angle in two ways:
|
||||
|
||||
Option 1 (single marker, optional):
|
||||
----------------------------------
|
||||
If a world-space joint origin is known, estimate angle from one marker by comparing
|
||||
the vector from joint origin -> marker in the model and in the observation.
|
||||
|
||||
Option 2 (marker pairs, default and robust):
|
||||
------------------------------------------
|
||||
For every pair of Arm1 markers, estimate the rotation angle from the relative vector
|
||||
between the two markers. This is translation-invariant and usually the preferred method.
|
||||
|
||||
5. Aggregates all valid estimates using a weighted circular mean and reports:
|
||||
mean angle, circular variance, circular std, linear std on wrapped samples, and per-estimate details.
|
||||
|
||||
Coordinate conventions
|
||||
----------------------
|
||||
The provided robot config says:
|
||||
- right-handed coordinate system
|
||||
- x right, y backward, z up
|
||||
|
||||
Arm1 rotates around the x-axis (joint axis [-1, 0, 0] in the supplied config).
|
||||
The script therefore works in 3D and automatically respects the joint axis sign.
|
||||
|
||||
Usage
|
||||
-----
|
||||
python 4_robotState_estimation_v7.py \
|
||||
--robot-json robot_running_2026_05_30.json \
|
||||
--aruco-json aruco_positions_optimized.json
|
||||
|
||||
Optional:
|
||||
--joint-origin-world X Y Z # enables single-marker estimates
|
||||
--output-json result.json
|
||||
--arm-link Arm1
|
||||
|
||||
The script prints a concise report and can also write a JSON summary.
|
||||
|
||||
Notes
|
||||
-----
|
||||
- This script is intentionally defensive: it accepts positions in meters or millimeters.
|
||||
- It does not require any additional robot state beyond the Arm1 marker geometry.
|
||||
- If only a subset of Arm1 markers is observed, the pairwise estimator still works.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import math
|
||||
from dataclasses import dataclass, asdict
|
||||
from itertools import combinations
|
||||
from pathlib import Path
|
||||
from typing import Dict, Iterable, List, Optional, Sequence, Tuple
|
||||
|
||||
import numpy as np
|
||||
|
||||
|
||||
# ----------------------------
|
||||
# Data structures
|
||||
# ----------------------------
|
||||
|
||||
@dataclass
|
||||
class MarkerSpec:
|
||||
marker_id: int
|
||||
local_position_mm: np.ndarray
|
||||
|
||||
|
||||
@dataclass
|
||||
class MarkerObservation:
|
||||
marker_id: int
|
||||
position_mm: np.ndarray
|
||||
link: Optional[str] = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class AngleEstimate:
|
||||
source: str
|
||||
angle_rad: float
|
||||
angle_deg: float
|
||||
weight: float
|
||||
marker_ids: Tuple[int, ...]
|
||||
|
||||
|
||||
# ----------------------------
|
||||
# Helpers
|
||||
# ----------------------------
|
||||
|
||||
def _as_np3(value: Sequence[float]) -> np.ndarray:
|
||||
arr = np.asarray(value, dtype=float).reshape(3)
|
||||
return arr
|
||||
|
||||
|
||||
def load_json(path: Path) -> dict:
|
||||
with path.open("r", encoding="utf-8") as f:
|
||||
return json.load(f)
|
||||
|
||||
|
||||
def unit_scale_to_mm(units: Optional[str]) -> float:
|
||||
if not units:
|
||||
return 1.0
|
||||
u = str(units).strip().lower()
|
||||
if u in {"mm", "millimeter", "millimeters"}:
|
||||
return 1.0
|
||||
if u in {"m", "meter", "meters"}:
|
||||
return 1000.0
|
||||
if u in {"cm", "centimeter", "centimeters"}:
|
||||
return 10.0
|
||||
# conservative default
|
||||
return 1.0
|
||||
|
||||
|
||||
def normalize_angle_rad(angle: float) -> float:
|
||||
"""Wrap to (-pi, pi]."""
|
||||
return (angle + math.pi) % (2 * math.pi) - math.pi
|
||||
|
||||
|
||||
def angle_between_vectors(v_from: np.ndarray, v_to: np.ndarray, axis: np.ndarray) -> float:
|
||||
"""
|
||||
Signed angle rotating v_from onto v_to around axis.
|
||||
|
||||
Uses atan2( axis_hat · (v_from × v_to), v_from · v_to ).
|
||||
"""
|
||||
a = np.asarray(axis, dtype=float).reshape(3)
|
||||
an = np.linalg.norm(a)
|
||||
if an == 0:
|
||||
raise ValueError("Rotation axis must be non-zero.")
|
||||
a = a / an
|
||||
|
||||
v1 = np.asarray(v_from, dtype=float).reshape(3)
|
||||
v2 = np.asarray(v_to, dtype=float).reshape(3)
|
||||
|
||||
n1 = np.linalg.norm(v1)
|
||||
n2 = np.linalg.norm(v2)
|
||||
if n1 == 0 or n2 == 0:
|
||||
raise ValueError("Cannot compute angle for zero-length vector.")
|
||||
cross_term = float(np.dot(a, np.cross(v1, v2)))
|
||||
dot_term = float(np.dot(v1, v2))
|
||||
return math.atan2(cross_term, dot_term)
|
||||
|
||||
|
||||
def weighted_circular_mean(angles_rad: Sequence[float], weights: Sequence[float]) -> Tuple[float, float, float]:
|
||||
"""
|
||||
Returns:
|
||||
mean_angle_rad, circular_variance, circular_std_rad
|
||||
|
||||
circular_variance = 1 - R, where R is the normalized resultant length.
|
||||
circular_std_rad = sqrt(-2 ln R) if R>0 else pi.
|
||||
"""
|
||||
if len(angles_rad) == 0:
|
||||
raise ValueError("No angles provided.")
|
||||
|
||||
ang = np.asarray(angles_rad, dtype=float)
|
||||
w = np.asarray(weights, dtype=float)
|
||||
w = np.clip(w, 0.0, None)
|
||||
|
||||
if np.sum(w) <= 0:
|
||||
w = np.ones_like(w)
|
||||
|
||||
s = np.sum(w * np.sin(ang))
|
||||
c = np.sum(w * np.cos(ang))
|
||||
mean = math.atan2(s, c)
|
||||
|
||||
R = math.sqrt(s * s + c * c) / float(np.sum(w))
|
||||
R = min(max(R, 0.0), 1.0)
|
||||
|
||||
circular_variance = 1.0 - R
|
||||
circular_std = math.sqrt(max(0.0, -2.0 * math.log(max(R, 1e-15)))) if R > 0 else math.pi
|
||||
return mean, circular_variance, circular_std
|
||||
|
||||
|
||||
def weighted_linear_std_rad(angles_rad: Sequence[float], mean_rad: float, weights: Sequence[float]) -> float:
|
||||
if len(angles_rad) == 0:
|
||||
return float("nan")
|
||||
ang = np.asarray([normalize_angle_rad(a - mean_rad) for a in angles_rad], dtype=float)
|
||||
w = np.asarray(weights, dtype=float)
|
||||
w = np.clip(w, 0.0, None)
|
||||
if np.sum(w) <= 0:
|
||||
w = np.ones_like(w)
|
||||
mu = np.sum(w * ang) / np.sum(w)
|
||||
var = np.sum(w * (ang - mu) ** 2) / np.sum(w)
|
||||
return float(math.sqrt(max(0.0, var)))
|
||||
|
||||
|
||||
def extract_arm_markers(robot: dict, arm_link_name: str) -> Tuple[np.ndarray, List[MarkerSpec], np.ndarray]:
|
||||
"""
|
||||
Returns:
|
||||
joint_origin_mm, markers, joint_axis
|
||||
"""
|
||||
links = robot.get("links", {})
|
||||
if arm_link_name not in links:
|
||||
# case-insensitive fallback
|
||||
lookup = {k.lower(): k for k in links.keys()}
|
||||
if arm_link_name.lower() not in lookup:
|
||||
raise KeyError(f"Link '{arm_link_name}' not found in robot.json.")
|
||||
arm_link_name = lookup[arm_link_name.lower()]
|
||||
|
||||
arm = links[arm_link_name]
|
||||
jt = arm.get("jointToParent", {})
|
||||
joint_origin_mm = _as_np3(jt.get("origin", [0, 0, 0]))
|
||||
joint_axis = _as_np3(jt.get("axis", [1, 0, 0]))
|
||||
|
||||
markers = []
|
||||
for m in arm.get("markers", []):
|
||||
if "id" not in m or "position" not in m:
|
||||
continue
|
||||
markers.append(MarkerSpec(marker_id=int(m["id"]), local_position_mm=_as_np3(m["position"])))
|
||||
|
||||
if not markers:
|
||||
raise ValueError(f"No markers found on link '{arm_link_name}'.")
|
||||
|
||||
return joint_origin_mm, markers, joint_axis
|
||||
|
||||
|
||||
def load_observations(observations_json: dict) -> List[MarkerObservation]:
|
||||
markers = observations_json.get("markers", [])
|
||||
units = observations_json.get("units", {})
|
||||
scale = 1.0
|
||||
if isinstance(units, dict):
|
||||
scale = unit_scale_to_mm(units.get("length"))
|
||||
else:
|
||||
scale = unit_scale_to_mm(units)
|
||||
|
||||
obs: List[MarkerObservation] = []
|
||||
for m in markers:
|
||||
if "marker_id" not in m and "id" not in m:
|
||||
continue
|
||||
marker_id = int(m.get("marker_id", m.get("id")))
|
||||
if "position_mm" in m:
|
||||
pos = _as_np3(m["position_mm"])
|
||||
elif "position_m" in m:
|
||||
pos = _as_np3(m["position_m"]) * 1000.0
|
||||
elif "position" in m:
|
||||
pos = _as_np3(m["position"]) * scale
|
||||
else:
|
||||
continue
|
||||
obs.append(MarkerObservation(marker_id=marker_id, position_mm=pos, link=m.get("link")))
|
||||
return obs
|
||||
|
||||
|
||||
def match_markers(specs: Sequence[MarkerSpec], observations: Sequence[MarkerObservation]) -> Dict[int, Tuple[np.ndarray, np.ndarray]]:
|
||||
"""
|
||||
Returns marker_id -> (local_position_mm, observed_position_mm)
|
||||
"""
|
||||
spec_map = {m.marker_id: m.local_position_mm for m in specs}
|
||||
out = {}
|
||||
for o in observations:
|
||||
if o.marker_id in spec_map:
|
||||
out[o.marker_id] = (spec_map[o.marker_id], o.position_mm)
|
||||
return out
|
||||
|
||||
|
||||
def estimate_pairwise_angles(
|
||||
matched: Dict[int, Tuple[np.ndarray, np.ndarray]],
|
||||
axis: np.ndarray,
|
||||
min_baseline_mm: float = 1.0,
|
||||
) -> List[AngleEstimate]:
|
||||
estimates: List[AngleEstimate] = []
|
||||
ids = sorted(matched.keys())
|
||||
|
||||
for id1, id2 in combinations(ids, 2):
|
||||
p1_local, p1_obs = matched[id1]
|
||||
p2_local, p2_obs = matched[id2]
|
||||
|
||||
v_local = p2_local - p1_local
|
||||
v_obs = p2_obs - p1_obs
|
||||
|
||||
baseline_local = float(np.linalg.norm(v_local))
|
||||
baseline_obs = float(np.linalg.norm(v_obs))
|
||||
if baseline_local < min_baseline_mm or baseline_obs < min_baseline_mm:
|
||||
continue
|
||||
|
||||
try:
|
||||
angle = angle_between_vectors(v_local, v_obs, axis)
|
||||
except ValueError:
|
||||
continue
|
||||
|
||||
# Weight long baselines a little more strongly; if a pair is very short, it becomes noisy.
|
||||
weight = max(1e-6, baseline_local * baseline_obs)
|
||||
estimates.append(
|
||||
AngleEstimate(
|
||||
source="pair",
|
||||
angle_rad=normalize_angle_rad(angle),
|
||||
angle_deg=math.degrees(normalize_angle_rad(angle)),
|
||||
weight=weight,
|
||||
marker_ids=(id1, id2),
|
||||
)
|
||||
)
|
||||
return estimates
|
||||
|
||||
|
||||
def estimate_single_marker_angles(
|
||||
matched: Dict[int, Tuple[np.ndarray, np.ndarray]],
|
||||
joint_origin_world_mm: np.ndarray,
|
||||
axis: np.ndarray,
|
||||
) -> List[AngleEstimate]:
|
||||
"""
|
||||
Single-marker estimates require a known world-space joint origin.
|
||||
|
||||
For each marker, compare:
|
||||
v_local = marker_local - joint_origin_local
|
||||
v_obs = marker_obs - joint_origin_world
|
||||
|
||||
In the provided Arm1 config the joint origin is the local origin of Arm1, so
|
||||
joint_origin_local is taken as [0,0,0].
|
||||
"""
|
||||
estimates: List[AngleEstimate] = []
|
||||
joint_origin_world_mm = _as_np3(joint_origin_world_mm)
|
||||
|
||||
for marker_id, (p_local, p_obs) in matched.items():
|
||||
v_local = p_local # Arm1 local origin is at the joint
|
||||
v_obs = p_obs - joint_origin_world_mm
|
||||
|
||||
if np.linalg.norm(v_local) < 1e-9 or np.linalg.norm(v_obs) < 1e-9:
|
||||
continue
|
||||
|
||||
try:
|
||||
angle = angle_between_vectors(v_local, v_obs, axis)
|
||||
except ValueError:
|
||||
continue
|
||||
|
||||
weight = float(np.linalg.norm(v_local))
|
||||
estimates.append(
|
||||
AngleEstimate(
|
||||
source="single",
|
||||
angle_rad=normalize_angle_rad(angle),
|
||||
angle_deg=math.degrees(normalize_angle_rad(angle)),
|
||||
weight=weight,
|
||||
marker_ids=(marker_id,),
|
||||
)
|
||||
)
|
||||
return estimates
|
||||
|
||||
|
||||
def build_report(
|
||||
arm_link_name: str,
|
||||
joint_origin_mm: np.ndarray,
|
||||
joint_axis: np.ndarray,
|
||||
matched: Dict[int, Tuple[np.ndarray, np.ndarray]],
|
||||
estimates: List[AngleEstimate],
|
||||
) -> dict:
|
||||
if not estimates:
|
||||
raise ValueError("No valid angle estimates could be computed.")
|
||||
|
||||
mean_rad, circ_var, circ_std_rad = weighted_circular_mean(
|
||||
[e.angle_rad for e in estimates],
|
||||
[e.weight for e in estimates],
|
||||
)
|
||||
lin_std_rad = weighted_linear_std_rad(
|
||||
[e.angle_rad for e in estimates],
|
||||
mean_rad,
|
||||
[e.weight for e in estimates],
|
||||
)
|
||||
|
||||
# unwrap around mean for a stable arithmetic mean/std reporting
|
||||
unwrapped_deg = []
|
||||
for e in estimates:
|
||||
d = math.degrees(normalize_angle_rad(e.angle_rad - mean_rad))
|
||||
unwrapped_deg.append(d)
|
||||
|
||||
report = {
|
||||
"link": arm_link_name,
|
||||
"joint_origin_mm": joint_origin_mm.tolist(),
|
||||
"joint_axis": joint_axis.tolist(),
|
||||
"num_matched_markers": len(matched),
|
||||
"num_estimates": len(estimates),
|
||||
"mean_angle_rad": mean_rad,
|
||||
"mean_angle_deg": math.degrees(mean_rad),
|
||||
"circular_variance": circ_var,
|
||||
"circular_std_rad": circ_std_rad,
|
||||
"circular_std_deg": math.degrees(circ_std_rad),
|
||||
"linear_std_rad": lin_std_rad,
|
||||
"linear_std_deg": math.degrees(lin_std_rad),
|
||||
"estimate_spread_deg_unwrapped": {
|
||||
"min": float(np.min(unwrapped_deg)) if unwrapped_deg else None,
|
||||
"max": float(np.max(unwrapped_deg)) if unwrapped_deg else None,
|
||||
"mean_abs": float(np.mean(np.abs(unwrapped_deg))) if unwrapped_deg else None,
|
||||
},
|
||||
"estimates": [asdict(e) for e in estimates],
|
||||
}
|
||||
return report
|
||||
|
||||
|
||||
def pretty_print_report(report: dict) -> None:
|
||||
print("\nArm angle estimation report")
|
||||
print("=" * 32)
|
||||
print(f"Link : {report['link']}")
|
||||
print(f"Matched markers : {report['num_matched_markers']}")
|
||||
print(f"Valid estimates : {report['num_estimates']}")
|
||||
print(f"Mean angle : {report['mean_angle_deg']:.3f} deg")
|
||||
print(f"Circular variance : {report['circular_variance']:.6f}")
|
||||
print(f"Circular std : {report['circular_std_deg']:.3f} deg")
|
||||
print(f"Linear std (wrapped): {report['linear_std_deg']:.3f} deg")
|
||||
|
||||
print("\nIndividual estimates")
|
||||
print("-" * 32)
|
||||
for e in report["estimates"]:
|
||||
mids = ",".join(str(x) for x in e["marker_ids"])
|
||||
print(f"{e['source']:>6s} markers [{mids:<8s}] angle={e['angle_deg']:>8.3f} deg weight={e['weight']:.3f}")
|
||||
|
||||
|
||||
def estimate_arm1_state(
|
||||
robot_json: dict,
|
||||
observations_json: dict,
|
||||
arm_link_name: str = "Arm1",
|
||||
joint_origin_world_mm: Optional[Sequence[float]] = None,
|
||||
) -> dict:
|
||||
joint_origin_mm, arm_markers, joint_axis = extract_arm_markers(robot_json, arm_link_name)
|
||||
observations = load_observations(observations_json)
|
||||
matched = match_markers(arm_markers, observations)
|
||||
|
||||
if not matched:
|
||||
available = sorted(m.marker_id for m in arm_markers)
|
||||
observed = sorted(o.marker_id for o in observations)
|
||||
raise ValueError(
|
||||
f"No Arm1 marker matches found. Arm markers: {available}. Observed IDs present in file: {observed[:25]}"
|
||||
+ ("..." if len(observed) > 25 else "")
|
||||
)
|
||||
|
||||
estimates = estimate_pairwise_angles(matched, axis=joint_axis)
|
||||
|
||||
# Optional single-marker estimates only if a world-space joint origin is supplied.
|
||||
if joint_origin_world_mm is not None:
|
||||
estimates.extend(estimate_single_marker_angles(matched, _as_np3(joint_origin_world_mm), axis=joint_axis))
|
||||
|
||||
report = build_report(
|
||||
arm_link_name=arm_link_name,
|
||||
joint_origin_mm=joint_origin_mm,
|
||||
joint_axis=joint_axis,
|
||||
matched=matched,
|
||||
estimates=estimates,
|
||||
)
|
||||
return report
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser(description="Estimate Arm1 angle from ArUco marker positions.")
|
||||
parser.add_argument("--robot-json", type=Path, default=Path("robot.json"), help="Path to robot config JSON.")
|
||||
parser.add_argument("--aruco-json", type=Path, default=Path("aruco_positions_optimized.json"), help="Path to marker observation JSON.")
|
||||
parser.add_argument("--arm-link", type=str, default="Arm1", help="Name of the link to estimate.")
|
||||
parser.add_argument(
|
||||
"--joint-origin-world",
|
||||
type=float,
|
||||
nargs=3,
|
||||
default=None,
|
||||
metavar=("X", "Y", "Z"),
|
||||
help="Optional world-space joint origin for single-marker estimates.",
|
||||
)
|
||||
parser.add_argument("--output-json", type=Path, default=None, help="Optional path to write the result JSON.")
|
||||
args = parser.parse_args()
|
||||
|
||||
robot_json = load_json(args.robot_json)
|
||||
observations_json = load_json(args.aruco_json)
|
||||
|
||||
report = estimate_arm1_state(
|
||||
robot_json=robot_json,
|
||||
observations_json=observations_json,
|
||||
arm_link_name=args.arm_link,
|
||||
joint_origin_world_mm=args.joint_origin_world,
|
||||
)
|
||||
|
||||
pretty_print_report(report)
|
||||
|
||||
if args.output_json:
|
||||
args.output_json.parent.mkdir(parents=True, exist_ok=True)
|
||||
with args.output_json.open("w", encoding="utf-8") as f:
|
||||
json.dump(report, f, indent=2, ensure_ascii=False)
|
||||
print(f"\nWrote JSON summary to: {args.output_json}")
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -1,124 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.2",
|
||||
"stage": "initial_triangulation",
|
||||
"created_utc": "2026-05-29T17:30:29Z",
|
||||
"summary": {
|
||||
"num_cameras": 3,
|
||||
"num_markers": 8,
|
||||
"num_constraints": 25
|
||||
},
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 122,
|
||||
"position_m": [
|
||||
0.14895405123790784,
|
||||
-0.2643844341363741,
|
||||
0.16564713440852427
|
||||
],
|
||||
"position_mm": [
|
||||
148.95405123790783,
|
||||
-264.38443413637407,
|
||||
165.64713440852427
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 198,
|
||||
"position_m": [
|
||||
0.11667067734641628,
|
||||
-0.05481782829770797,
|
||||
0.13564627196635054
|
||||
],
|
||||
"position_mm": [
|
||||
116.67067734641628,
|
||||
-54.81782829770797,
|
||||
135.64627196635055
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 210,
|
||||
"position_m": [
|
||||
0.020141782836696105,
|
||||
-0.019633567005699154,
|
||||
7.847443788934222e-06
|
||||
],
|
||||
"position_mm": [
|
||||
20.141782836696105,
|
||||
-19.633567005699152,
|
||||
0.007847443788934223
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"position_m": [
|
||||
0.2496094175197415,
|
||||
-0.009326316290609264,
|
||||
-0.0005379225707190097
|
||||
],
|
||||
"position_mm": [
|
||||
249.6094175197415,
|
||||
-9.326316290609263,
|
||||
-0.5379225707190097
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 214,
|
||||
"position_m": [
|
||||
0.3498840022857963,
|
||||
-0.009714324911855806,
|
||||
-2.6845703214407957e-05
|
||||
],
|
||||
"position_mm": [
|
||||
349.8840022857963,
|
||||
-9.714324911855806,
|
||||
-0.026845703214407955
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"position_m": [
|
||||
0.24976330898445626,
|
||||
-0.08967780487999989,
|
||||
-0.00011862459122980862
|
||||
],
|
||||
"position_mm": [
|
||||
249.76330898445624,
|
||||
-89.6778048799999,
|
||||
-0.11862459122980862
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 229,
|
||||
"position_m": [
|
||||
0.11592480843458029,
|
||||
-0.1392249195451953,
|
||||
0.14252312456392438
|
||||
],
|
||||
"position_mm": [
|
||||
115.9248084345803,
|
||||
-139.22491954519532,
|
||||
142.52312456392437
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 243,
|
||||
"position_m": [
|
||||
0.11871032400722982,
|
||||
-0.17057910506578056,
|
||||
0.0996476225849942
|
||||
],
|
||||
"position_mm": [
|
||||
118.71032400722981,
|
||||
-170.57910506578057,
|
||||
99.6476225849942
|
||||
],
|
||||
"link": "Arm1"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.2",
|
||||
"created_utc": "2026-05-29T17:30:30Z",
|
||||
"summary": {
|
||||
"num_cameras": 3,
|
||||
"num_markers": 8,
|
||||
"num_constraints": 25
|
||||
},
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 122,
|
||||
"position_m": [
|
||||
0.16408414603046484,
|
||||
-0.2598816877789887,
|
||||
0.17784668754227578
|
||||
],
|
||||
"position_mm": [
|
||||
164.08414603046484,
|
||||
-259.8816877789887,
|
||||
177.8466875422758
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 198,
|
||||
"position_m": [
|
||||
0.11704671868929717,
|
||||
-0.05006352997427808,
|
||||
0.13545744846179997
|
||||
],
|
||||
"position_mm": [
|
||||
117.04671868929717,
|
||||
-50.063529974278076,
|
||||
135.45744846179997
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 210,
|
||||
"position_m": [
|
||||
0.019883267288547467,
|
||||
-0.019568887683375974,
|
||||
-6.02159742251129e-05
|
||||
],
|
||||
"position_mm": [
|
||||
19.883267288547465,
|
||||
-19.568887683375973,
|
||||
-0.0602159742251129
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"position_m": [
|
||||
0.24989200282636703,
|
||||
-0.009772675866705374,
|
||||
1.0334501290569615e-05
|
||||
],
|
||||
"position_mm": [
|
||||
249.89200282636702,
|
||||
-9.772675866705374,
|
||||
0.010334501290569615
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 214,
|
||||
"position_m": [
|
||||
0.34989199483349664,
|
||||
-0.009735514620349328,
|
||||
1.4271508683918328e-05
|
||||
],
|
||||
"position_mm": [
|
||||
349.89199483349665,
|
||||
-9.735514620349328,
|
||||
0.014271508683918327
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"position_m": [
|
||||
0.24981646807454147,
|
||||
-0.08977263518943693,
|
||||
-1.508171313798581e-05
|
||||
],
|
||||
"position_mm": [
|
||||
249.81646807454146,
|
||||
-89.77263518943693,
|
||||
-0.01508171313798581
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 229,
|
||||
"position_m": [
|
||||
0.11773154751353263,
|
||||
-0.13967941405892637,
|
||||
0.1437326114716167
|
||||
],
|
||||
"position_mm": [
|
||||
117.73154751353262,
|
||||
-139.67941405892637,
|
||||
143.7326114716167
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 243,
|
||||
"position_m": [
|
||||
0.11835862963107012,
|
||||
-0.16963843269272738,
|
||||
0.10433506872776273
|
||||
],
|
||||
"position_mm": [
|
||||
118.35862963107012,
|
||||
-169.63843269272738,
|
||||
104.33506872776273
|
||||
],
|
||||
"link": "Arm1"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"created_utc": "2026-05-29T17:28:02Z",
|
||||
"summary": {
|
||||
"num_cameras": 2,
|
||||
"num_markers": 6,
|
||||
"num_constraints": 124
|
||||
},
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 101,
|
||||
"position_m": [
|
||||
0.2763032509383358,
|
||||
-0.2695119989339591,
|
||||
0.20699150350169354
|
||||
],
|
||||
"position_mm": [
|
||||
276.3032509383358,
|
||||
-269.5119989339591,
|
||||
206.99150350169353
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 124,
|
||||
"position_m": [
|
||||
0.2793537536854657,
|
||||
-0.19507589060009986,
|
||||
0.20575080844610052
|
||||
],
|
||||
"position_mm": [
|
||||
279.35375368546573,
|
||||
-195.07589060009985,
|
||||
205.75080844610054
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"position_m": [
|
||||
0.2504668030892929,
|
||||
-0.009744842404164922,
|
||||
0.00036153034259814553
|
||||
],
|
||||
"position_mm": [
|
||||
250.4668030892929,
|
||||
-9.744842404164922,
|
||||
0.36153034259814554
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"position_m": [
|
||||
0.2505650600131585,
|
||||
-0.08974350678317572,
|
||||
-7.314160355311047e-05
|
||||
],
|
||||
"position_mm": [
|
||||
250.56506001315847,
|
||||
-89.74350678317572,
|
||||
-0.07314160355311047
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 217,
|
||||
"position_m": [
|
||||
0.6505649424117744,
|
||||
-0.08925113206211865,
|
||||
5.944202640911437e-06
|
||||
],
|
||||
"position_mm": [
|
||||
650.5649424117744,
|
||||
-89.25113206211866,
|
||||
0.005944202640911437
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 243,
|
||||
"position_m": [
|
||||
0.22189116732597133,
|
||||
-0.11814767263539784,
|
||||
0.2410348899290192
|
||||
],
|
||||
"position_mm": [
|
||||
221.89116732597134,
|
||||
-118.14767263539784,
|
||||
241.0348899290192
|
||||
],
|
||||
"link": "Arm1"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.2",
|
||||
"created_utc": "2026-05-29T17:27:22Z",
|
||||
"summary": {
|
||||
"num_cameras": 2,
|
||||
"num_markers": 6,
|
||||
"num_constraints": 25
|
||||
},
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 101,
|
||||
"position_m": [
|
||||
0.27925522736880354,
|
||||
-0.26810432660177613,
|
||||
0.20675746626010996
|
||||
],
|
||||
"position_mm": [
|
||||
279.25522736880356,
|
||||
-268.1043266017761,
|
||||
206.75746626010996
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 124,
|
||||
"position_m": [
|
||||
0.27817972721745543,
|
||||
-0.198693114830424,
|
||||
0.20728978938475356
|
||||
],
|
||||
"position_mm": [
|
||||
278.1797272174554,
|
||||
-198.693114830424,
|
||||
207.28978938475356
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"position_m": [
|
||||
0.25188564339287434,
|
||||
-0.009996760415642205,
|
||||
8.624190819127337e-06
|
||||
],
|
||||
"position_mm": [
|
||||
251.88564339287433,
|
||||
-9.996760415642205,
|
||||
0.008624190819127337
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"position_m": [
|
||||
0.24918266331600872,
|
||||
-0.08994956851968179,
|
||||
0.0004979860645055631
|
||||
],
|
||||
"position_mm": [
|
||||
249.18266331600873,
|
||||
-89.94956851968179,
|
||||
0.49798606450556304
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 217,
|
||||
"position_m": [
|
||||
0.6508078605096576,
|
||||
-0.08875098840686577,
|
||||
-0.00019743032075163398
|
||||
],
|
||||
"position_mm": [
|
||||
650.8078605096575,
|
||||
-88.75098840686577,
|
||||
-0.19743032075163397
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 243,
|
||||
"position_m": [
|
||||
0.22189115068314824,
|
||||
-0.11814766370925495,
|
||||
0.24103488459175698
|
||||
],
|
||||
"position_mm": [
|
||||
221.89115068314825,
|
||||
-118.14766370925494,
|
||||
241.034884591757
|
||||
],
|
||||
"link": "Arm1"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.2",
|
||||
"created_utc": "2026-05-29T17:25:57Z",
|
||||
"summary": {
|
||||
"num_cameras": 2,
|
||||
"num_markers": 6,
|
||||
"num_constraints": 25
|
||||
},
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 101,
|
||||
"position_m": [
|
||||
0.27925522736880354,
|
||||
-0.26810432660177613,
|
||||
0.20675746626010996
|
||||
],
|
||||
"position_mm": [
|
||||
279.25522736880356,
|
||||
-268.1043266017761,
|
||||
206.75746626010996
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 124,
|
||||
"position_m": [
|
||||
0.27817972721745543,
|
||||
-0.198693114830424,
|
||||
0.20728978938475356
|
||||
],
|
||||
"position_mm": [
|
||||
278.1797272174554,
|
||||
-198.693114830424,
|
||||
207.28978938475356
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"position_m": [
|
||||
0.25188564339287434,
|
||||
-0.009996760415642205,
|
||||
8.624190819127337e-06
|
||||
],
|
||||
"position_mm": [
|
||||
251.88564339287433,
|
||||
-9.996760415642205,
|
||||
0.008624190819127337
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"position_m": [
|
||||
0.24918266331600872,
|
||||
-0.08994956851968179,
|
||||
0.0004979860645055631
|
||||
],
|
||||
"position_mm": [
|
||||
249.18266331600873,
|
||||
-89.94956851968179,
|
||||
0.49798606450556304
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 217,
|
||||
"position_m": [
|
||||
0.6508078605096576,
|
||||
-0.08875098840686577,
|
||||
-0.00019743032075163398
|
||||
],
|
||||
"position_mm": [
|
||||
650.8078605096575,
|
||||
-88.75098840686577,
|
||||
-0.19743032075163397
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 243,
|
||||
"position_m": [
|
||||
0.22189115068314824,
|
||||
-0.11814766370925495,
|
||||
0.24103488459175698
|
||||
],
|
||||
"position_mm": [
|
||||
221.89115068314825,
|
||||
-118.14766370925494,
|
||||
241.034884591757
|
||||
],
|
||||
"link": "Arm1"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"created_utc": "2026-05-29T15:46:21Z",
|
||||
"summary": {
|
||||
"num_cameras": 3,
|
||||
"num_markers": 8,
|
||||
"num_constraints": 124
|
||||
},
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 122,
|
||||
"position_m": [
|
||||
0.17089422822056546,
|
||||
-0.2527541571654684,
|
||||
0.1764152549940555
|
||||
],
|
||||
"position_mm": [
|
||||
170.89422822056545,
|
||||
-252.7541571654684,
|
||||
176.4152549940555
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 198,
|
||||
"position_m": [
|
||||
0.11820089366496654,
|
||||
-0.047715698517725044,
|
||||
0.13484286562398873
|
||||
],
|
||||
"position_mm": [
|
||||
118.20089366496654,
|
||||
-47.715698517725045,
|
||||
134.84286562398873
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 210,
|
||||
"position_m": [
|
||||
0.019901746801512552,
|
||||
-0.01963466568686263,
|
||||
9.617252287009137e-06
|
||||
],
|
||||
"position_mm": [
|
||||
19.90174680151255,
|
||||
-19.63466568686263,
|
||||
0.009617252287009137
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"position_m": [
|
||||
0.2499096083027387,
|
||||
-0.009818013466186716,
|
||||
7.989879668767411e-05
|
||||
],
|
||||
"position_mm": [
|
||||
249.9096083027387,
|
||||
-9.818013466186716,
|
||||
0.0798987966876741
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 214,
|
||||
"position_m": [
|
||||
0.34990956338036805,
|
||||
-0.009897723013002886,
|
||||
0.00018350870434418896
|
||||
],
|
||||
"position_mm": [
|
||||
349.90956338036807,
|
||||
-9.897723013002885,
|
||||
0.18350870434418895
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"position_m": [
|
||||
0.2498458511342522,
|
||||
-0.08981799167832137,
|
||||
8.390710569292869e-05
|
||||
],
|
||||
"position_mm": [
|
||||
249.8458511342522,
|
||||
-89.81799167832138,
|
||||
0.08390710569292868
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 229,
|
||||
"position_m": [
|
||||
0.11749065839320026,
|
||||
-0.1374999325479895,
|
||||
0.14103531578996023
|
||||
],
|
||||
"position_mm": [
|
||||
117.49065839320026,
|
||||
-137.49993254798952,
|
||||
141.03531578996024
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 243,
|
||||
"position_m": [
|
||||
0.11810035461313918,
|
||||
-0.17482765345663995,
|
||||
0.10853212348806678
|
||||
],
|
||||
"position_mm": [
|
||||
118.10035461313919,
|
||||
-174.82765345663995,
|
||||
108.53212348806677
|
||||
],
|
||||
"link": "Arm1"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.1",
|
||||
"created_utc": "2026-05-29T11:11:54Z",
|
||||
"summary": {
|
||||
"num_cameras": 3,
|
||||
"num_markers": 8,
|
||||
"num_constraints": 31
|
||||
},
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 122,
|
||||
"position_m": [
|
||||
0.17089422820567965,
|
||||
-0.25275415672150703,
|
||||
0.17641525453920115
|
||||
],
|
||||
"position_mm": [
|
||||
170.89422820567964,
|
||||
-252.75415672150703,
|
||||
176.41525453920116
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 198,
|
||||
"position_m": [
|
||||
0.0782893264155328,
|
||||
-0.04392881888831051,
|
||||
0.12370444588754521
|
||||
],
|
||||
"position_mm": [
|
||||
78.2893264155328,
|
||||
-43.92881888831051,
|
||||
123.70444588754522
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 210,
|
||||
"position_m": [
|
||||
0.09810874978803365,
|
||||
0.04840357531258377,
|
||||
-0.061619957949719154
|
||||
],
|
||||
"position_mm": [
|
||||
98.10874978803365,
|
||||
48.40357531258377,
|
||||
-61.61995794971915
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"position_m": [
|
||||
0.26424764035228315,
|
||||
-0.0563864907759364,
|
||||
0.05844872874629282
|
||||
],
|
||||
"position_mm": [
|
||||
264.24764035228316,
|
||||
-56.3864907759364,
|
||||
58.448728746292815
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 214,
|
||||
"position_m": [
|
||||
0.34990989719464827,
|
||||
-0.024224263154301,
|
||||
0.01810457272024633
|
||||
],
|
||||
"position_mm": [
|
||||
349.9098971946483,
|
||||
-24.224263154301,
|
||||
18.10457272024633
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"position_m": [
|
||||
0.24658646632630482,
|
||||
-0.07931906684450687,
|
||||
-0.016131019201613698
|
||||
],
|
||||
"position_mm": [
|
||||
246.58646632630482,
|
||||
-79.31906684450688,
|
||||
-16.131019201613697
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 229,
|
||||
"position_m": [
|
||||
0.1138713279648291,
|
||||
-0.12617149104964914,
|
||||
0.1320972625673932
|
||||
],
|
||||
"position_mm": [
|
||||
113.8713279648291,
|
||||
-126.17149104964915,
|
||||
132.09726256739322
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 243,
|
||||
"position_m": [
|
||||
0.1181663829394805,
|
||||
-0.16401370137352922,
|
||||
0.1004795056960036
|
||||
],
|
||||
"position_mm": [
|
||||
118.1663829394805,
|
||||
-164.01370137352922,
|
||||
100.4795056960036
|
||||
],
|
||||
"link": "Arm1"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.2",
|
||||
"created_utc": "2026-05-29T16:16:41Z",
|
||||
"summary": {
|
||||
"num_cameras": 3,
|
||||
"num_markers": 8,
|
||||
"num_constraints": 31
|
||||
},
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 122,
|
||||
"position_m": [
|
||||
0.1640841460387451,
|
||||
-0.25988168778348236,
|
||||
0.1778466875479601
|
||||
],
|
||||
"position_mm": [
|
||||
164.0841460387451,
|
||||
-259.88168778348233,
|
||||
177.8466875479601
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 198,
|
||||
"position_m": [
|
||||
0.07976244041440077,
|
||||
-0.038576018828714795,
|
||||
0.11487315663801236
|
||||
],
|
||||
"position_mm": [
|
||||
79.76244041440077,
|
||||
-38.576018828714794,
|
||||
114.87315663801236
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 210,
|
||||
"position_m": [
|
||||
0.0996821756406683,
|
||||
0.03710847589362415,
|
||||
-0.05331635027530674
|
||||
],
|
||||
"position_mm": [
|
||||
99.68217564066829,
|
||||
37.108475893624146,
|
||||
-53.31635027530674
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"position_m": [
|
||||
0.2680081552819457,
|
||||
-0.062117037306744734,
|
||||
0.0684224623138917
|
||||
],
|
||||
"position_mm": [
|
||||
268.00815528194573,
|
||||
-62.117037306744734,
|
||||
68.4224623138917
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 214,
|
||||
"position_m": [
|
||||
0.34938478881198143,
|
||||
-0.027829551996677953,
|
||||
0.02149438584856872
|
||||
],
|
||||
"position_mm": [
|
||||
349.3847888119814,
|
||||
-27.829551996677953,
|
||||
21.49438584856872
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"position_m": [
|
||||
0.24863351055087862,
|
||||
-0.08655725852674244,
|
||||
-0.0052476759116907076
|
||||
],
|
||||
"position_mm": [
|
||||
248.6335105508786,
|
||||
-86.55725852674244,
|
||||
-5.247675911690708
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 229,
|
||||
"position_m": [
|
||||
0.11002053390049146,
|
||||
-0.12250830094158902,
|
||||
0.12671062737439784
|
||||
],
|
||||
"position_mm": [
|
||||
110.02053390049146,
|
||||
-122.50830094158901,
|
||||
126.71062737439784
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 243,
|
||||
"position_m": [
|
||||
0.11781900402232785,
|
||||
-0.16245035968935984,
|
||||
0.09853348887316105
|
||||
],
|
||||
"position_mm": [
|
||||
117.81900402232785,
|
||||
-162.45035968935983,
|
||||
98.53348887316105
|
||||
],
|
||||
"link": "Arm1"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.2",
|
||||
"created_utc": "2026-05-29T16:20:54Z",
|
||||
"summary": {
|
||||
"num_cameras": 3,
|
||||
"num_markers": 8,
|
||||
"num_constraints": 0
|
||||
},
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 122,
|
||||
"position_m": [
|
||||
0.1640841237526153,
|
||||
-0.25988166817741076,
|
||||
0.17784664622850113
|
||||
],
|
||||
"position_mm": [
|
||||
164.0841237526153,
|
||||
-259.88166817741075,
|
||||
177.84664622850113
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 198,
|
||||
"position_m": [
|
||||
0.11885196815304096,
|
||||
-0.054736573352492865,
|
||||
0.13960310586430766
|
||||
],
|
||||
"position_mm": [
|
||||
118.85196815304096,
|
||||
-54.73657335249286,
|
||||
139.60310586430765
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 210,
|
||||
"position_m": [
|
||||
0.020141963615235826,
|
||||
-0.019634164877100443,
|
||||
7.753085871262744e-06
|
||||
],
|
||||
"position_mm": [
|
||||
20.141963615235827,
|
||||
-19.634164877100442,
|
||||
0.007753085871262744
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"position_m": [
|
||||
0.2496593710697911,
|
||||
-0.009392918889186603,
|
||||
-0.0004990225599633067
|
||||
],
|
||||
"position_mm": [
|
||||
249.65937106979112,
|
||||
-9.392918889186603,
|
||||
-0.49902255996330674
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 214,
|
||||
"position_m": [
|
||||
0.3498840377079552,
|
||||
-0.009731954903122878,
|
||||
9.81931763459405e-06
|
||||
],
|
||||
"position_mm": [
|
||||
349.8840377079552,
|
||||
-9.731954903122878,
|
||||
0.009819317634594048
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"position_m": [
|
||||
0.24980138880179487,
|
||||
-0.08972396993800054,
|
||||
-8.289008073662344e-05
|
||||
],
|
||||
"position_mm": [
|
||||
249.80138880179487,
|
||||
-89.72396993800054,
|
||||
-0.08289008073662345
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 229,
|
||||
"position_m": [
|
||||
0.11814536932848009,
|
||||
-0.137946952742281,
|
||||
0.14664027759400072
|
||||
],
|
||||
"position_mm": [
|
||||
118.14536932848009,
|
||||
-137.94695274228098,
|
||||
146.64027759400074
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 243,
|
||||
"position_m": [
|
||||
0.11842637897038044,
|
||||
-0.16941492081348128,
|
||||
0.0997105370611122
|
||||
],
|
||||
"position_mm": [
|
||||
118.42637897038044,
|
||||
-169.41492081348127,
|
||||
99.7105370611122
|
||||
],
|
||||
"link": "Arm1"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.2",
|
||||
"created_utc": "2026-05-29T17:29:56Z",
|
||||
"summary": {
|
||||
"num_cameras": 3,
|
||||
"num_markers": 8,
|
||||
"num_constraints": 25
|
||||
},
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 122,
|
||||
"position_m": [
|
||||
0.16408414603046484,
|
||||
-0.2598816877789887,
|
||||
0.17784668754227578
|
||||
],
|
||||
"position_mm": [
|
||||
164.08414603046484,
|
||||
-259.8816877789887,
|
||||
177.8466875422758
|
||||
],
|
||||
"link": "Arm2"
|
||||
},
|
||||
{
|
||||
"marker_id": 198,
|
||||
"position_m": [
|
||||
0.11704671868929717,
|
||||
-0.05006352997427808,
|
||||
0.13545744846179997
|
||||
],
|
||||
"position_mm": [
|
||||
117.04671868929717,
|
||||
-50.063529974278076,
|
||||
135.45744846179997
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 210,
|
||||
"position_m": [
|
||||
0.019883267288547467,
|
||||
-0.019568887683375974,
|
||||
-6.02159742251129e-05
|
||||
],
|
||||
"position_mm": [
|
||||
19.883267288547465,
|
||||
-19.568887683375973,
|
||||
-0.0602159742251129
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"position_m": [
|
||||
0.24989200282636703,
|
||||
-0.009772675866705374,
|
||||
1.0334501290569615e-05
|
||||
],
|
||||
"position_mm": [
|
||||
249.89200282636702,
|
||||
-9.772675866705374,
|
||||
0.010334501290569615
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 214,
|
||||
"position_m": [
|
||||
0.34989199483349664,
|
||||
-0.009735514620349328,
|
||||
1.4271508683918328e-05
|
||||
],
|
||||
"position_mm": [
|
||||
349.89199483349665,
|
||||
-9.735514620349328,
|
||||
0.014271508683918327
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"position_m": [
|
||||
0.24981646807454147,
|
||||
-0.08977263518943693,
|
||||
-1.508171313798581e-05
|
||||
],
|
||||
"position_mm": [
|
||||
249.81646807454146,
|
||||
-89.77263518943693,
|
||||
-0.01508171313798581
|
||||
],
|
||||
"link": "Board"
|
||||
},
|
||||
{
|
||||
"marker_id": 229,
|
||||
"position_m": [
|
||||
0.11773154751353263,
|
||||
-0.13967941405892637,
|
||||
0.1437326114716167
|
||||
],
|
||||
"position_mm": [
|
||||
117.73154751353262,
|
||||
-139.67941405892637,
|
||||
143.7326114716167
|
||||
],
|
||||
"link": "Arm1"
|
||||
},
|
||||
{
|
||||
"marker_id": 243,
|
||||
"position_m": [
|
||||
0.11835862963107012,
|
||||
-0.16963843269272738,
|
||||
0.10433506872776273
|
||||
],
|
||||
"position_mm": [
|
||||
118.35862963107012,
|
||||
-169.63843269272738,
|
||||
104.33506872776273
|
||||
],
|
||||
"link": "Arm1"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,799 +0,0 @@
|
||||
{
|
||||
"schema_version": "2.0",
|
||||
"created_utc": "2026-05-29T18:13:32Z",
|
||||
"source": {
|
||||
"marker_positions_file": "aruco_positions_optimized_Set3_v4.json",
|
||||
"robot_file": "..\\robot.json"
|
||||
},
|
||||
"summary": {
|
||||
"num_links": 9,
|
||||
"num_observed_markers": 8,
|
||||
"num_link_markers": 25,
|
||||
"root_link": "Board",
|
||||
"optimizer": {
|
||||
"cost": 0.001596169080421209,
|
||||
"success": true,
|
||||
"status": 2,
|
||||
"message": "`ftol` termination condition is satisfied.",
|
||||
"nfev": 4,
|
||||
"njev": 4
|
||||
},
|
||||
"fit_stats": {
|
||||
"num_markers_used": 8,
|
||||
"mean_error_m": 0.010174015156011006,
|
||||
"median_error_m": 0.0081510187450574,
|
||||
"rms_error_m": 0.01234803815522387,
|
||||
"worst_error_m": 0.027803375607782888,
|
||||
"p80_error_m": 0.01066478101691201,
|
||||
"p90_error_m": 0.016414008933028513
|
||||
},
|
||||
"stages": [
|
||||
{
|
||||
"depth": 0,
|
||||
"active_links": [
|
||||
"Board"
|
||||
],
|
||||
"active_joint_vars": [],
|
||||
"mean_error_m": 4.1869206709871756e-05,
|
||||
"rms_error_m": 4.423857209220498e-05,
|
||||
"worst_error_m": 6.087233578986151e-05,
|
||||
"num_markers_used": 4,
|
||||
"optimizer_info": {
|
||||
"cost": 7.828205043028872e-09,
|
||||
"success": true,
|
||||
"status": 1,
|
||||
"message": "`gtol` termination condition is satisfied.",
|
||||
"nfev": 1,
|
||||
"njev": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"depth": 1,
|
||||
"active_links": [
|
||||
"Board",
|
||||
"Base"
|
||||
],
|
||||
"active_joint_vars": [
|
||||
"x"
|
||||
],
|
||||
"mean_error_m": 4.1869206709871756e-05,
|
||||
"rms_error_m": 4.423857209220498e-05,
|
||||
"worst_error_m": 6.087233578986151e-05,
|
||||
"num_markers_used": 4,
|
||||
"optimizer_info": {
|
||||
"cost": 7.828205043028872e-09,
|
||||
"success": true,
|
||||
"status": 1,
|
||||
"message": "`gtol` termination condition is satisfied.",
|
||||
"nfev": 1,
|
||||
"njev": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"depth": 2,
|
||||
"active_links": [
|
||||
"Board",
|
||||
"Base",
|
||||
"Arm1"
|
||||
],
|
||||
"active_joint_vars": [
|
||||
"x",
|
||||
"y"
|
||||
],
|
||||
"mean_error_m": 0.006745485580070273,
|
||||
"rms_error_m": 0.007483965411863164,
|
||||
"worst_error_m": 0.013168099127981843,
|
||||
"num_markers_used": 7,
|
||||
"optimizer_info": {
|
||||
"cost": 0.0006290927673917855,
|
||||
"success": true,
|
||||
"status": 2,
|
||||
"message": "`ftol` termination condition is satisfied.",
|
||||
"nfev": 5,
|
||||
"njev": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"depth": 3,
|
||||
"active_links": [
|
||||
"Board",
|
||||
"Base",
|
||||
"Arm1",
|
||||
"Ellbow"
|
||||
],
|
||||
"active_joint_vars": [
|
||||
"x",
|
||||
"y",
|
||||
"z"
|
||||
],
|
||||
"mean_error_m": 0.0066626047418244985,
|
||||
"rms_error_m": 0.007500866443446507,
|
||||
"worst_error_m": 0.012885780730839473,
|
||||
"num_markers_used": 7,
|
||||
"optimizer_info": {
|
||||
"cost": 0.0005983942414244817,
|
||||
"success": true,
|
||||
"status": 1,
|
||||
"message": "`gtol` termination condition is satisfied.",
|
||||
"nfev": 5,
|
||||
"njev": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"depth": 4,
|
||||
"active_links": [
|
||||
"Board",
|
||||
"Base",
|
||||
"Arm1",
|
||||
"Ellbow",
|
||||
"Arm2"
|
||||
],
|
||||
"active_joint_vars": [
|
||||
"x",
|
||||
"y",
|
||||
"z",
|
||||
"a"
|
||||
],
|
||||
"mean_error_m": 0.01000608974879495,
|
||||
"rms_error_m": 0.012284520280612297,
|
||||
"worst_error_m": 0.0278453161070784,
|
||||
"num_markers_used": 8,
|
||||
"optimizer_info": {
|
||||
"cost": 0.001600681668676478,
|
||||
"success": true,
|
||||
"status": 2,
|
||||
"message": "`ftol` termination condition is satisfied.",
|
||||
"nfev": 5,
|
||||
"njev": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"depth": 5,
|
||||
"active_links": [
|
||||
"Board",
|
||||
"Base",
|
||||
"Arm1",
|
||||
"Ellbow",
|
||||
"Arm2",
|
||||
"Hand"
|
||||
],
|
||||
"active_joint_vars": [
|
||||
"x",
|
||||
"y",
|
||||
"z",
|
||||
"a",
|
||||
"b"
|
||||
],
|
||||
"mean_error_m": 0.010093215903747043,
|
||||
"rms_error_m": 0.01231106970746885,
|
||||
"worst_error_m": 0.027801581705374914,
|
||||
"num_markers_used": 8,
|
||||
"optimizer_info": {
|
||||
"cost": 0.0015973675989890592,
|
||||
"success": true,
|
||||
"status": 2,
|
||||
"message": "`ftol` termination condition is satisfied.",
|
||||
"nfev": 4,
|
||||
"njev": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"depth": 6,
|
||||
"active_links": [
|
||||
"Board",
|
||||
"Base",
|
||||
"Arm1",
|
||||
"Ellbow",
|
||||
"Arm2",
|
||||
"Hand",
|
||||
"Palm"
|
||||
],
|
||||
"active_joint_vars": [
|
||||
"x",
|
||||
"y",
|
||||
"z",
|
||||
"a",
|
||||
"b",
|
||||
"c"
|
||||
],
|
||||
"mean_error_m": 0.01014248256819925,
|
||||
"rms_error_m": 0.012332226944012195,
|
||||
"worst_error_m": 0.027800128557559874,
|
||||
"num_markers_used": 8,
|
||||
"optimizer_info": {
|
||||
"cost": 0.0015965216948719777,
|
||||
"success": true,
|
||||
"status": 2,
|
||||
"message": "`ftol` termination condition is satisfied.",
|
||||
"nfev": 4,
|
||||
"njev": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"depth": 7,
|
||||
"active_links": [
|
||||
"Board",
|
||||
"Base",
|
||||
"Arm1",
|
||||
"Ellbow",
|
||||
"Arm2",
|
||||
"Hand",
|
||||
"Palm",
|
||||
"FingerA",
|
||||
"FingerB"
|
||||
],
|
||||
"active_joint_vars": [
|
||||
"x",
|
||||
"y",
|
||||
"z",
|
||||
"a",
|
||||
"b",
|
||||
"c",
|
||||
"e"
|
||||
],
|
||||
"mean_error_m": 0.010174015156011006,
|
||||
"rms_error_m": 0.01234803815522387,
|
||||
"worst_error_m": 0.027803375607782888,
|
||||
"num_markers_used": 8,
|
||||
"optimizer_info": {
|
||||
"cost": 0.001596169080421209,
|
||||
"success": true,
|
||||
"status": 2,
|
||||
"message": "`ftol` termination condition is satisfied.",
|
||||
"nfev": 4,
|
||||
"njev": 4
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"world_pose": {
|
||||
"root_translation_m": [
|
||||
-0.00010499551928665273,
|
||||
-0.004122751371632455,
|
||||
0.007868336770484426
|
||||
],
|
||||
"root_rotation_matrix": [
|
||||
[
|
||||
0.9998881512412199,
|
||||
0.00015742221075852172,
|
||||
0.01495527417545956
|
||||
],
|
||||
[
|
||||
-0.00034452146365532657,
|
||||
0.9999217021212259,
|
||||
0.012508834156371969
|
||||
],
|
||||
[
|
||||
-0.014952134040888227,
|
||||
-0.012512587471746087,
|
||||
0.9998099163552967
|
||||
]
|
||||
],
|
||||
"root_euler_xyz_deg": [
|
||||
-0.7170173207318126,
|
||||
0.8567260997949179,
|
||||
-0.019741833137479233
|
||||
]
|
||||
},
|
||||
"movements": {
|
||||
"x": {
|
||||
"value_m": 0.0036718418153270935,
|
||||
"value_mm": 3.6718418153270935,
|
||||
"joint_type": "linear",
|
||||
"link": "Base"
|
||||
},
|
||||
"y": {
|
||||
"value_rad": 0.153997576654123,
|
||||
"value_deg": 8.823411197523626,
|
||||
"joint_type": "revolute",
|
||||
"link": "Arm1"
|
||||
},
|
||||
"z": {
|
||||
"value_rad": 0.3681612038699359,
|
||||
"value_deg": 21.094083162202796,
|
||||
"joint_type": "revolute",
|
||||
"link": "Ellbow"
|
||||
},
|
||||
"a": {
|
||||
"value_rad": 0.16870892545216015,
|
||||
"value_deg": 9.666309394596011,
|
||||
"joint_type": "revolute",
|
||||
"link": "Arm2"
|
||||
},
|
||||
"b": {
|
||||
"value_rad": 0.03490658503988659,
|
||||
"value_deg": 2.0,
|
||||
"joint_type": "revolute",
|
||||
"link": "Hand"
|
||||
},
|
||||
"c": {
|
||||
"value_rad": 0.15707963267948966,
|
||||
"value_deg": 9.0,
|
||||
"joint_type": "revolute",
|
||||
"link": "Palm"
|
||||
},
|
||||
"e": {
|
||||
"value_m": 0.001,
|
||||
"value_mm": 1.0,
|
||||
"joint_type": "linear",
|
||||
"link": "FingerB"
|
||||
}
|
||||
},
|
||||
"links": [
|
||||
{
|
||||
"link": "Board",
|
||||
"parent": null,
|
||||
"position_m": [
|
||||
-0.00010499551928665273,
|
||||
-0.004122751371632455,
|
||||
0.007868336770484426
|
||||
],
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.9998881512412199,
|
||||
0.00015742221075852172,
|
||||
0.01495527417545956
|
||||
],
|
||||
[
|
||||
-0.00034452146365532657,
|
||||
0.9999217021212259,
|
||||
0.012508834156371969
|
||||
],
|
||||
[
|
||||
-0.014952134040888227,
|
||||
-0.012512587471746087,
|
||||
0.9998099163552967
|
||||
]
|
||||
],
|
||||
"euler_xyz_deg": [
|
||||
-0.7170173207318126,
|
||||
0.8567260997949179,
|
||||
-0.019741833137479233
|
||||
],
|
||||
"num_observed_markers": 4,
|
||||
"num_markers_total": 9
|
||||
},
|
||||
{
|
||||
"link": "Base",
|
||||
"parent": "Board",
|
||||
"position_m": [
|
||||
0.003805719991894641,
|
||||
-0.003923875053447029,
|
||||
0.02381039356116952
|
||||
],
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.9998881512412199,
|
||||
0.00015742221075852172,
|
||||
0.01495527417545956
|
||||
],
|
||||
[
|
||||
-0.00034452146365532657,
|
||||
0.9999217021212259,
|
||||
0.012508834156371969
|
||||
],
|
||||
[
|
||||
-0.014952134040888227,
|
||||
-0.012512587471746087,
|
||||
0.9998099163552967
|
||||
]
|
||||
],
|
||||
"euler_xyz_deg": [
|
||||
-0.7170173207318126,
|
||||
0.8567260997949179,
|
||||
-0.019741833137479233
|
||||
],
|
||||
"num_observed_markers": 0,
|
||||
"num_markers_total": 0
|
||||
},
|
||||
{
|
||||
"link": "Arm1",
|
||||
"parent": "Base",
|
||||
"position_m": [
|
||||
0.11448340556508642,
|
||||
0.10459266895168001,
|
||||
0.06580574560571159
|
||||
],
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.9998881512411962,
|
||||
-0.002138424520931235,
|
||||
0.014802437231208825
|
||||
],
|
||||
[
|
||||
-0.00034452146365531843,
|
||||
0.9861696920072487,
|
||||
0.16573840795434897
|
||||
],
|
||||
[
|
||||
-0.014952134040887874,
|
||||
-0.16572497007647763,
|
||||
0.9860586534181053
|
||||
]
|
||||
],
|
||||
"euler_xyz_deg": [
|
||||
-9.540428518246754,
|
||||
0.8567260997949179,
|
||||
-0.019741833137479233
|
||||
],
|
||||
"num_observed_markers": 3,
|
||||
"num_markers_total": 4
|
||||
},
|
||||
{
|
||||
"link": "Ellbow",
|
||||
"parent": "Arm1",
|
||||
"position_m": [
|
||||
0.11501801169531922,
|
||||
-0.14194975405013216,
|
||||
0.107236988124831
|
||||
],
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.9998881512410622,
|
||||
-0.007322534197157381,
|
||||
0.013040916392148211
|
||||
],
|
||||
[
|
||||
-0.00034452146365527225,
|
||||
0.8604378277497007,
|
||||
0.5095553217090676
|
||||
],
|
||||
[
|
||||
-0.01495213404088587,
|
||||
-0.5095028214544074,
|
||||
0.8603390660764603
|
||||
]
|
||||
],
|
||||
"euler_xyz_deg": [
|
||||
-30.634511680430315,
|
||||
0.8567260997949179,
|
||||
-0.019741833137479233
|
||||
],
|
||||
"num_observed_markers": 0,
|
||||
"num_markers_total": 4
|
||||
},
|
||||
{
|
||||
"link": "Arm2",
|
||||
"parent": "Ellbow",
|
||||
"position_m": [
|
||||
0.20500794530701483,
|
||||
-0.14198076098186113,
|
||||
0.10589129606115127
|
||||
],
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.9878818086254475,
|
||||
-0.007322534197157173,
|
||||
-0.15503519819536069
|
||||
],
|
||||
[
|
||||
0.08521967406056483,
|
||||
0.8604378277496763,
|
||||
0.5023786935470759
|
||||
],
|
||||
[
|
||||
0.12971946399655934,
|
||||
-0.509502821454393,
|
||||
0.8506349014648388
|
||||
]
|
||||
],
|
||||
"euler_xyz_deg": [
|
||||
-30.920246253571754,
|
||||
-7.453381520416379,
|
||||
4.930417324847138
|
||||
],
|
||||
"num_observed_markers": 1,
|
||||
"num_markers_total": 8
|
||||
},
|
||||
{
|
||||
"link": "Hand",
|
||||
"parent": "Arm2",
|
||||
"position_m": [
|
||||
0.20683857885630413,
|
||||
-0.3570902179192802,
|
||||
0.23326700142474951
|
||||
],
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.9878818086254463,
|
||||
-0.012728723895357681,
|
||||
-0.15468520218346354
|
||||
],
|
||||
[
|
||||
0.08521967406056473,
|
||||
0.8774464358320986,
|
||||
0.4720438108885581
|
||||
],
|
||||
[
|
||||
0.12971946399655918,
|
||||
-0.4795057161631937,
|
||||
0.867898109703497
|
||||
]
|
||||
],
|
||||
"euler_xyz_deg": [
|
||||
-28.92024625357375,
|
||||
-7.453381520416377,
|
||||
4.930417324847139
|
||||
],
|
||||
"num_observed_markers": 0,
|
||||
"num_markers_total": 0
|
||||
},
|
||||
{
|
||||
"link": "Palm",
|
||||
"parent": "Hand",
|
||||
"position_m": [
|
||||
0.20683857885630413,
|
||||
-0.3570902179192802,
|
||||
0.23326700142474951
|
||||
],
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.9515212474122047,
|
||||
-0.012728723895357367,
|
||||
-0.3073195329143514
|
||||
],
|
||||
[
|
||||
0.15801439949076734,
|
||||
0.8774464358320769,
|
||||
0.45290087414217106
|
||||
],
|
||||
[
|
||||
0.2638915786384106,
|
||||
-0.4795057161631819,
|
||||
0.8369202488231169
|
||||
]
|
||||
],
|
||||
"euler_xyz_deg": [
|
||||
-29.810153131835676,
|
||||
-15.301100626605999,
|
||||
9.428779059340897
|
||||
],
|
||||
"num_observed_markers": 0,
|
||||
"num_markers_total": 0
|
||||
},
|
||||
{
|
||||
"link": "FingerA",
|
||||
"parent": "Palm",
|
||||
"position_m": [
|
||||
0.2120416904297017,
|
||||
-0.38701077117594923,
|
||||
0.2513691593836527
|
||||
],
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.9515212474122047,
|
||||
-0.012728723895357367,
|
||||
-0.3073195329143514
|
||||
],
|
||||
[
|
||||
0.15801439949076734,
|
||||
0.8774464358320769,
|
||||
0.45290087414217106
|
||||
],
|
||||
[
|
||||
0.2638915786384106,
|
||||
-0.4795057161631819,
|
||||
0.8369202488231169
|
||||
]
|
||||
],
|
||||
"euler_xyz_deg": [
|
||||
-29.810153131835676,
|
||||
-15.301100626605999,
|
||||
9.428779059340897
|
||||
],
|
||||
"num_observed_markers": 0,
|
||||
"num_markers_total": 0
|
||||
},
|
||||
{
|
||||
"link": "FingerB",
|
||||
"parent": "Palm",
|
||||
"position_m": [
|
||||
0.20252647795558157,
|
||||
-0.38859091517085653,
|
||||
0.24873024359726909
|
||||
],
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.9515212474122047,
|
||||
-0.012728723895357367,
|
||||
-0.3073195329143514
|
||||
],
|
||||
[
|
||||
0.15801439949076734,
|
||||
0.8774464358320769,
|
||||
0.45290087414217106
|
||||
],
|
||||
[
|
||||
0.2638915786384106,
|
||||
-0.4795057161631819,
|
||||
0.8369202488231169
|
||||
]
|
||||
],
|
||||
"euler_xyz_deg": [
|
||||
-29.810153131835676,
|
||||
-15.301100626605999,
|
||||
9.428779059340897
|
||||
],
|
||||
"num_observed_markers": 0,
|
||||
"num_markers_total": 0
|
||||
}
|
||||
],
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 122,
|
||||
"link": "Arm2",
|
||||
"observed_position_m": [
|
||||
0.16408414603046484,
|
||||
-0.2598816877789887,
|
||||
0.17784668754227578
|
||||
],
|
||||
"predicted_position_m": [
|
||||
0.17125220583520576,
|
||||
-0.24133248628194467,
|
||||
0.15841543082416373
|
||||
],
|
||||
"error_m": [
|
||||
0.007168059804740917,
|
||||
0.018549201497044004,
|
||||
-0.01943125671811205
|
||||
],
|
||||
"error_norm_m": 0.027803375607782888,
|
||||
"error_norm_mm": 27.80337560778289,
|
||||
"marker_size": null
|
||||
},
|
||||
{
|
||||
"marker_id": 198,
|
||||
"link": "Arm1",
|
||||
"observed_position_m": [
|
||||
0.11704671868929717,
|
||||
-0.05006352997427808,
|
||||
0.13545744846179997
|
||||
],
|
||||
"predicted_position_m": [
|
||||
0.11534363879152772,
|
||||
-0.047393637491077556,
|
||||
0.1268337936875817
|
||||
],
|
||||
"error_m": [
|
||||
-0.0017030798977694522,
|
||||
0.0026698924832005214,
|
||||
-0.008623654774218281
|
||||
],
|
||||
"error_norm_m": 0.009186742005462807,
|
||||
"error_norm_mm": 9.186742005462806,
|
||||
"marker_size": 25
|
||||
},
|
||||
{
|
||||
"marker_id": 210,
|
||||
"link": "Board",
|
||||
"observed_position_m": [
|
||||
0.019883267288547467,
|
||||
-0.019568887683375974,
|
||||
-6.02159742251129e-05
|
||||
],
|
||||
"predicted_position_m": [
|
||||
0.019894105643575213,
|
||||
-0.024124323193083167,
|
||||
0.008119488814008173
|
||||
],
|
||||
"error_m": [
|
||||
1.083835502774591e-05,
|
||||
-0.004555435509707193,
|
||||
0.008179704788233285
|
||||
],
|
||||
"error_norm_m": 0.0093626748622222,
|
||||
"error_norm_mm": 9.3626748622222,
|
||||
"marker_size": null
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"link": "Board",
|
||||
"observed_position_m": [
|
||||
0.24989200282636703,
|
||||
-0.009772675866705374,
|
||||
1.0334501290569615e-05
|
||||
],
|
||||
"predicted_position_m": [
|
||||
0.24986995465116338,
|
||||
-0.014204346108511633,
|
||||
0.004555372109886419
|
||||
],
|
||||
"error_m": [
|
||||
-2.2048175203653875e-05,
|
||||
-0.0044316702418062594,
|
||||
0.004545037608595849
|
||||
],
|
||||
"error_norm_m": 0.006348035453405379,
|
||||
"error_norm_mm": 6.348035453405379,
|
||||
"marker_size": null
|
||||
},
|
||||
{
|
||||
"marker_id": 214,
|
||||
"link": "Board",
|
||||
"observed_position_m": [
|
||||
0.34989199483349664,
|
||||
-0.009735514620349328,
|
||||
1.4271508683918328e-05
|
||||
],
|
||||
"predicted_position_m": [
|
||||
0.3498587697752854,
|
||||
-0.014238798254877167,
|
||||
0.003060158705797595
|
||||
],
|
||||
"error_m": [
|
||||
-3.322505821123922e-05,
|
||||
-0.0045032836345278385,
|
||||
0.0030458871971136767
|
||||
],
|
||||
"error_norm_m": 0.005436735805153714,
|
||||
"error_norm_mm": 5.436735805153714,
|
||||
"marker_size": null
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"link": "Board",
|
||||
"observed_position_m": [
|
||||
0.24981646807454147,
|
||||
-0.08977263518943693,
|
||||
-1.508171313798581e-05
|
||||
],
|
||||
"predicted_position_m": [
|
||||
0.2498573608743027,
|
||||
-0.09419808227820971,
|
||||
0.005556379107626107
|
||||
],
|
||||
"error_m": [
|
||||
4.089279976121629e-05,
|
||||
-0.00442544708877278,
|
||||
0.005571460820764092
|
||||
],
|
||||
"error_norm_m": 0.007115295484651995,
|
||||
"error_norm_mm": 7.115295484651996,
|
||||
"marker_size": null
|
||||
},
|
||||
{
|
||||
"marker_id": 229,
|
||||
"link": "Arm1",
|
||||
"observed_position_m": [
|
||||
0.11773154751353263,
|
||||
-0.13967941405892637,
|
||||
0.1437326114716167
|
||||
],
|
||||
"predicted_position_m": [
|
||||
0.11553609699841152,
|
||||
-0.13614890977172994,
|
||||
0.14174904099446467
|
||||
],
|
||||
"error_m": [
|
||||
-0.0021954505151211,
|
||||
0.003530504287196423,
|
||||
-0.00198357047715203
|
||||
],
|
||||
"error_norm_m": 0.004606410242703852,
|
||||
"error_norm_mm": 4.606410242703852,
|
||||
"marker_size": 25
|
||||
},
|
||||
{
|
||||
"marker_id": 243,
|
||||
"link": "Arm1",
|
||||
"observed_position_m": [
|
||||
0.11835862963107012,
|
||||
-0.16963843269272738,
|
||||
0.10433506872776273
|
||||
],
|
||||
"predicted_position_m": [
|
||||
0.11509285655355182,
|
||||
-0.17646569327038591,
|
||||
0.11303736207750772
|
||||
],
|
||||
"error_m": [
|
||||
-0.003265773077518297,
|
||||
-0.006827260577658534,
|
||||
0.008702293349744997
|
||||
],
|
||||
"error_norm_m": 0.011532851786705215,
|
||||
"error_norm_mm": 11.532851786705216,
|
||||
"marker_size": 25
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.3 MiB |
@@ -1,322 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"created_utc": "2026-05-29T17:28:00Z",
|
||||
"source": {
|
||||
"detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\pipeline\\render_1a_aruco_detection.json",
|
||||
"robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\robot.json"
|
||||
},
|
||||
"camera": {
|
||||
"camera_id": "cam1",
|
||||
"camera_matrix": [
|
||||
[
|
||||
1777.77783203125,
|
||||
0.0,
|
||||
640.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1500.0,
|
||||
360.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"distortion_coefficients": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"estimation": {
|
||||
"method": "single_camera_marker_center_lm",
|
||||
"description": "Rigid init from per-marker pose estimates, followed by LM on normalized marker-center reprojection residuals.",
|
||||
"marker_size_m": 0.025,
|
||||
"num_used_markers": 8,
|
||||
"used_marker_ids": [
|
||||
210,
|
||||
215,
|
||||
211,
|
||||
208,
|
||||
217,
|
||||
206,
|
||||
205,
|
||||
207
|
||||
],
|
||||
"history": {
|
||||
"iters": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6
|
||||
],
|
||||
"rms": [
|
||||
0.012238825888602721,
|
||||
0.0013485501296120386,
|
||||
0.0010720241126721643,
|
||||
0.0010700649720543842,
|
||||
0.0010700240850162058,
|
||||
0.0010700235476777484,
|
||||
0.0010700235426684534
|
||||
],
|
||||
"lambda": [
|
||||
0.001,
|
||||
0.0005,
|
||||
0.00025,
|
||||
0.000125,
|
||||
6.25e-05,
|
||||
3.125e-05,
|
||||
1.5625e-05
|
||||
]
|
||||
},
|
||||
"residual_rms_px": 2.6178729686079047,
|
||||
"residual_median_px": 2.1333107363119628,
|
||||
"residual_max_px": 4.82379629519028,
|
||||
"sigma2_normalized": 1.8319206108523286e-06
|
||||
},
|
||||
"camera_pose": {
|
||||
"world_to_camera": {
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.6343430876731873,
|
||||
-0.7725288271903992,
|
||||
0.028426652774214745
|
||||
],
|
||||
[
|
||||
-0.5990912914276123,
|
||||
-0.5145038366317749,
|
||||
-0.6134944558143616
|
||||
],
|
||||
[
|
||||
0.4885677695274353,
|
||||
0.37213581800460815,
|
||||
-0.7891872525215149
|
||||
]
|
||||
],
|
||||
"translation_m": [
|
||||
-0.28031569719314575,
|
||||
0.19169889390468597,
|
||||
0.9508554935455322
|
||||
],
|
||||
"rvec_rad": [
|
||||
2.289241976117495,
|
||||
-1.068731724683893,
|
||||
0.4028289864991492
|
||||
]
|
||||
},
|
||||
"camera_in_world": {
|
||||
"position_m": [
|
||||
-0.17189589142799377,
|
||||
-0.4717695116996765,
|
||||
0.8759776949882507
|
||||
],
|
||||
"position_mm": [
|
||||
-171.89588928222656,
|
||||
-471.7695007324219,
|
||||
875.9777221679688
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 154.75408935546875,
|
||||
"pitch": -29.24648666381836,
|
||||
"yaw": -43.362918853759766
|
||||
}
|
||||
},
|
||||
"uncertainty": {
|
||||
"pose_covariance_6x6": [
|
||||
[
|
||||
0.0003822156649420553,
|
||||
-1.9575638833486346e-05,
|
||||
0.0002401729876123921,
|
||||
-3.455538550581847e-07,
|
||||
-8.434305689855638e-06,
|
||||
1.3315803977557116e-06
|
||||
],
|
||||
[
|
||||
-1.9575638833486905e-05,
|
||||
9.100791133973781e-06,
|
||||
-2.6448385490934555e-05,
|
||||
-2.887449407782355e-06,
|
||||
1.4831323494675526e-07,
|
||||
8.401000542324975e-06
|
||||
],
|
||||
[
|
||||
0.00024017298761239858,
|
||||
-2.644838549093476e-05,
|
||||
0.00034334665759104825,
|
||||
2.1171203886755963e-05,
|
||||
-2.499898798243516e-05,
|
||||
-0.00011374771539950262
|
||||
],
|
||||
[
|
||||
-3.455538550575027e-07,
|
||||
-2.8874494077824097e-06,
|
||||
2.1171203886756332e-05,
|
||||
2.9241707740779787e-06,
|
||||
-1.8547372175826365e-06,
|
||||
-1.2779915037331006e-05
|
||||
],
|
||||
[
|
||||
-8.434305689856253e-06,
|
||||
1.4831323494680423e-07,
|
||||
-2.4998987982435484e-05,
|
||||
-1.854737217582637e-06,
|
||||
2.922658487863772e-06,
|
||||
1.1657487325670498e-05
|
||||
],
|
||||
[
|
||||
1.331580397752139e-06,
|
||||
8.401000542325296e-06,
|
||||
-0.00011374771539950486,
|
||||
-1.2779915037331031e-05,
|
||||
1.1657487325670554e-05,
|
||||
7.504600233719707e-05
|
||||
]
|
||||
],
|
||||
"parameter_std": {
|
||||
"rvec_std_deg": [
|
||||
1.120151780762652,
|
||||
0.17284714323569167,
|
||||
1.06166877499303
|
||||
],
|
||||
"tvec_std_m": [
|
||||
0.00171002069404963,
|
||||
0.001709578453263778,
|
||||
0.008662909576879875
|
||||
]
|
||||
},
|
||||
"camera_center_std_m": [
|
||||
0.006227818662745683,
|
||||
0.020598334020338196,
|
||||
0.011112792063136126
|
||||
],
|
||||
"camera_center_std_mm": [
|
||||
6.227818662745683,
|
||||
20.598334020338196,
|
||||
11.112792063136126
|
||||
],
|
||||
"orientation_std_deg": {
|
||||
"roll": 1.3799127416085473,
|
||||
"pitch": 0.5042660958147511,
|
||||
"yaw": 0.1500547605224418
|
||||
}
|
||||
}
|
||||
},
|
||||
"observations": {
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 210,
|
||||
"observed_center_px": [
|
||||
168.5,
|
||||
660.5
|
||||
],
|
||||
"projected_center_px": [
|
||||
169.5629425048828,
|
||||
658.793701171875
|
||||
],
|
||||
"reprojection_error_px": 2.01029909703688,
|
||||
"confidence": 0.5673043275049208
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"observed_center_px": [
|
||||
548.5,
|
||||
487.5
|
||||
],
|
||||
"projected_center_px": [
|
||||
550.717041015625,
|
||||
487.080810546875
|
||||
],
|
||||
"reprojection_error_px": 2.2563223755870454,
|
||||
"confidence": 0.7952557920267838
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"observed_center_px": [
|
||||
455.0,
|
||||
424.25
|
||||
],
|
||||
"projected_center_px": [
|
||||
450.42816162109375,
|
||||
425.7886047363281
|
||||
],
|
||||
"reprojection_error_px": 4.82379629519028,
|
||||
"confidence": 0.6412317666518965
|
||||
},
|
||||
{
|
||||
"marker_id": 208,
|
||||
"observed_center_px": [
|
||||
657.25,
|
||||
397.75
|
||||
],
|
||||
"projected_center_px": [
|
||||
658.3648071289062,
|
||||
398.7890625
|
||||
],
|
||||
"reprojection_error_px": 1.5239572873169531,
|
||||
"confidence": 0.6280424706698967
|
||||
},
|
||||
{
|
||||
"marker_id": 217,
|
||||
"observed_center_px": [
|
||||
928.5,
|
||||
175.25
|
||||
],
|
||||
"projected_center_px": [
|
||||
930.192626953125,
|
||||
175.83822631835938
|
||||
],
|
||||
"reprojection_error_px": 1.7919252785916733,
|
||||
"confidence": 0.35596573288593486
|
||||
},
|
||||
{
|
||||
"marker_id": 206,
|
||||
"observed_center_px": [
|
||||
839.25,
|
||||
131.25
|
||||
],
|
||||
"projected_center_px": [
|
||||
836.46923828125,
|
||||
131.34689331054688
|
||||
],
|
||||
"reprojection_error_px": 2.7824492897614843,
|
||||
"confidence": 0.33820423087105295
|
||||
},
|
||||
{
|
||||
"marker_id": 205,
|
||||
"observed_center_px": [
|
||||
1004.5,
|
||||
113.0
|
||||
],
|
||||
"projected_center_px": [
|
||||
1007.0062255859375,
|
||||
112.83639526367188
|
||||
],
|
||||
"reprojection_error_px": 2.5115599131529316,
|
||||
"confidence": 0.28724459014346065
|
||||
},
|
||||
{
|
||||
"marker_id": 207,
|
||||
"observed_center_px": [
|
||||
916.5,
|
||||
72.25
|
||||
],
|
||||
"projected_center_px": [
|
||||
915.0281982421875,
|
||||
71.42831420898438
|
||||
],
|
||||
"reprojection_error_px": 1.6856357712913363,
|
||||
"confidence": 0.27228561618555186
|
||||
}
|
||||
]
|
||||
},
|
||||
"qa": {
|
||||
"sanity_notes": []
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 1.1 MiB |
@@ -1,263 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"created_utc": "2026-05-29T17:28:01Z",
|
||||
"source": {
|
||||
"detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\pipeline\\render_1d_aruco_detection.json",
|
||||
"robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\robot.json"
|
||||
},
|
||||
"camera": {
|
||||
"camera_id": "cam3",
|
||||
"camera_matrix": [
|
||||
[
|
||||
1777.77783203125,
|
||||
0.0,
|
||||
640.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1500.0,
|
||||
360.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"distortion_coefficients": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"estimation": {
|
||||
"method": "single_camera_marker_center_lm",
|
||||
"description": "Rigid init from per-marker pose estimates, followed by LM on normalized marker-center reprojection residuals.",
|
||||
"marker_size_m": 0.025,
|
||||
"num_used_markers": 4,
|
||||
"used_marker_ids": [
|
||||
215,
|
||||
211,
|
||||
217,
|
||||
214
|
||||
],
|
||||
"history": {
|
||||
"iters": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5
|
||||
],
|
||||
"rms": [
|
||||
0.005359920749647414,
|
||||
0.0003596216482234802,
|
||||
8.587722609457216e-05,
|
||||
8.267163975654815e-05,
|
||||
8.265774784671822e-05,
|
||||
8.265772386013678e-05
|
||||
],
|
||||
"lambda": [
|
||||
0.001,
|
||||
0.0005,
|
||||
0.00025,
|
||||
0.000125,
|
||||
6.25e-05,
|
||||
3.125e-05
|
||||
]
|
||||
},
|
||||
"residual_rms_px": 0.20616096991738692,
|
||||
"residual_median_px": 0.1548259204477796,
|
||||
"residual_max_px": 0.334368679842534,
|
||||
"sigma2_normalized": 2.732919724610169e-08
|
||||
},
|
||||
"camera_pose": {
|
||||
"world_to_camera": {
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.8698499202728271,
|
||||
-0.4933161735534668,
|
||||
-0.0005609216168522835
|
||||
],
|
||||
[
|
||||
-0.014420680701732635,
|
||||
-0.02429097332060337,
|
||||
-0.999600887298584
|
||||
],
|
||||
[
|
||||
0.4931056499481201,
|
||||
0.8695108294487,
|
||||
-0.028243456035852432
|
||||
]
|
||||
],
|
||||
"translation_m": [
|
||||
-0.27209416031837463,
|
||||
0.21111075580120087,
|
||||
0.8869640231132507
|
||||
],
|
||||
"rvec_rad": [
|
||||
1.560002049077422,
|
||||
-0.41202505801423905,
|
||||
0.39969676868512233
|
||||
]
|
||||
},
|
||||
"camera_in_world": {
|
||||
"position_m": [
|
||||
-0.1976415067911148,
|
||||
-0.9003251791000366,
|
||||
0.23592481017112732
|
||||
],
|
||||
"position_mm": [
|
||||
-197.64151000976562,
|
||||
-900.3251953125,
|
||||
235.9248046875
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 91.86042785644531,
|
||||
"pitch": -29.544910430908203,
|
||||
"yaw": -0.94978266954422
|
||||
}
|
||||
},
|
||||
"uncertainty": {
|
||||
"pose_covariance_6x6": [
|
||||
[
|
||||
5.572124225215572e-06,
|
||||
1.0238412973605017e-06,
|
||||
-2.623828452852646e-07,
|
||||
-1.3216478710623785e-07,
|
||||
2.464552358706632e-07,
|
||||
1.376118360825126e-06
|
||||
],
|
||||
[
|
||||
1.0238412973606372e-06,
|
||||
1.7185895100151877e-06,
|
||||
-2.1941259661160463e-06,
|
||||
-2.865276101919663e-07,
|
||||
4.866971629745338e-07,
|
||||
2.6156272415413096e-06
|
||||
],
|
||||
[
|
||||
-2.6238284528551765e-07,
|
||||
-2.1941259661160654e-06,
|
||||
4.3008457236225806e-06,
|
||||
4.5954457611754067e-07,
|
||||
-1.039277359784403e-06,
|
||||
-4.284089217370219e-06
|
||||
],
|
||||
[
|
||||
-1.321647871062647e-07,
|
||||
-2.8652761019196723e-07,
|
||||
4.5954457611753834e-07,
|
||||
6.213296390305284e-08,
|
||||
-1.0417950265091419e-07,
|
||||
-4.7537517694908277e-07
|
||||
],
|
||||
[
|
||||
2.4645523587072205e-07,
|
||||
4.86697162974532e-07,
|
||||
-1.039277359784392e-06,
|
||||
-1.0417950265091408e-07,
|
||||
2.937313750271454e-07,
|
||||
1.119130901469573e-06
|
||||
],
|
||||
[
|
||||
1.3761183608253812e-06,
|
||||
2.615627241541313e-06,
|
||||
-4.28408921737019e-06,
|
||||
-4.753751769490844e-07,
|
||||
1.1191309014695779e-06,
|
||||
5.056766279398004e-06
|
||||
]
|
||||
],
|
||||
"parameter_std": {
|
||||
"rvec_std_deg": [
|
||||
0.13524867758906906,
|
||||
0.07511189357579418,
|
||||
0.11882274046633103
|
||||
],
|
||||
"tvec_std_m": [
|
||||
0.0002492648469059623,
|
||||
0.0005419699023258998,
|
||||
0.0022487254788875416
|
||||
]
|
||||
},
|
||||
"camera_center_std_m": [
|
||||
0.0012502905713881077,
|
||||
0.002327873286067422,
|
||||
0.002258043249396123
|
||||
],
|
||||
"camera_center_std_mm": [
|
||||
1.2502905713881076,
|
||||
2.327873286067422,
|
||||
2.258043249396123
|
||||
],
|
||||
"orientation_std_deg": {
|
||||
"roll": 0.1361099998273254,
|
||||
"pitch": 0.12490237671576365,
|
||||
"yaw": 0.050717858739607595
|
||||
}
|
||||
}
|
||||
},
|
||||
"observations": {
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 215,
|
||||
"observed_center_px": [
|
||||
620.5,
|
||||
697.0
|
||||
],
|
||||
"projected_center_px": [
|
||||
620.4794311523438,
|
||||
697.0128173828125
|
||||
],
|
||||
"reprojection_error_px": 0.024235568820809458,
|
||||
"confidence": 0.04442132658717482
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"observed_center_px": [
|
||||
552.0,
|
||||
670.75
|
||||
],
|
||||
"projected_center_px": [
|
||||
551.7823486328125,
|
||||
670.6954345703125
|
||||
],
|
||||
"reprojection_error_px": 0.22438695094761962,
|
||||
"confidence": 0.08943849994625828
|
||||
},
|
||||
{
|
||||
"marker_id": 217,
|
||||
"observed_center_px": [
|
||||
1171.75,
|
||||
630.5
|
||||
],
|
||||
"projected_center_px": [
|
||||
1171.666259765625,
|
||||
630.4839477539062
|
||||
],
|
||||
"reprojection_error_px": 0.08526488994793956,
|
||||
"confidence": 0.1603274772135223
|
||||
},
|
||||
{
|
||||
"marker_id": 214,
|
||||
"observed_center_px": [
|
||||
702.75,
|
||||
654.0
|
||||
],
|
||||
"projected_center_px": [
|
||||
703.079345703125,
|
||||
654.0577392578125
|
||||
],
|
||||
"reprojection_error_px": 0.334368679842534,
|
||||
"confidence": 0.1074639893342158
|
||||
}
|
||||
]
|
||||
},
|
||||
"qa": {
|
||||
"sanity_notes": []
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 1.2 MiB |
@@ -1,269 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"created_utc": "2026-05-29T17:30:28Z",
|
||||
"source": {
|
||||
"detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\pipeline\\render_3a_aruco_detection.json",
|
||||
"robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\robot.json"
|
||||
},
|
||||
"camera": {
|
||||
"camera_id": "cam3",
|
||||
"camera_matrix": [
|
||||
[
|
||||
1777.77783203125,
|
||||
0.0,
|
||||
640.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1500.0,
|
||||
360.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"distortion_coefficients": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"estimation": {
|
||||
"method": "single_camera_marker_center_lm",
|
||||
"description": "Rigid init from per-marker pose estimates, followed by LM on normalized marker-center reprojection residuals.",
|
||||
"marker_size_m": 0.025,
|
||||
"num_used_markers": 4,
|
||||
"used_marker_ids": [
|
||||
210,
|
||||
205,
|
||||
206,
|
||||
207
|
||||
],
|
||||
"history": {
|
||||
"iters": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7
|
||||
],
|
||||
"rms": [
|
||||
0.013277718382545302,
|
||||
0.0007609616355193204,
|
||||
8.749646663679635e-05,
|
||||
4.47706418004794e-05,
|
||||
4.174347547390919e-05,
|
||||
4.162024607264234e-05,
|
||||
4.161840648707478e-05,
|
||||
4.16183986833156e-05
|
||||
],
|
||||
"lambda": [
|
||||
0.001,
|
||||
0.0005,
|
||||
0.00025,
|
||||
0.000125,
|
||||
6.25e-05,
|
||||
3.125e-05,
|
||||
1.5625e-05,
|
||||
7.8125e-06
|
||||
]
|
||||
},
|
||||
"residual_rms_px": 0.10430687360172344,
|
||||
"residual_median_px": 0.07433889289506992,
|
||||
"residual_max_px": 0.1640622076531485,
|
||||
"sigma2_normalized": 6.928364432840307e-09
|
||||
},
|
||||
"camera_pose": {
|
||||
"world_to_camera": {
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.7620592713356018,
|
||||
-0.6474434733390808,
|
||||
0.009086829610168934
|
||||
],
|
||||
[
|
||||
-0.2751538157463074,
|
||||
-0.3365034759044647,
|
||||
-0.9005863666534424
|
||||
],
|
||||
[
|
||||
0.586136519908905,
|
||||
0.6837999224662781,
|
||||
-0.4345821440219879
|
||||
]
|
||||
],
|
||||
"translation_m": [
|
||||
-0.27347445487976074,
|
||||
0.1921861469745636,
|
||||
0.922555685043335
|
||||
],
|
||||
"rvec_rad": [
|
||||
1.9264447207058966,
|
||||
-0.7016308952348262,
|
||||
0.4526645615419089
|
||||
]
|
||||
},
|
||||
"camera_in_world": {
|
||||
"position_m": [
|
||||
-0.2794590890407562,
|
||||
-0.743231475353241,
|
||||
0.5764914751052856
|
||||
],
|
||||
"position_mm": [
|
||||
-279.4590759277344,
|
||||
-743.2314453125,
|
||||
576.491455078125
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 122.43758392333984,
|
||||
"pitch": -35.88331985473633,
|
||||
"yaw": -19.852933883666992
|
||||
}
|
||||
},
|
||||
"uncertainty": {
|
||||
"pose_covariance_6x6": [
|
||||
[
|
||||
3.994733283769376e-06,
|
||||
1.1155413505842761e-06,
|
||||
-1.1189873341773177e-06,
|
||||
-5.765674568291733e-07,
|
||||
4.13621515183102e-07,
|
||||
2.218896511763385e-06
|
||||
],
|
||||
[
|
||||
1.1155413505843926e-06,
|
||||
8.887333788347529e-07,
|
||||
-2.337344290764031e-06,
|
||||
-5.830951422961517e-07,
|
||||
4.5171173864670057e-07,
|
||||
2.245361353962327e-06
|
||||
],
|
||||
[
|
||||
-1.1189873341777406e-06,
|
||||
-2.33734429076412e-06,
|
||||
7.81411446076644e-06,
|
||||
1.7025470729450462e-06,
|
||||
-1.3919010913021312e-06,
|
||||
-6.611757311752694e-06
|
||||
],
|
||||
[
|
||||
-5.765674568292605e-07,
|
||||
-5.830951422961595e-07,
|
||||
1.7025470729450078e-06,
|
||||
4.0343769578632003e-07,
|
||||
-3.2014652246215944e-07,
|
||||
-1.551799855987555e-06
|
||||
],
|
||||
[
|
||||
4.1362151518317385e-07,
|
||||
4.517117386467093e-07,
|
||||
-1.3919010913021083e-06,
|
||||
-3.201465224621612e-07,
|
||||
2.6479725503078397e-07,
|
||||
1.2495372714796657e-06
|
||||
],
|
||||
[
|
||||
2.2188965117637215e-06,
|
||||
2.245361353962358e-06,
|
||||
-6.61175731175255e-06,
|
||||
-1.5517998559875556e-06,
|
||||
1.2495372714796598e-06,
|
||||
6.053224659085346e-06
|
||||
]
|
||||
],
|
||||
"parameter_std": {
|
||||
"rvec_std_deg": [
|
||||
0.11451609402420855,
|
||||
0.05401425348466939,
|
||||
0.16016311863697794
|
||||
],
|
||||
"tvec_std_m": [
|
||||
0.0006351674549174572,
|
||||
0.0005145845460473759,
|
||||
0.0024603301931011914
|
||||
]
|
||||
},
|
||||
"camera_center_std_m": [
|
||||
0.0017296313653151708,
|
||||
0.0027590353584458853,
|
||||
0.0023603543530536296
|
||||
],
|
||||
"camera_center_std_mm": [
|
||||
1.729631365315171,
|
||||
2.7590353584458853,
|
||||
2.3603543530536295
|
||||
],
|
||||
"orientation_std_deg": {
|
||||
"roll": 0.1051783179305808,
|
||||
"pitch": 0.13780027424955138,
|
||||
"yaw": 0.02230052560885805
|
||||
}
|
||||
}
|
||||
},
|
||||
"observations": {
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 210,
|
||||
"observed_center_px": [
|
||||
166.25,
|
||||
674.75
|
||||
],
|
||||
"projected_center_px": [
|
||||
166.26881408691406,
|
||||
674.7455444335938
|
||||
],
|
||||
"reprojection_error_px": 0.019334475384928378,
|
||||
"confidence": 0.23718801109435655
|
||||
},
|
||||
{
|
||||
"marker_id": 205,
|
||||
"observed_center_px": [
|
||||
1127.0,
|
||||
378.25
|
||||
],
|
||||
"projected_center_px": [
|
||||
1127.124267578125,
|
||||
378.265380859375
|
||||
],
|
||||
"reprojection_error_px": 0.12521582091799144,
|
||||
"confidence": 0.19676029488014599
|
||||
},
|
||||
{
|
||||
"marker_id": 206,
|
||||
"observed_center_px": [
|
||||
953.25,
|
||||
379.0
|
||||
],
|
||||
"projected_center_px": [
|
||||
953.086181640625,
|
||||
379.0089416503906
|
||||
],
|
||||
"reprojection_error_px": 0.1640622076531485,
|
||||
"confidence": 0.23511362818048806
|
||||
},
|
||||
{
|
||||
"marker_id": 207,
|
||||
"observed_center_px": [
|
||||
1039.5,
|
||||
347.75
|
||||
],
|
||||
"projected_center_px": [
|
||||
1039.5140380859375,
|
||||
347.731201171875
|
||||
],
|
||||
"reprojection_error_px": 0.023461964872148418,
|
||||
"confidence": 0.18076863774153512
|
||||
}
|
||||
]
|
||||
},
|
||||
"qa": {
|
||||
"sanity_notes": []
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.2 MiB |
@@ -1,277 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"created_utc": "2026-05-29T17:30:29Z",
|
||||
"source": {
|
||||
"detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\pipeline\\render_3b_aruco_detection.json",
|
||||
"robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\robot.json"
|
||||
},
|
||||
"camera": {
|
||||
"camera_id": "cam2",
|
||||
"camera_matrix": [
|
||||
[
|
||||
1777.77783203125,
|
||||
0.0,
|
||||
640.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1500.0,
|
||||
360.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"distortion_coefficients": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"estimation": {
|
||||
"method": "single_camera_marker_center_lm",
|
||||
"description": "Rigid init from per-marker pose estimates, followed by LM on normalized marker-center reprojection residuals.",
|
||||
"marker_size_m": 0.025,
|
||||
"num_used_markers": 5,
|
||||
"used_marker_ids": [
|
||||
208,
|
||||
215,
|
||||
214,
|
||||
211,
|
||||
210
|
||||
],
|
||||
"history": {
|
||||
"iters": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5
|
||||
],
|
||||
"rms": [
|
||||
0.009974527619016302,
|
||||
0.0029778386918414713,
|
||||
0.00037403829040605563,
|
||||
0.00034035665812758465,
|
||||
0.0003403161910701215,
|
||||
0.00034031616508171713
|
||||
],
|
||||
"lambda": [
|
||||
0.001,
|
||||
0.0005,
|
||||
0.00025,
|
||||
0.000125,
|
||||
6.25e-05,
|
||||
3.125e-05
|
||||
]
|
||||
},
|
||||
"residual_rms_px": 0.8476327773109579,
|
||||
"residual_median_px": 0.648112390780865,
|
||||
"residual_max_px": 1.3545102652489567,
|
||||
"sigma2_normalized": 2.895377305315825e-07
|
||||
},
|
||||
"camera_pose": {
|
||||
"world_to_camera": {
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.9861742854118347,
|
||||
0.16566795110702515,
|
||||
0.0037960850168019533
|
||||
],
|
||||
[
|
||||
0.10729856789112091,
|
||||
-0.6209254860877991,
|
||||
-0.7764911651611328
|
||||
],
|
||||
[
|
||||
-0.12628261744976044,
|
||||
0.7661629319190979,
|
||||
-0.6301167011260986
|
||||
]
|
||||
],
|
||||
"translation_m": [
|
||||
-0.17639264464378357,
|
||||
0.04974045231938362,
|
||||
0.8856023550033569
|
||||
],
|
||||
"rvec_rad": [
|
||||
2.245916069073475,
|
||||
0.1893787147920251,
|
||||
-0.08497870832755577
|
||||
]
|
||||
},
|
||||
"camera_in_world": {
|
||||
"position_m": [
|
||||
0.28045299649238586,
|
||||
-0.6184079647064209,
|
||||
0.5973254442214966
|
||||
],
|
||||
"position_mm": [
|
||||
280.4530029296875,
|
||||
-618.407958984375,
|
||||
597.325439453125
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 129.43496704101562,
|
||||
"pitch": 7.254830837249756,
|
||||
"yaw": 6.209517478942871
|
||||
}
|
||||
},
|
||||
"uncertainty": {
|
||||
"pose_covariance_6x6": [
|
||||
[
|
||||
7.10468843872467e-05,
|
||||
-1.0188142662417317e-05,
|
||||
8.100236601514868e-06,
|
||||
-2.4702922853077473e-07,
|
||||
-1.2181736506097061e-06,
|
||||
1.1390126277890614e-06
|
||||
],
|
||||
[
|
||||
-1.018814266241648e-05,
|
||||
9.119358794673825e-06,
|
||||
-1.5136526450200833e-05,
|
||||
5.544008778671917e-07,
|
||||
-3.4644454865432676e-07,
|
||||
5.210663368769894e-07
|
||||
],
|
||||
[
|
||||
8.100236601511832e-06,
|
||||
-1.513652645020065e-05,
|
||||
6.039663469674294e-05,
|
||||
-1.2163686651996553e-06,
|
||||
-1.3647248871111275e-06,
|
||||
-2.2185543179764333e-06
|
||||
],
|
||||
[
|
||||
-2.4702922853068945e-07,
|
||||
5.544008778671824e-07,
|
||||
-1.216368665199642e-06,
|
||||
8.909086242511532e-08,
|
||||
4.709579924704998e-09,
|
||||
2.0523772812814756e-07
|
||||
],
|
||||
[
|
||||
-1.2181736506096485e-06,
|
||||
-3.464445486543081e-07,
|
||||
-1.364724887111208e-06,
|
||||
4.7095799247074595e-09,
|
||||
2.6753644920953526e-07,
|
||||
2.552831299809846e-07
|
||||
],
|
||||
[
|
||||
1.1390126277892835e-06,
|
||||
5.210663368769411e-07,
|
||||
-2.2185543179763258e-06,
|
||||
2.0523772812814618e-07,
|
||||
2.552831299809781e-07,
|
||||
2.0278462436978523e-06
|
||||
]
|
||||
],
|
||||
"parameter_std": {
|
||||
"rvec_std_deg": [
|
||||
0.48294219448605197,
|
||||
0.17302337691534828,
|
||||
0.4452757077382589
|
||||
],
|
||||
"tvec_std_m": [
|
||||
0.0002984809247257106,
|
||||
0.0005172392572200367,
|
||||
0.0014240246640061583
|
||||
]
|
||||
},
|
||||
"camera_center_std_m": [
|
||||
0.005315996210773081,
|
||||
0.004344049157013888,
|
||||
0.005566401662097682
|
||||
],
|
||||
"camera_center_std_mm": [
|
||||
5.315996210773081,
|
||||
4.344049157013888,
|
||||
5.5664016620976815
|
||||
],
|
||||
"orientation_std_deg": {
|
||||
"roll": 0.38938838441106427,
|
||||
"pitch": 0.36987460773433695,
|
||||
"yaw": 0.11587592903072558
|
||||
}
|
||||
}
|
||||
},
|
||||
"observations": {
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 208,
|
||||
"observed_center_px": [
|
||||
995.5,
|
||||
638.0
|
||||
],
|
||||
"projected_center_px": [
|
||||
994.1914672851562,
|
||||
637.6500854492188
|
||||
],
|
||||
"reprojection_error_px": 1.3545102652489567,
|
||||
"confidence": 0.6072727689079809
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"observed_center_px": [
|
||||
764.5,
|
||||
612.5
|
||||
],
|
||||
"projected_center_px": [
|
||||
765.1234741210938,
|
||||
612.677001953125
|
||||
],
|
||||
"reprojection_error_px": 0.648112390780865,
|
||||
"confidence": 0.6168610191628993
|
||||
},
|
||||
{
|
||||
"marker_id": 214,
|
||||
"observed_center_px": [
|
||||
996.0,
|
||||
527.75
|
||||
],
|
||||
"projected_center_px": [
|
||||
996.41357421875,
|
||||
527.8440551757812
|
||||
],
|
||||
"reprojection_error_px": 0.42413442504224375,
|
||||
"confidence": 0.5524643209674667
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"observed_center_px": [
|
||||
783.0,
|
||||
506.25
|
||||
],
|
||||
"projected_center_px": [
|
||||
783.9049072265625,
|
||||
506.3186950683594
|
||||
],
|
||||
"reprojection_error_px": 0.9075109371803377,
|
||||
"confidence": 0.5730650050844824
|
||||
},
|
||||
{
|
||||
"marker_id": 210,
|
||||
"observed_center_px": [
|
||||
312.75,
|
||||
470.75
|
||||
],
|
||||
"projected_center_px": [
|
||||
312.1726379394531,
|
||||
470.7790832519531
|
||||
],
|
||||
"reprojection_error_px": 0.5780940965821242,
|
||||
"confidence": 0.5452330001368535
|
||||
}
|
||||
]
|
||||
},
|
||||
"qa": {
|
||||
"sanity_notes": []
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 278 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 1.2 MiB |
@@ -1,264 +0,0 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"created_utc": "2026-05-29T17:30:29Z",
|
||||
"source": {
|
||||
"detection_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\pipeline\\render_3c_aruco_detection.json",
|
||||
"robot_json": "C:\\Users\\kech\\SynologyDrive\\2026-AppServer-AppRobot\\appRobotRendering\\robot.json"
|
||||
},
|
||||
"camera": {
|
||||
"camera_id": "cam1",
|
||||
"camera_matrix": [
|
||||
[
|
||||
1777.77783203125,
|
||||
0.0,
|
||||
640.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
1500.0,
|
||||
360.0
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"distortion_coefficients": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"estimation": {
|
||||
"method": "single_camera_marker_center_lm",
|
||||
"description": "Rigid init from per-marker pose estimates, followed by LM on normalized marker-center reprojection residuals.",
|
||||
"marker_size_m": 0.025,
|
||||
"num_used_markers": 3,
|
||||
"used_marker_ids": [
|
||||
214,
|
||||
215,
|
||||
211
|
||||
],
|
||||
"history": {
|
||||
"iters": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10
|
||||
],
|
||||
"rms": [
|
||||
0.00344680955780955,
|
||||
0.0020271807913530755,
|
||||
0.0012054573927883481,
|
||||
0.0005249513489291123,
|
||||
0.00011440662413309213,
|
||||
1.160155941872139e-05,
|
||||
7.215779361669864e-07,
|
||||
2.5148062241790062e-08,
|
||||
4.500141944380795e-10,
|
||||
4.065031937942975e-12,
|
||||
1.8438192734588975e-14
|
||||
],
|
||||
"lambda": [
|
||||
0.001,
|
||||
0.0005,
|
||||
0.00025,
|
||||
0.000125,
|
||||
6.25e-05,
|
||||
3.125e-05,
|
||||
1.5625e-05,
|
||||
7.8125e-06,
|
||||
3.90625e-06,
|
||||
1.953125e-06,
|
||||
9.765625e-07
|
||||
]
|
||||
},
|
||||
"residual_rms_px": 0.0,
|
||||
"residual_median_px": 0.0,
|
||||
"residual_max_px": 0.0,
|
||||
"sigma2_normalized": 6.085938624263665e-32
|
||||
},
|
||||
"camera_pose": {
|
||||
"world_to_camera": {
|
||||
"rotation_matrix": [
|
||||
[
|
||||
0.6542378067970276,
|
||||
0.7542697191238403,
|
||||
0.055227722972631454
|
||||
],
|
||||
[
|
||||
0.5993703603744507,
|
||||
-0.47257471084594727,
|
||||
-0.6460869312286377
|
||||
],
|
||||
[
|
||||
-0.46122458577156067,
|
||||
0.45579633116722107,
|
||||
-0.7612631320953369
|
||||
]
|
||||
],
|
||||
"translation_m": [
|
||||
-0.002736467868089676,
|
||||
-0.051753539592027664,
|
||||
0.9323956966400146
|
||||
],
|
||||
"rvec_rad": [
|
||||
2.2287567480572723,
|
||||
1.044617524144693,
|
||||
-0.31331182858045287
|
||||
]
|
||||
},
|
||||
"camera_in_world": {
|
||||
"position_m": [
|
||||
0.46285367012023926,
|
||||
-0.44737592339515686,
|
||||
0.6765123009681702
|
||||
],
|
||||
"position_mm": [
|
||||
462.8536682128906,
|
||||
-447.37591552734375,
|
||||
676.5123291015625
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 149.0894775390625,
|
||||
"pitch": 27.466156005859375,
|
||||
"yaw": 42.493896484375
|
||||
}
|
||||
},
|
||||
"uncertainty": {
|
||||
"pose_covariance_6x6": [
|
||||
[
|
||||
4.98077532946859e-29,
|
||||
1.5669505417959045e-29,
|
||||
-2.6063442216070545e-30,
|
||||
1.3704317463740436e-30,
|
||||
-4.725392909182312e-30,
|
||||
-2.2822782861284537e-30
|
||||
],
|
||||
[
|
||||
1.566950541795822e-29,
|
||||
1.356557941666176e-29,
|
||||
-1.6794738460725616e-29,
|
||||
2.9388553078303738e-30,
|
||||
-1.4354899092906991e-30,
|
||||
2.7388681044307003e-30
|
||||
],
|
||||
[
|
||||
-2.6063442215968667e-30,
|
||||
-1.6794738460732272e-29,
|
||||
1.3269273125293006e-28,
|
||||
-1.0933225984983171e-29,
|
||||
-8.214578226915152e-30,
|
||||
-2.6695766121462166e-29
|
||||
],
|
||||
[
|
||||
1.370431746373238e-30,
|
||||
2.9388553078308247e-30,
|
||||
-1.0933225984982319e-29,
|
||||
1.2365300431408576e-30,
|
||||
4.625717492808519e-31,
|
||||
2.5878308104903124e-30
|
||||
],
|
||||
[
|
||||
-4.7253929091830566e-30,
|
||||
-1.4354899092901388e-30,
|
||||
-8.214578226916122e-30,
|
||||
4.625717492809888e-31,
|
||||
1.2042707994264927e-30,
|
||||
2.2588627193514912e-30
|
||||
],
|
||||
[
|
||||
-2.282278286130713e-30,
|
||||
2.7388681044323174e-30,
|
||||
-2.6695766121464453e-29,
|
||||
2.5878308104906743e-30,
|
||||
2.2588627193514506e-30,
|
||||
7.612587003080338e-30
|
||||
]
|
||||
],
|
||||
"parameter_std": {
|
||||
"rvec_std_deg": [
|
||||
4.043627193444188e-13,
|
||||
2.1102883748579442e-13,
|
||||
6.60003439958854e-13
|
||||
],
|
||||
"tvec_std_m": [
|
||||
1.1119937244161306e-15,
|
||||
1.0973927279814154e-15,
|
||||
2.7590916989256335e-15
|
||||
]
|
||||
},
|
||||
"camera_center_std_m": [
|
||||
6.609895593967079e-15,
|
||||
5.572407428023946e-15,
|
||||
4.532315948778389e-15
|
||||
],
|
||||
"camera_center_std_mm": [
|
||||
6.609895593967079e-12,
|
||||
5.5724074280239455e-12,
|
||||
4.5323159487783894e-12
|
||||
],
|
||||
"orientation_std_deg": {
|
||||
"roll": 4.593062572697299e-13,
|
||||
"pitch": 4.725448419113441e-13,
|
||||
"yaw": 1.6845365562674818e-13
|
||||
}
|
||||
}
|
||||
},
|
||||
"observations": {
|
||||
"markers": [
|
||||
{
|
||||
"marker_id": 214,
|
||||
"observed_center_px": [
|
||||
1147.5,
|
||||
678.25
|
||||
],
|
||||
"projected_center_px": [
|
||||
1147.5,
|
||||
678.25
|
||||
],
|
||||
"reprojection_error_px": 0.0,
|
||||
"confidence": 0.1700115058329765
|
||||
},
|
||||
{
|
||||
"marker_id": 215,
|
||||
"observed_center_px": [
|
||||
853.0,
|
||||
631.5
|
||||
],
|
||||
"projected_center_px": [
|
||||
853.0,
|
||||
631.5
|
||||
],
|
||||
"reprojection_error_px": 0.0,
|
||||
"confidence": 0.9372326698512834
|
||||
},
|
||||
{
|
||||
"marker_id": 211,
|
||||
"observed_center_px": [
|
||||
975.5,
|
||||
549.5
|
||||
],
|
||||
"projected_center_px": [
|
||||
975.5,
|
||||
549.5
|
||||
],
|
||||
"reprojection_error_px": 0.0,
|
||||
"confidence": 0.8902520865668376
|
||||
}
|
||||
]
|
||||
},
|
||||
"qa": {
|
||||
"sanity_notes": []
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
id,x_mm,y_mm,z_mm,roll_deg,pitch_deg,yaw_deg,seen_by
|
||||
camera 0,462.85,-447.38,679.21,-139.679,-3.166,49.062
|
||||
camera 1,278.74,-619.38,596.01,-128.837,-0.336,9.419
|
||||
122,202.24,-295.10,250.81,-28.414,-15.485,1.697,3
|
||||
198,126.58,-65.51,155.07,-3.661,-5.631,-2.911,3
|
||||
208,351.02,-86.53,-1.04,-1.448,-0.084,0.377,2
|
||||
210,-2.56,36.17,-52.21,1.418,0.510,0.839,2
|
||||
211,250.00,-10.00,3.00,68.426,25.579,18.293,3
|
||||
214,350.00,-10.00,3.00,-1.702,-0.340,0.760,3
|
||||
215,250.00,-90.00,3.00,2.880,-1.221,-1.765,3
|
||||
218,236.59,-245.24,189.57,-58.103,50.616,-52.876,1
|
||||
219,227.26,-329.71,232.26,-59.187,48.504,-50.906,1
|
||||
229,124.73,-146.21,161.04,-3.612,-3.364,-1.997,3
|
||||
243,122.58,-179.86,116.23,67.866,-8.370,-6.945,2
|
||||
244,246.50,-158.07,135.63,-68.544,55.107,-66.578,1
|
||||
246,179.04,-106.04,108.88,103.363,42.379,32.981,1
|
||||
247,143.22,-106.60,110.01,-28.304,-5.147,-2.319,1
|
||||
|
@@ -1,225 +0,0 @@
|
||||
{
|
||||
"metadata": {
|
||||
"timestamp": "2026-05-29 07:01:38",
|
||||
"reference_markers": [
|
||||
211,
|
||||
215,
|
||||
214
|
||||
],
|
||||
"dict": "DICT_4X4_250",
|
||||
"marker_size_mm": 25.0,
|
||||
"description": "Two-camera joint optimization with triangulation"
|
||||
},
|
||||
"cameras": [
|
||||
{
|
||||
"id": "camera1",
|
||||
"position_mm": [
|
||||
462.85337477011745,
|
||||
-447.3761981117614,
|
||||
679.2119813369037
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -139.67859744771047,
|
||||
"pitch": -3.165957561501241,
|
||||
"yaw": 49.06230550849313
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "camera2",
|
||||
"position_mm": [
|
||||
278.74292453701025,
|
||||
-619.3816023355497,
|
||||
596.013403520274
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -128.8365839999356,
|
||||
"pitch": -0.33589695340564535,
|
||||
"yaw": 9.419081380244078
|
||||
}
|
||||
}
|
||||
],
|
||||
"markers": [
|
||||
{
|
||||
"id": 122,
|
||||
"position_mm": [
|
||||
202.24261474609375,
|
||||
-295.09710693359375,
|
||||
250.81494140625
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -28.41441452710221,
|
||||
"pitch": -15.485467478547452,
|
||||
"yaw": 1.6970935429672367
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 198,
|
||||
"position_mm": [
|
||||
126.584228515625,
|
||||
-65.51023864746094,
|
||||
155.06854248046875
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -3.660633208127074,
|
||||
"pitch": -5.630630889795624,
|
||||
"yaw": -2.9106432706678698
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 208,
|
||||
"position_mm": [
|
||||
351.0157443651476,
|
||||
-86.53427022011029,
|
||||
-1.0397490394067344
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -1.4484575811662157,
|
||||
"pitch": -0.08375253351626927,
|
||||
"yaw": 0.37677851429577486
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 210,
|
||||
"position_mm": [
|
||||
-2.558166926849015,
|
||||
36.16561975926857,
|
||||
-52.21100279675572
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 1.4182725874800994,
|
||||
"pitch": 0.5101505675200076,
|
||||
"yaw": 0.8388746917381826
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 211,
|
||||
"position_mm": [
|
||||
250.00003051757812,
|
||||
-10.000012397766113,
|
||||
3.0000078678131104
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 68.42584362262588,
|
||||
"pitch": 25.578734156462517,
|
||||
"yaw": 18.29336709620276
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 214,
|
||||
"position_mm": [
|
||||
350.0,
|
||||
-9.999968528747559,
|
||||
2.999967336654663
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -1.7021011527964998,
|
||||
"pitch": -0.34049805661256133,
|
||||
"yaw": 0.7603837134528649
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 215,
|
||||
"position_mm": [
|
||||
250.0,
|
||||
-90.00000762939453,
|
||||
3.000002145767212
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 2.879885512023364,
|
||||
"pitch": -1.2207582699857618,
|
||||
"yaw": -1.7652611699290457
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 218,
|
||||
"position_mm": [
|
||||
236.59325735949972,
|
||||
-245.23626778778672,
|
||||
189.57266262534728
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -58.10323420416955,
|
||||
"pitch": 50.61599751527859,
|
||||
"yaw": -52.875746653538656
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 219,
|
||||
"position_mm": [
|
||||
227.2649738848997,
|
||||
-329.7144822031666,
|
||||
232.2572485343396
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -59.18660506982057,
|
||||
"pitch": 48.503782448589995,
|
||||
"yaw": -50.906238173493115
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 229,
|
||||
"position_mm": [
|
||||
124.72924041748047,
|
||||
-146.21078491210938,
|
||||
161.03932189941406
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -3.6119417177489486,
|
||||
"pitch": -3.3643207255933993,
|
||||
"yaw": -1.9966876167092664
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 243,
|
||||
"position_mm": [
|
||||
122.57701769337837,
|
||||
-179.85790574360627,
|
||||
116.23497462026722
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 67.86582375271519,
|
||||
"pitch": -8.37046200567875,
|
||||
"yaw": -6.945220224171688
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 244,
|
||||
"position_mm": [
|
||||
246.4997454888863,
|
||||
-158.06502830092427,
|
||||
135.62936814972826
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -68.54419573537868,
|
||||
"pitch": 55.10689840067641,
|
||||
"yaw": -66.57844357425445
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 246,
|
||||
"position_mm": [
|
||||
179.03805942690053,
|
||||
-106.03594119519106,
|
||||
108.88294827910639
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": 103.36293213539558,
|
||||
"pitch": 42.37920301941833,
|
||||
"yaw": 32.98079690795832
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 247,
|
||||
"position_mm": [
|
||||
143.22372509352726,
|
||||
-106.60064380982665,
|
||||
110.0127892418814
|
||||
],
|
||||
"orientation_deg": {
|
||||
"roll": -28.30352249482726,
|
||||
"pitch": -5.146503410532437,
|
||||
"yaw": -2.318781544830814
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 309 KiB |
|
Before Width: | Height: | Size: 33 KiB |
@@ -1,652 +0,0 @@
|
||||
[
|
||||
{
|
||||
"name": "Board_marker_210",
|
||||
"id": 210,
|
||||
"link": "Board",
|
||||
"position_m": [
|
||||
0.019999999552965164,
|
||||
-0.019999999552965164,
|
||||
0.000800000037997961
|
||||
],
|
||||
"position_mm": [
|
||||
19.999999552965164,
|
||||
-19.999999552965164,
|
||||
0.800000037997961
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Board_marker_211",
|
||||
"id": 211,
|
||||
"link": "Board",
|
||||
"position_m": [
|
||||
0.25,
|
||||
-0.009999999776482582,
|
||||
0.000800000037997961
|
||||
],
|
||||
"position_mm": [
|
||||
250.0,
|
||||
-9.999999776482582,
|
||||
0.800000037997961
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Board_marker_215",
|
||||
"id": 215,
|
||||
"link": "Board",
|
||||
"position_m": [
|
||||
0.25,
|
||||
-0.09000000357627869,
|
||||
0.000800000037997961
|
||||
],
|
||||
"position_mm": [
|
||||
250.0,
|
||||
-90.00000357627869,
|
||||
0.800000037997961
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Board_marker_214",
|
||||
"id": 214,
|
||||
"link": "Board",
|
||||
"position_m": [
|
||||
0.3499999940395355,
|
||||
-0.009999999776482582,
|
||||
0.000800000037997961
|
||||
],
|
||||
"position_mm": [
|
||||
349.9999940395355,
|
||||
-9.999999776482582,
|
||||
0.800000037997961
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Board_marker_208",
|
||||
"id": 208,
|
||||
"link": "Board",
|
||||
"position_m": [
|
||||
0.3499999940395355,
|
||||
-0.09000000357627869,
|
||||
0.000800000037997961
|
||||
],
|
||||
"position_mm": [
|
||||
349.9999940395355,
|
||||
-90.00000357627869,
|
||||
0.800000037997961
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Board_marker_206",
|
||||
"id": 206,
|
||||
"link": "Board",
|
||||
"position_m": [
|
||||
0.6499999761581421,
|
||||
-0.009999999776482582,
|
||||
0.000800000037997961
|
||||
],
|
||||
"position_mm": [
|
||||
649.9999761581421,
|
||||
-9.999999776482582,
|
||||
0.800000037997961
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Board_marker_205",
|
||||
"id": 205,
|
||||
"link": "Board",
|
||||
"position_m": [
|
||||
0.75,
|
||||
-0.09000000357627869,
|
||||
0.000800000037997961
|
||||
],
|
||||
"position_mm": [
|
||||
750.0,
|
||||
-90.00000357627869,
|
||||
0.800000037997961
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Board_marker_207",
|
||||
"id": 207,
|
||||
"link": "Board",
|
||||
"position_m": [
|
||||
0.75,
|
||||
-0.009999999776482582,
|
||||
0.000800000037997961
|
||||
],
|
||||
"position_mm": [
|
||||
750.0,
|
||||
-9.999999776482582,
|
||||
0.800000037997961
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Board_marker_217",
|
||||
"id": 217,
|
||||
"link": "Board",
|
||||
"position_m": [
|
||||
0.6499999761581421,
|
||||
-0.09000000357627869,
|
||||
0.000800000037997961
|
||||
],
|
||||
"position_mm": [
|
||||
649.9999761581421,
|
||||
-90.00000357627869,
|
||||
0.800000037997961
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_198",
|
||||
"id": 198,
|
||||
"link": "Arm1",
|
||||
"position_m": [
|
||||
0.11999999731779099,
|
||||
-0.04913388192653656,
|
||||
0.10757456719875336
|
||||
],
|
||||
"position_mm": [
|
||||
119.99999731779099,
|
||||
-49.13388192653656,
|
||||
107.57456719875336
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.9993908405303955,
|
||||
-0.03489953652024269,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.06975655257701874,
|
||||
0.9975640773773193
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_229",
|
||||
"id": 229,
|
||||
"link": "Arm1",
|
||||
"position_m": [
|
||||
0.11999999731779099,
|
||||
-0.13891464471817017,
|
||||
0.11385266482830048
|
||||
],
|
||||
"position_mm": [
|
||||
119.99999731779099,
|
||||
-138.91464471817017,
|
||||
113.85266482830048
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.9993908405303955,
|
||||
-0.03489953652024269,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.06975655257701874,
|
||||
0.9975640773773193
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_242",
|
||||
"id": 242,
|
||||
"link": "Arm1",
|
||||
"position_m": [
|
||||
0.11999999731779099,
|
||||
-0.1438673585653305,
|
||||
0.04302562028169632
|
||||
],
|
||||
"position_mm": [
|
||||
119.99999731779099,
|
||||
-143.8673585653305,
|
||||
43.02562028169632
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.024677660316228867,
|
||||
0.7066760063171387,
|
||||
0.7066760659217834,
|
||||
-0.024677699431777
|
||||
],
|
||||
"normal": [
|
||||
-5.21540641784668e-08,
|
||||
-0.06975650042295456,
|
||||
-0.9975640773773193
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_243",
|
||||
"id": 243,
|
||||
"link": "Arm1",
|
||||
"position_m": [
|
||||
0.11999999731779099,
|
||||
-0.17680451273918152,
|
||||
0.08091549575328827
|
||||
],
|
||||
"position_mm": [
|
||||
119.99999731779099,
|
||||
-176.80451273918152,
|
||||
80.91549575328827
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.7313537001609802,
|
||||
0.6819983124732971,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
-0.9975640773773193,
|
||||
0.06975657492876053
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_244",
|
||||
"id": 244,
|
||||
"link": "Ellbow",
|
||||
"position_m": [
|
||||
0.24549999833106995,
|
||||
-0.14139100909233093,
|
||||
0.0784391462802887
|
||||
],
|
||||
"position_mm": [
|
||||
245.49999833106995,
|
||||
-141.39100909233093,
|
||||
78.4391462802887
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.6916548013687134,
|
||||
-0.1470157951116562,
|
||||
0.6916547417640686,
|
||||
-0.1470157951116562
|
||||
],
|
||||
"normal": [
|
||||
1.0,
|
||||
1.4901162970204496e-08,
|
||||
7.264316792543468e-08
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_245",
|
||||
"id": 245,
|
||||
"link": "Ellbow",
|
||||
"position_m": [
|
||||
0.21000000834465027,
|
||||
-0.15583015978336334,
|
||||
0.04600828140974045
|
||||
],
|
||||
"position_mm": [
|
||||
210.00000834465027,
|
||||
-155.83015978336334,
|
||||
46.00828140974045
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.147015780210495,
|
||||
0.6916548013687134,
|
||||
0.6916547417640686,
|
||||
-0.1470157951116562
|
||||
],
|
||||
"normal": [
|
||||
-4.4703490686970326e-08,
|
||||
-0.4067367613315582,
|
||||
-0.9135454893112183
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_246",
|
||||
"id": 246,
|
||||
"link": "Ellbow",
|
||||
"position_m": [
|
||||
0.21000000834465027,
|
||||
-0.12695185840129852,
|
||||
0.11087001115083694
|
||||
],
|
||||
"position_mm": [
|
||||
210.00000834465027,
|
||||
-126.95185840129852,
|
||||
110.87001115083694
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.978147566318512,
|
||||
-0.20791174471378326,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.4067367911338806,
|
||||
0.9135454893112183
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_247",
|
||||
"id": 247,
|
||||
"link": "Ellbow",
|
||||
"position_m": [
|
||||
0.17249999940395355,
|
||||
-0.12695185840129852,
|
||||
0.11087001115083694
|
||||
],
|
||||
"position_mm": [
|
||||
172.49999940395355,
|
||||
-126.95185840129852,
|
||||
110.87001115083694
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.978147566318512,
|
||||
-0.20791174471378326,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"normal": [
|
||||
0.0,
|
||||
0.4067367911338806,
|
||||
0.9135454893112183
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Arm2_marker_120",
|
||||
"id": 120,
|
||||
"link": "Arm2",
|
||||
"position_m": [
|
||||
0.23908136785030365,
|
||||
-0.25199049711227417,
|
||||
0.10539114475250244
|
||||
],
|
||||
"position_mm": [
|
||||
239.08136785030365,
|
||||
-251.99049711227417,
|
||||
105.39114475250244
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.4516582787036896,
|
||||
-0.09600294381380081,
|
||||
0.8676275014877319,
|
||||
-0.18441995978355408
|
||||
],
|
||||
"normal": [
|
||||
0.8191521167755127,
|
||||
-0.23329465091228485,
|
||||
-0.5239881277084351
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_122",
|
||||
"id": 122,
|
||||
"link": "Arm2",
|
||||
"position_m": [
|
||||
0.17503933608531952,
|
||||
-0.24621543288230896,
|
||||
0.11836209893226624
|
||||
],
|
||||
"position_mm": [
|
||||
175.03933608531952,
|
||||
-246.21543288230896,
|
||||
118.36209893226624
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.6287412643432617,
|
||||
-0.13364310562610626,
|
||||
-0.749304473400116,
|
||||
0.15926963090896606
|
||||
],
|
||||
"normal": [
|
||||
-0.9848078489303589,
|
||||
-0.07062903046607971,
|
||||
-0.15863528847694397
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_218",
|
||||
"id": 218,
|
||||
"link": "Arm2",
|
||||
"position_m": [
|
||||
0.24496068060398102,
|
||||
-0.2412007749080658,
|
||||
0.12962521612644196
|
||||
],
|
||||
"position_mm": [
|
||||
244.96068060398102,
|
||||
-241.2007749080658,
|
||||
129.62521612644196
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.749304473400116,
|
||||
-0.15926964581012726,
|
||||
0.6287412643432617,
|
||||
-0.13364310562610626
|
||||
],
|
||||
"normal": [
|
||||
0.9848078489303589,
|
||||
0.0706290453672409,
|
||||
0.15863528847694397
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_113",
|
||||
"id": 113,
|
||||
"link": "Arm2",
|
||||
"position_m": [
|
||||
0.20470373332500458,
|
||||
-0.2954392731189728,
|
||||
0.17990505695343018
|
||||
],
|
||||
"position_mm": [
|
||||
204.70373332500458,
|
||||
-295.4392731189728,
|
||||
179.90505695343018
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.9744254350662231,
|
||||
-0.20712058246135712,
|
||||
-0.08525115996599197,
|
||||
0.018120698630809784
|
||||
],
|
||||
"normal": [
|
||||
-0.1736481487751007,
|
||||
0.40055757761001587,
|
||||
0.8996666669845581
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_101",
|
||||
"id": 101,
|
||||
"link": "Arm2",
|
||||
"position_m": [
|
||||
0.23908136785030365,
|
||||
-0.31593865156173706,
|
||||
0.13386270403862
|
||||
],
|
||||
"position_mm": [
|
||||
239.08136785030365,
|
||||
-315.93865156173706,
|
||||
133.86270403862
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.4516582787036896,
|
||||
-0.09600294381380081,
|
||||
0.8676275014877319,
|
||||
-0.18441995978355408
|
||||
],
|
||||
"normal": [
|
||||
0.8191521167755127,
|
||||
-0.23329465091228485,
|
||||
-0.5239881277084351
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_102",
|
||||
"id": 102,
|
||||
"link": "Arm2",
|
||||
"position_m": [
|
||||
0.18963702023029327,
|
||||
-0.31948474049568176,
|
||||
0.1258980929851532
|
||||
],
|
||||
"position_mm": [
|
||||
189.63702023029327,
|
||||
-319.48474049568176,
|
||||
125.8980929851532
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.2941346764564514,
|
||||
-0.06252026557922363,
|
||||
-0.93287593126297,
|
||||
0.1982889324426651
|
||||
],
|
||||
"normal": [
|
||||
-0.5735765099525452,
|
||||
-0.33317920565605164,
|
||||
-0.7483325600624084
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_124",
|
||||
"id": 124,
|
||||
"link": "Arm2",
|
||||
"position_m": [
|
||||
0.17503933608531952,
|
||||
-0.3439647853374481,
|
||||
0.1618829369544983
|
||||
],
|
||||
"position_mm": [
|
||||
175.03933608531952,
|
||||
-343.9647853374481,
|
||||
161.8829369544983
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.6287412643432617,
|
||||
-0.13364310562610626,
|
||||
-0.749304473400116,
|
||||
0.15926963090896606
|
||||
],
|
||||
"normal": [
|
||||
-0.9848078489303589,
|
||||
-0.07062903046607971,
|
||||
-0.15863528847694397
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "aruco_219",
|
||||
"id": 219,
|
||||
"link": "Arm2",
|
||||
"position_m": [
|
||||
0.24496068060398102,
|
||||
-0.33895012736320496,
|
||||
0.17314603924751282
|
||||
],
|
||||
"position_mm": [
|
||||
244.96068060398102,
|
||||
-338.95012736320496,
|
||||
173.14603924751282
|
||||
],
|
||||
"rotation_quaternion": [
|
||||
0.749304473400116,
|
||||
-0.15926964581012726,
|
||||
0.6287412643432617,
|
||||
-0.13364310562610626
|
||||
],
|
||||
"normal": [
|
||||
0.9848078489303589,
|
||||
0.0706290453672409,
|
||||
0.15863528847694397
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -1,53 +0,0 @@
|
||||
@echo off
|
||||
REM 3_pipeline_multiview.bat
|
||||
REM Multi-camera ArUco detection and pose estimation pipeline
|
||||
|
||||
REM Example: 3 camera views
|
||||
REM Usage: run_pipeline_multiview.bat
|
||||
|
||||
cd /d "%~dp0"
|
||||
|
||||
set ROBOT_JSON=..\robot.json
|
||||
set OUT_DIR=.
|
||||
|
||||
REM Camera 1
|
||||
set IMG_1=render_1a.png
|
||||
set NPZ_1=render.npz
|
||||
set CAM_ID_1=cam1
|
||||
|
||||
REM Camera 2 (example - you need actual second camera image)
|
||||
set IMG_2=render_1b.png
|
||||
set NPZ_2=render.npz
|
||||
set CAM_ID_2=cam2
|
||||
|
||||
REM Camera 3 (example)
|
||||
set IMG_3=render_1c.png
|
||||
set NPZ_3=render.npz
|
||||
set CAM_ID_3=cam3
|
||||
|
||||
|
||||
|
||||
echo [STEP 1] Detect ArUco markers from all cameras
|
||||
python 1_detect_aruco_observations.py -i %IMG_1% -npz %NPZ_1% -robot %ROBOT_JSON% -cameraId %CAM_ID_1% -outDir %OUT_DIR%
|
||||
python 1_detect_aruco_observations.py -i %IMG_2% -npz %NPZ_2% -robot %ROBOT_JSON% -cameraId %CAM_ID_2% -outDir %OUT_DIR%
|
||||
python 1_detect_aruco_observations.py -i %IMG_3% -npz %NPZ_3% -robot %ROBOT_JSON% -cameraId %CAM_ID_3% -outDir %OUT_DIR%
|
||||
|
||||
echo.
|
||||
echo [STEP 2] Estimate camera poses from detections
|
||||
python 2_estimate_camera_from_observations.py -i render_3a_aruco_detection.json -robot %ROBOT_JSON% -outDir %OUT_DIR%
|
||||
python 2_estimate_camera_from_observations.py -i render_3b_aruco_detection.json -robot %ROBOT_JSON% -outDir %OUT_DIR%
|
||||
python 2_estimate_camera_from_observations.py -i render_3c_aruco_detection.json -robot %ROBOT_JSON% -outDir %OUT_DIR%
|
||||
|
||||
echo.
|
||||
echo [STEP 3] Triangulate marker positions from multi-view observations
|
||||
python 3_multiview_bundle_adjustment_v6.py ^
|
||||
-det render_3a_aruco_detection.json ^
|
||||
-det render_3b_aruco_detection.json ^
|
||||
-det render_3c_aruco_detection.json ^
|
||||
-pose render_3a_camera_pose.json ^
|
||||
-pose render_3b_camera_pose.json ^
|
||||
-pose render_3c_camera_pose.json ^
|
||||
-robot %ROBOT_JSON% -lambdaWeight 100.0
|
||||
|
||||
echo.
|
||||
echo [DONE] Pipeline complete
|
||||