Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions agent_context/topics/robot-system/robot-system.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,27 @@ control_parts = {

When using a dict, keys are joint names or regex patterns matching joint names. Control-part names can also be used as keys (resolved via `ArticulationCfg` logic).

### qpos-only tracking-qualified defaults

`scripts/benchmark/robotics/robot_trajectory_tracking.py` is the regression
entry point for the maintained Franka Panda, UR10e, CobotMagic, and DexForce
W1 presets. Its default mode writes only qpos targets at 60 Hz with a 240 Hz
physics step; it records that no qvel target was written. The qualified
configuration changes are intentionally narrow:

| Robot | Qualified joint group | Default adjustment |
|---|---|---|
| Franka Panda | Arm / fingers | Damping `1e2` / `2e1` |
| UR10e | Arm | Damping `1e2`; other UR variants retain `1e3` until separately qualified |
| CobotMagic | Both grippers | Stiffness `1e3`, damping `2e1`; arm defaults unchanged |
| DexForce W1 | Arms + head / default hands | Damping `1e2`; hand stiffness/damping `1e3` / `2e1`; body defaults unchanged |

The benchmark audits source URDF inertia as well as loaded mass. Missing
inertia currently belongs to fixed/reference frames such as tool TCP, base
connectors, and mounting offsets. Do not invent mass or inertia for those
frames merely to clear the audit; change physical asset data only with a
validated source.

## Adding a New Robot

Full guide: `docs/source/tutorial/add_robot.rst` · Quick reference: `docs/source/guides/add_robot.rst`
Expand Down
8 changes: 4 additions & 4 deletions embodichain/lab/sim/robots/cobotmagic.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,14 +128,14 @@ def _build_defaults(self, init_dict: dict | None = None) -> None:
stiffness={
"left_joint[1-6]": 7e4,
"right_joint[1-6]": 7e4,
"left_joint[7-8]": 3e2,
"right_joint[7-8]": 3e2,
"left_joint[7-8]": 1e3,
"right_joint[7-8]": 1e3,
},
damping={
"left_joint[1-6]": 1e3,
"right_joint[1-6]": 1e3,
"left_joint[7-8]": 3e1,
"right_joint[7-8]": 3e1,
"left_joint[7-8]": 2e1,
"right_joint[7-8]": 2e1,
},
max_effort={
"left_joint[1-6]": 3e6,
Expand Down
6 changes: 3 additions & 3 deletions embodichain/lab/sim/robots/dexforce_w1/cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,8 @@ def _build_default_physics_cfgs(
Dictionary containing physics configuration parameters
"""
DEFAULT_EEF_JOINT_DRIVE_PARAMS = {
"stiffness": 1e2,
"damping": 1e1,
"stiffness": 1e3,
"damping": 2e1,
"max_effort": 1e3,
}

Expand All @@ -269,7 +269,7 @@ def _build_default_physics_cfgs(
BODY_JOINTS: 1e7,
HEAD_JOINTS: 1e4,
},
"damping": {ARM_JOINTS: 1e3, BODY_JOINTS: 1e4, HEAD_JOINTS: 1e3},
"damping": {ARM_JOINTS: 1e2, BODY_JOINTS: 1e4, HEAD_JOINTS: 1e2},
"max_effort": {ARM_JOINTS: 1e5, BODY_JOINTS: 1e10, HEAD_JOINTS: 1e5},
}
drive_pros = JointDrivePropertiesCfg(**joint_params)
Expand Down
4 changes: 2 additions & 2 deletions embodichain/lab/sim/robots/franka_panda.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,8 @@ def _build_defaults(self, init_dict: dict | None = None) -> None:
"fr3_finger_joint[1-2]": 1e3,
},
damping={
"fr3_joint[1-7]": 1e3,
"fr3_finger_joint[1-2]": 1e2,
"fr3_joint[1-7]": 1e2,
"fr3_finger_joint[1-2]": 2e1,
},
max_effort={
"fr3_joint[1-7]": 1e5,
Expand Down
13 changes: 12 additions & 1 deletion embodichain/lab/sim/robots/ur_robot.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,17 @@
"ur10e": 330.0,
}

# The qpos-only 60 Hz tracking qualification covers UR10e. Keep the established
# damping for other UR variants until they receive the same qualification.
_UR_DEFAULT_DAMPING: Dict[str, float] = {
"ur3": 1e3,
"ur3e": 1e3,
"ur5": 1e3,
"ur5e": 1e3,
"ur10": 1e3,
"ur10e": 1e2,
}


@configclass
class URRobotCfg(RobotCfg):
Expand Down Expand Up @@ -141,7 +152,7 @@ def _build_defaults(self, init_dict: dict | None = None) -> None:

self.drive_pros = JointDrivePropertiesCfg(
stiffness={"arm": 1e4},
damping={"arm": 1e3},
damping={"arm": _UR_DEFAULT_DAMPING[robot_type]},
max_effort={"arm": _UR_MAX_EFFORT[robot_type]},
)

Expand Down
Loading
Loading