fix(pose_3d): zero scena al centro robot (pelvi), griglia sotto i piedi a Z=-0.793
This commit is contained in:
1 parent
38848ad53c
commit
9d30073d57
1 file changed
+14
-10
+14
-10
@@ -100,13 +100,15 @@ const TORSO_POS = new THREE.Vector3(0, 0, 0.40);
|
||||
// URDF alzato di 0.793m). Costanti approssimate, non vengono usate per IK
|
||||
// vera ma per: (1) workspace check (centro = spalla, raggio = braccio teso),
|
||||
// (2) fallback delle sfere polso quando /state e' offline (posa zero-joint).
|
||||
// Costanti in frame G1 base (pelvi all'origine). Sottratto il lift di 0.793m
|
||||
// che prima alzava il robot.
|
||||
const SHOULDER = {
|
||||
right: new THREE.Vector3(0.0, -0.18, 1.05),
|
||||
left: new THREE.Vector3(0.0, 0.18, 1.05),
|
||||
right: new THREE.Vector3(0.0, -0.18, 0.26), // ~26cm sopra pelvi
|
||||
left: new THREE.Vector3(0.0, 0.18, 0.26),
|
||||
};
|
||||
const WRIST_ZERO_POSE = {
|
||||
right: new THREE.Vector3(0.0, -0.18, 0.45), // braccia giu', polso ~45cm sopra il suolo
|
||||
left: new THREE.Vector3(0.0, 0.18, 0.45),
|
||||
right: new THREE.Vector3(0.0, -0.18, -0.34), // ~34cm sotto pelvi (braccia giu')
|
||||
left: new THREE.Vector3(0.0, 0.18, -0.34),
|
||||
};
|
||||
const ARM_MAX_REACH_M = 0.62; // braccio teso G1 (upper+forearm+palm ~10+25+25 cm)
|
||||
|
||||
@@ -140,9 +142,8 @@ async function loadG1Urdf(scene) {
|
||||
loader.load(
|
||||
'/static/vendor/g1/g1.urdf',
|
||||
(robot) => {
|
||||
// G1 URDF uses Z-up (Unitree convention). Pelvi e' all'origine,
|
||||
// alziamo il robot di ~0.793m cosi' i piedi toccano la griglia Z=0.
|
||||
robot.position.z = 0.793;
|
||||
// Robot rimane all'origine: la pelvi e' lo zero del frame base del G1,
|
||||
// coerente con le pose wrist che arrivano da /api/pose_3d/state.
|
||||
scene.add(robot);
|
||||
state.robot = robot;
|
||||
state.arm_links_m = measureArmLinkLengths(robot);
|
||||
@@ -292,9 +293,12 @@ function initScene() {
|
||||
dir.position.set(2, 2, 3);
|
||||
scene.add(dir);
|
||||
|
||||
// Grid + base UCS
|
||||
// Grid (pavimento) posizionata sotto i piedi del robot: la pelvi del G1 e'
|
||||
// all'origine del frame base, i piedi sono ~0.793m sotto. Il base UCS resta
|
||||
// all'origine (centro robot).
|
||||
const grid = new THREE.GridHelper(2, 20, 0x444444, 0x222222);
|
||||
grid.rotation.x = Math.PI / 2; // piano XY (z=0)
|
||||
grid.rotation.x = Math.PI / 2;
|
||||
grid.position.z = -0.793;
|
||||
scene.add(grid);
|
||||
const baseUCS = makeUCS(0.2);
|
||||
scene.add(baseUCS);
|
||||
@@ -303,7 +307,7 @@ function initScene() {
|
||||
// la direzione +X del base frame. Solo marker visivo, NON interagibile
|
||||
// (la raycaster considera solo le sfere dei polsi).
|
||||
const frontArrow = makeLabelSprite('▲ FRONT (base +X)', '#ffd54f');
|
||||
frontArrow.position.set(0.30, 0, 0.01);
|
||||
frontArrow.position.set(0.30, 0, -0.783); // appena sopra la griglia abbassata
|
||||
frontArrow.scale.set(0.18, 0.045, 1); // più largo ma sottile, "etichetta a terra"
|
||||
scene.add(frontArrow);
|
||||
|
||||
|
||||
Reference in new issue
Block a user