diff --git a/dimos/robot/unitree/g1/manip_config.py b/dimos/robot/unitree/g1/manip_config.py index 89681b6c8c..ad795c9ac0 100644 --- a/dimos/robot/unitree/g1/manip_config.py +++ b/dimos/robot/unitree/g1/manip_config.py @@ -53,6 +53,7 @@ def _urdf_joint_name(coordinator_name: str) -> str: {_urdf_joint_name(joint_name): joint_name for joint_name in _G1_TELEOP_MODEL_JOINTS} ) .with_fixed_joints(*(_urdf_joint_name(name) for name in G1_WAIST_JOINTS)) + .with_default_joint_acceleration_limit(2.0) ) diff --git a/dimos/robot/unitree/g1/test_g1_teleop.py b/dimos/robot/unitree/g1/test_g1_teleop.py index 8050133cbd..b264280339 100644 --- a/dimos/robot/unitree/g1/test_g1_teleop.py +++ b/dimos/robot/unitree/g1/test_g1_teleop.py @@ -29,6 +29,7 @@ from dimos.control.tasks.trajectory_task.trajectory_task import JOINT_TRAJECTORY_TASK_NAME from dimos.control.teleop_coordinator import TeleopControlCoordinator from dimos.core.coordination.blueprints import Blueprint +from dimos.manipulation.planning.spec.validation import prepare_robot_model from dimos.manipulation.visualization.viser.config import ViserVisualizationConfig from dimos.robot.unitree.g1.blueprints.basic.unitree_g1_groot_wbc import ( _G1_TELEOP_MODEL, @@ -82,6 +83,12 @@ def test_g1_blueprint_uses_shared_bimanual_teleop_task() -> None: assert task.params["max_joint_velocity_rad_s"] == pytest.approx(np.deg2rad(120.0)) +@pytest.mark.self_hosted +def test_g1_teleop_model_passes_planning_validation() -> None: + """The coordinator prepares this model at start; missing limits raise here.""" + assert prepare_robot_model(_G1_TELEOP_MODEL).joint_space + + def test_g1_blueprint_keeps_bounded_trajectory_path_below_teleop() -> None: coordinator = next( atom