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)
|
// Posizioni torso e spalle hardcoded (riferimento visivo, non IK)
|
||||||
const TORSO_POS = new THREE.Vector3(0, 0, 0.40);
|
const TORSO_POS = new THREE.Vector3(0, 0, 0.40);
|
||||||
// Posizione approssimata delle spalle del G1 in base frame (zero-joint pose
|
// Posizioni di riferimento del G1 in base frame (feet on floor convention,
|
||||||
// dell'URDF). Usato come fallback visivo quando /state e' offline e per il
|
// URDF alzato di 0.793m). Costanti approssimate, non vengono usate per IK
|
||||||
// workspace check (raggiungibilita').
|
// 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 = {
|
const SHOULDER = {
|
||||||
right: new THREE.Vector3(0.0, -0.18, 1.05),
|
right: new THREE.Vector3(0.0, -0.18, 1.05),
|
||||||
left: 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)
|
const ARM_MAX_REACH_M = 0.62; // braccio teso G1 (upper+forearm+palm ~10+25+25 cm)
|
||||||
|
|
||||||
// ----- URDF loader -----
|
// ----- URDF loader -----
|
||||||
@@ -133,7 +138,9 @@ async function loadG1Urdf(scene) {
|
|||||||
loader.load(
|
loader.load(
|
||||||
'/static/vendor/g1/g1.urdf',
|
'/static/vendor/g1/g1.urdf',
|
||||||
(robot) => {
|
(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);
|
scene.add(robot);
|
||||||
console.log('[pose_3d] G1 URDF caricato:', robot.name || 'g1');
|
console.log('[pose_3d] G1 URDF caricato:', robot.name || 'g1');
|
||||||
resolve(robot);
|
resolve(robot);
|
||||||
@@ -189,7 +196,7 @@ function initScene() {
|
|||||||
// Arms
|
// Arms
|
||||||
for (const side of ['right', 'left']) {
|
for (const side of ['right', 'left']) {
|
||||||
const wrist = makeWristMarker(side === 'right' ? 0x4da3ff : 0xff5e7e);
|
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;
|
wrist.userData.side = side;
|
||||||
scene.add(wrist);
|
scene.add(wrist);
|
||||||
state.arms[side] = wrist;
|
state.arms[side] = wrist;
|
||||||
|
|||||||
Reference in new issue
Block a user