direct and residual movement inconsistency fixed
This commit is contained in:
+13
-5
@@ -33,11 +33,12 @@ def main():
|
||||
use_gui=args.gui,
|
||||
random_command=False,
|
||||
max_episode_steps=args.max_steps_per_episode,
|
||||
robot_mode="direct"
|
||||
)
|
||||
|
||||
# Multi-Phase Configurations Suite
|
||||
phase_configs = [
|
||||
(CurriculumPhase.STAND_ONLY, "STAND", np.array([0.0, 0.0, 0.0], dtype=np.float32)),
|
||||
#(CurriculumPhase.STAND_ONLY, "STAND", np.array([0.0, 0.0, 0.0], dtype=np.float32)),
|
||||
(CurriculumPhase.FORWARD, "FORWARD GAIT", np.array([1.0, 0.0, 0.0], dtype=np.float32)),
|
||||
(CurriculumPhase.TURN_AND_DIRECTION, "FORWARD + YAW TURN", np.array([0.5, 0.0, 0.4], dtype=np.float32)),
|
||||
(CurriculumPhase.OMNI_DIRECTION, "STRIDE LATERAL", np.array([0.5, 0.5, 0.0], dtype=np.float32)),
|
||||
@@ -62,9 +63,18 @@ def main():
|
||||
for ep in range(args.episodes_per_phase):
|
||||
obs, _ = env.reset()
|
||||
|
||||
# Force environment into active curriculum phase and lock command
|
||||
# Force environment into active curriculum phase and lock command BEFORE getting obs
|
||||
env.curriculum_phase = phase_enum
|
||||
env.command = test_cmd.copy()
|
||||
cmd_vx, cmd_vy, cmd_omega = test_cmd
|
||||
env.robot.robot_state = (
|
||||
"walking"
|
||||
if (abs(cmd_vx) > 0.01 or abs(cmd_vy) > 0.01 or abs(cmd_omega) > 0.01)
|
||||
else "idle"
|
||||
)
|
||||
env.robot.vector_dirmov = [float(cmd_vx), float(cmd_vy), float(cmd_omega)]
|
||||
|
||||
# Get correct observation with test_cmd attached
|
||||
obs = env._get_obs()
|
||||
|
||||
done = False
|
||||
@@ -72,12 +82,10 @@ def main():
|
||||
steps = 0
|
||||
|
||||
while not done:
|
||||
# Enforce locked command each step
|
||||
env.command = test_cmd.copy()
|
||||
|
||||
# Predict deterministic action from policy
|
||||
action, _ = model.predict(obs, deterministic=True)
|
||||
|
||||
# Step environment
|
||||
obs, reward, terminated, truncated, _ = env.step(action)
|
||||
done = terminated or truncated
|
||||
|
||||
|
||||
Reference in New Issue
Block a user