feat: add knowledge-driven joint design studio

This commit is contained in:
Jerry
2026-08-14 13:53:51 +08:00
parent 7d12459a32
commit 281afdfd9e
57 changed files with 269659 additions and 1152 deletions
@@ -0,0 +1,15 @@
{
"schema_version": "1.0",
"id": "relation.alignment.coaxial",
"version": "1.0.0",
"relation_type": "coaxial",
"endpoint_rules": {
"source_port": "port.rotation.coaxial",
"target_port": "port.reference.axis",
"axis_relation": "coincident"
},
"constraint_rules": ["axes_parallel", "axis_distance_within_tolerance"],
"kinematic_effect": null,
"capability_refs": ["capability.validation.coaxial"],
"maturity": "production"
}
@@ -0,0 +1,18 @@
{
"schema_version": "1.0",
"id": "relation.joint.fixed",
"version": "1.0.0",
"relation_type": "fixed",
"endpoint_rules": {
"source_port": "port.rotation.coaxial",
"target_port": "port.mount.stationary",
"axis_relation": "mechanism_defined"
},
"constraint_rules": ["one_endpoint_is_grounded", "fixed_speed_is_zero"],
"kinematic_effect": {"equation": "omega_source = omega_target = 0"},
"capability_refs": [
"capability.kinematics.graph",
"capability.validation.fixed"
],
"maturity": "production"
}
@@ -0,0 +1,15 @@
{
"schema_version": "1.0",
"id": "relation.joint.revolute",
"version": "1.0.0",
"relation_type": "revolute_joint",
"endpoint_rules": {
"source_port": "port.joint.revolute",
"target_port": "port.joint.revolute",
"axis_relation": "coaxial_local"
},
"constraint_rules": ["joint_axis_defined", "carrier_pin_orbit_matches_layout"],
"kinematic_effect": null,
"capability_refs": ["capability.validation.revolute_joint"],
"maturity": "production"
}
@@ -0,0 +1,18 @@
{
"schema_version": "1.0",
"id": "relation.joint.rigid",
"version": "1.0.0",
"relation_type": "rigid",
"endpoint_rules": {
"source_port": "port.rotation.coaxial",
"target_port": "port.rotation.coaxial",
"axis_relation": "coaxial"
},
"constraint_rules": ["axes_coaxial", "angular_speeds_equal", "torque_capacity_compatible"],
"kinematic_effect": {"equation": "omega_source = omega_target"},
"capability_refs": [
"capability.kinematics.graph",
"capability.validation.rigid"
],
"maturity": "production"
}
@@ -0,0 +1,26 @@
{
"schema_version": "1.0",
"id": "relation.mesh.external_cylindrical",
"version": "1.0.0",
"relation_type": "external_mesh",
"endpoint_rules": {
"source_port": "port.mesh.external_cylindrical",
"target_port": "port.mesh.external_cylindrical",
"axis_relation": "parallel"
},
"constraint_rules": [
"equal_module",
"equal_pressure_angle",
"equal_tooth_form",
"spur_or_opposite_helical_hand",
"center_distance_equals_pitch_radius_sum"
],
"kinematic_effect": {
"equation": "(omega_source-omega_carrier)*z_source + (omega_target-omega_carrier)*z_target = 0"
},
"capability_refs": [
"capability.kinematics.graph",
"capability.validation.external_mesh"
],
"maturity": "production"
}
@@ -0,0 +1,26 @@
{
"schema_version": "1.0",
"id": "relation.mesh.internal_cylindrical",
"version": "1.0.0",
"relation_type": "internal_mesh",
"endpoint_rules": {
"source_port": "port.mesh.internal_cylindrical",
"target_port": "port.mesh.external_cylindrical",
"axis_relation": "parallel"
},
"constraint_rules": [
"equal_module",
"equal_pressure_angle",
"equal_tooth_form",
"spur_or_same_helical_hand",
"center_distance_equals_pitch_radius_difference"
],
"kinematic_effect": {
"equation": "(omega_source-omega_carrier)*z_source - (omega_target-omega_carrier)*z_target = 0"
},
"capability_refs": [
"capability.kinematics.graph",
"capability.validation.internal_mesh"
],
"maturity": "production"
}