fix(pose_3d): URDF feet a terra (+0.793m) + sfere polso a zero-pose (Z=0.45)
This commit is contained in:
1 parent
bfd4cc13fb
commit
7f60238be9
1 file changed
+12
-5
+12
-5
@@ -94,13 +94,18 @@ function checkWorkspace(side, position_m) {
|
||||
|
||||
// Posizioni torso e spalle hardcoded (riferimento visivo, non IK)
|
||||
const TORSO_POS = new THREE.Vector3(0, 0, 0.40);
|
||||
// Posizione approssimata delle spalle del G1 in base frame (zero-joint pose
|
||||
// dell'URDF). Usato come fallback visivo quando /state e' offline e per il
|
||||
// workspace check (raggiungibilita').
|
||||
// Posizioni di riferimento del G1 in base frame (feet on floor convention,
|
||||
// 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).
|
||||
const SHOULDER = {
|
||||
right: new THREE.Vector3(0.0, -0.18, 1.05),
|
||||
left: new THREE.Vector3(0.0, 0.18, 1.05),
|
||||
};
|
||||
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),
|
||||
};
|
||||
const ARM_MAX_REACH_M = 0.62; // braccio teso G1 (upper+forearm+palm ~10+25+25 cm)
|
||||
|
||||
// ----- URDF loader -----
|
||||
@@ -133,7 +138,9 @@ async function loadG1Urdf(scene) {
|
||||
loader.load(
|
||||
'/static/vendor/g1/g1.urdf',
|
||||
(robot) => {
|
||||
// G1 URDF uses Z-up too (Unitree convention) so no rotation needed
|
||||
// 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;
|
||||
scene.add(robot);
|
||||
console.log('[pose_3d] G1 URDF caricato:', robot.name || 'g1');
|
||||
resolve(robot);
|
||||
@@ -189,7 +196,7 @@ function initScene() {
|
||||
// Arms
|
||||
for (const side of ['right', 'left']) {
|
||||
const wrist = makeWristMarker(side === 'right' ? 0x4da3ff : 0xff5e7e);
|
||||
wrist.position.copy(SHOULDER[side]); // posizione di partenza, sarà aggiornata dal polling
|
||||
wrist.position.copy(WRIST_ZERO_POSE[side]); // posizione fallback "braccia giù"
|
||||
wrist.userData.side = side;
|
||||
scene.add(wrist);
|
||||
state.arms[side] = wrist;
|
||||
|
||||
Reference in new issue
Block a user