def modify_config_for_default_low_dim_exp(config):
    """
    Modifies a Config object with experiment, training, and observation settings that
    were used across all low-dimensional experiments by default.

    Args:
        config (Config instance): config to modify
    """

    with config.experiment.values_unlocked():
        # save model during every evaluation (every 50 epochs)
        config.experiment.save.enabled = True
        config.experiment.save.every_n_epochs = 50

        # every epoch is 100 gradient steps, and validation epoch is 10 gradient steps
        config.experiment.epoch_every_n_steps = 100
        config.experiment.validation_epoch_every_n_steps = 10

        # do 50 evaluation rollouts every 50 epochs
        # NOTE: horizon will generally get set depending on the task and dataset type
        config.experiment.rollout.enabled = True
        config.experiment.rollout.n = 50
        config.experiment.rollout.horizon = 400
        config.experiment.rollout.rate = 50
        config.experiment.rollout.warmstart = 0
        config.experiment.rollout.terminate_on_success = True

    with config.train.values_unlocked():
        # assume entire dataset can fit in memory
        config.train.num_data_workers = 0
        config.train.hdf5_cache_mode = "all"

        # batch size 100 and 2000 training epochs
        config.train.batch_size = 100
        config.train.num_epochs = 2000

    with config.observation.values_unlocked():
        # default observation is eef pose, gripper finger position, and object information,
        # all of which are low-dim. 
        default_low_dim_obs = [
            "robot0_eef_pos", 
            "robot0_eef_quat", 
            "robot0_gripper_qpos", 
            "object",
        ]
        # handle hierarchical observation configs
        if config.algo_name == "hbc":
            configs_to_set = [
                config.observation.actor.modalities.obs,
                config.observation.planner.modalities.obs,
                config.observation.planner.modalities.subgoal,
            ]
        elif config.algo_name == "iris":
            configs_to_set = [
                config.observation.actor.modalities.obs,
                config.observation.value_planner.planner.modalities.obs,
                config.observation.value_planner.planner.modalities.subgoal,
                config.observation.value_planner.value.modalities.obs,
            ]
        else:
            configs_to_set = [config.observation.modalities.obs]
        # set all observations / subgoals to use the correct low-dim modalities
        for cfg in configs_to_set:
            cfg.low_dim = list(default_low_dim_obs)
            cfg.rgb = []

    return config