Skip to content

Version 1.0 - #25

Open
jgillick wants to merge 30 commits into
mainfrom
v1.0
Open

Version 1.0#25
jgillick wants to merge 30 commits into
mainfrom
v1.0

Conversation

@jgillick

@jgillick jgillick commented Aug 23, 2026

Copy link
Copy Markdown
Owner

This is a major version that cleans up some syntax and removes deprecated items. See the UPGRADE.md file for the full instructions on upgrading your environments.

List of changes in this branch, and pending work planned for v1.0:

  • BREAKING: Requires Genesis World 1.3.0+
  • Add velocity action manager and wheeled robot example
  • Remove deprecated params
  • Refactor how MDP functions and param syntax.
  • Remove *_attr params
  • Add unit test coverage
  • Added imu_projected_gravity observation
  • A 4-wheel robot as the wheeled_robot example.
  • Added angular velocity to the velocity command debug indicators
    Screenshot 2026-09-04 at 5 20 41 PM
  • Fix envs_idx to be a tensor type on all managers and mdp reset functions
  • Fix action delay setup/reset
  • Fix class name type: SkrlEnvWapper -> SkrlEnvWrapper
  • Velocity tracking reward sensitivity can be automatically derived from the command range
  • A robot with ultrasonic range sensors
  • Position manager
  • Rewards for target position
  • Add support for list of entities to contact manager
  • Action managers can drive several joints from one action
  • NOTE: Fixed a bug to clear previous step values (observations, terminations, actions, etc) on reset. Your environment might need to enable obs_normalization=True if they stop reaching convergence after this change.
  • Fix: Observation noise is applied before scaling

MDP Functions (rewards, terminations, observations, entity resets)

This is the biggest change in this version. We're deprecating the params dictionaries in favor of data classes. For example:

Before

RewardManager(
    self,
    cfg={
        "base_height_target": {
            "weight": -50.0,
            "fn": rewards.base_height,
            "params": {
                "target_height": 0.3,
                "entity_attr": "robot",
            },
        },
    }
);

After

RewardManager(
    self,
    cfg={
        "base_height_target": {
            "weight": -50.0,
            "fn": rewards.base_height(
                target_height=0.3, 
                entity_attr="robot"
            ),
        },
    }
);

Note that params are passed directly into base_height. This allows for easier type checking and IDE autocomplete. Before, you'd need to open the mdp function documentation to get the list of params to type into the params dict.

This also changes how you write custom class-based MDP functions. Now they look like this:

@dataclass(kw_only=True, eq=False)
class lin_vel_z_l2(MdpFn):
    entity_manager: EntityManager = None

    def __call__(self, env: GenesisEnv) -> torch.Tensor:
        linear_vel = self.entity_manager.get_linear_velocity()
        return torch.square(linear_vel[:, 2])

jgillick and others added 30 commits August 23, 2026 13:35
* Add angular velocity indicators to the velocity command manager

* Update the wheeled robot to be a 4-wheel system

* Fix envs_idx to torch.Tensor type

* Fix action delay setup/reset

* Fix class name type: SkrlEnvWapper -> SkrlEnvWrapper
Misc typing fixes

* Automatically calculate sensitivity for velocity command rewards

* Add stopped_dof_velocity penalty

* Fix code error

* Update Freenove model and training environment

* Cleanup

* Update stopped_envs in velocity manager to take a threshold.

* More PR feedback/fixes

* Debug mesh builders (#32)
* Update Freenove model and training environment

* Checkpoint

* Fix bugs

* Pose2dCommand

* Cleanup noise and needless constants.

* Cleanup readme, environment and unnecessary meshes

* Fix navigation training

* Remove unused rewards

* Fix: Observation noise is applied before scaling

* Update project settings

* Rename model directory

* Update/fix/run examples

* Update observation example

* Cleanup Pose2DCommand

* Cleanup

* Add pattern name matching utils

* copy edit

* lint trap

* Add pose2d videos
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant