chore: remove distance to target from model input
This commit is contained in:
parent
33fbc4c96f
commit
49f5874035
3 changed files with 5 additions and 5 deletions
|
|
@ -16,8 +16,7 @@ Global inputs, always broadcasted to all nodes:
|
||||||
$$
|
$$
|
||||||
tilt = sqrt(roll^2 + pitch^2)
|
tilt = sqrt(roll^2 + pitch^2)
|
||||||
$$
|
$$
|
||||||
- Goal vector: Instead of just a scalar distance, the goal is represented asa a vector (distance and ange/direction) to
|
- Goal vector: Instead of just a scalar distance, the goal is represented as an angle/direction to the target.
|
||||||
the target.
|
|
||||||
|
|
||||||
Local inputs, routed directly to specific nodes:
|
Local inputs, routed directly to specific nodes:
|
||||||
|
|
||||||
|
|
@ -70,6 +69,10 @@ When designing the state space, we must ask: *Could a human operator perform thi
|
||||||
as a normalized unit vector bounds the values to the $[-1, 1]$ range, which stabilizes neural network training.
|
as a normalized unit vector bounds the values to the $[-1, 1]$ range, which stabilizes neural network training.
|
||||||
Providing only a scalar "distance to the goal" would force the agent to learning localized searching behaviors (e.g.
|
Providing only a scalar "distance to the goal" would force the agent to learning localized searching behaviors (e.g.
|
||||||
random walks or spiraling) to deduce the direction, drastically increasing the difficulty of the learning task.
|
random walks or spiraling) to deduce the direction, drastically increasing the difficulty of the learning task.
|
||||||
|
|
||||||
|
**NOTE:** We later dropped the "distance to vector", switching to only a direction as the input. Our reasoning is
|
||||||
|
the agent should always move towards the goal (it should not learn to stop at the goal), which allows for this
|
||||||
|
simplification that decreases the model input size.
|
||||||
- Contact sensors: Segment contact detects external ground interaction and is biologically vital for timing gait
|
- Contact sensors: Segment contact detects external ground interaction and is biologically vital for timing gait
|
||||||
transitions.
|
transitions.
|
||||||
- **Zero-Centered Rescaling ($[-1, 1]$):** Using a zero-centered range is standard best practice for continuous control
|
- **Zero-Centered Rescaling ($[-1, 1]$):** Using a zero-centered range is standard best practice for continuous control
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,6 @@ class ObservationBoundsConfig:
|
||||||
joint_actuator_force: list[float] = field(default_factory=lambda: [-5.0, 5.0])
|
joint_actuator_force: list[float] = field(default_factory=lambda: [-5.0, 5.0])
|
||||||
segment_contact: list[float] = field(default_factory=lambda: [0.0, 1.0])
|
segment_contact: list[float] = field(default_factory=lambda: [0.0, 1.0])
|
||||||
unit_xy_direction_to_target: list[float] = field(default_factory=lambda: [-1.0, 1.0])
|
unit_xy_direction_to_target: list[float] = field(default_factory=lambda: [-1.0, 1.0])
|
||||||
xy_distance_to_target: list[float] = field(default_factory=lambda: [0.0, 20.0])
|
|
||||||
disk_z_tilt: list[float] = field(default_factory=lambda: [0.0, 3.141592653589793])
|
disk_z_tilt: list[float] = field(default_factory=lambda: [0.0, 3.141592653589793])
|
||||||
|
|
||||||
def to_bounds_dict(self) -> dict[str, tuple[float, float]]:
|
def to_bounds_dict(self) -> dict[str, tuple[float, float]]:
|
||||||
|
|
@ -82,6 +81,5 @@ class ObservationBoundsConfig:
|
||||||
"joint_actuator_force": tuple(self.joint_actuator_force),
|
"joint_actuator_force": tuple(self.joint_actuator_force),
|
||||||
"segment_contact": tuple(self.segment_contact),
|
"segment_contact": tuple(self.segment_contact),
|
||||||
"unit_xy_direction_to_target": tuple(self.unit_xy_direction_to_target),
|
"unit_xy_direction_to_target": tuple(self.unit_xy_direction_to_target),
|
||||||
"xy_distance_to_target": tuple(self.xy_distance_to_target),
|
|
||||||
"disk_z_tilt": tuple(self.disk_z_tilt),
|
"disk_z_tilt": tuple(self.disk_z_tilt),
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,6 @@ def create_obs_processor(
|
||||||
"joint_velocity",
|
"joint_velocity",
|
||||||
"segment_contact",
|
"segment_contact",
|
||||||
"unit_xy_direction_to_target",
|
"unit_xy_direction_to_target",
|
||||||
"xy_distance_to_target",
|
|
||||||
]
|
]
|
||||||
values = []
|
values = []
|
||||||
for key in ordered_keys:
|
for key in ordered_keys:
|
||||||
|
|
|
||||||
Reference in a new issue