Learning Goal-Directed Object Pushing in Cluttered Scenes with Location-Based Attention
| Paper | Video |
Authors: Nils Dengler*, Juan Del Aguila Ferrandis*, João Moura, Sethu Vijayakumar, and Maren Bennewitz (*equal contribution)
This repository contains the implementation of our method from our IROS 2025 paper Learning Goal-Directed Object Pushing in Cluttered Scenes With Location-Based Attention.
Work in Progress: This repository will be regularly updated with new features and improvements.
Our framework learns goal-directed object pushing using a location-based attention module:
- We represent the clutter in the environment with an occupancy grid map.
- This map is fed to the RL agent along with object and target poses, and the pusher's position.
- We extract features from the cluttered scene via a location-based attention module.
The PushingClutterTask in pushing_gym/tasks/pushing_clutter.py is a reinforcement learning simulation environment designed for goal-directed object pushing in cluttered scenes using Isaac Sim.
It features domain randomization and synthetic observation noise to robustly train agents that can be zero-shot deployed in hardware.
The environment consists of a table surface, a pusher that is controlled by the RL policy, a movable box, static obstacles, and a visual target.
Observations combine spatial grid representations with precise pose information, while the reward structure encourages accurate placement of the box at the target location.
This project uses Docker for environment consistency. To run:
- Install Docker.
- Clone this repository.
- Run the appropriate script below.
- If you encounter issues, please open an issue.
We provide two modes:
# Outside Docker
./docker_run_bash.sh
# Inside Docker
./docker_train.sh# Outside Docker
./docker_run.shNote: The initial setup may take up to 5 minutes as Isaac Sim is reconfigured each time. To avoid this delay, you may install Isaac Sim locally (no detailed support provided).
By default, training runs in headless mode (no visualization). Our reinforcement learning implementation leverages the SKRL library. The training can be customized with:
-
Enable visualization:
Setheadless=Falseinpushing_gym/docker_train.sh. -
Weights & Biases (Wandb):
Set your API keyWANDB_API_KEY=YOUR_KEYindocker_run.sh: -
SKRL & Isaac Sim parameters:
Editpushing_gym/cfg/config.yaml. Important parameters:num_envs: Number of parallel Isaac Sim environments (1440 in the paper).seed: Seed used for training.max_iterations: Max training iterations (set to empty string for infinite).checkpoint: Path for saving model checkpoints.
-
Training parameters:
Editpushing_gym/cfg/general_training_config.yaml:train_model:trueto train,falseto evaluate.save_experiment: Save models and enable Wandb logging.use_wandb,wandb_entity,wandb_project,wandb_run: Wandb settings.experiment_name: Custom name for this training run.load_model: Load a pretrained model for further training.load_model_path: path to the model to evaluate or to fine-tune.- Default path:
/workspace/pushing-gym/pushing_gym/trained_model/demo_agent.pt
- Default path:
rollout_size,mini_batches:num_envsmust be divisible bymini_batches.
- Install Omniverse Isaac Sim.
- Install OmniIsaacGymEnvs.
- (Optional) Install Weights & Biases for tracking.
- In the
skrldirectory, install the library:
~/.local/share/ov/pkg/isaac_sim-*/python.sh -m pip install .["torch"]- In the
pushing_gymdirectory, install the library:
~/.local/share/ov/pkg/isaac_sim-*/python.sh -m pip install -e .- Start training:
./local_train.sh- To enable visualization, set
headless=Falseinlocal_train.sh. (Not recommended for training due to slower performance.)
If you find this project useful, please cite our paper as:
@inproceedings{dengler2025learning,
title={Learning Goal-Directed Object Pushing in Cluttered Scenes with Location-Based Attention},
author={Dengler, Nils and {Del Aguila Ferrandis}, Juan and Moura, Jo{\~a}o and Vijayakumar, Sethu and Bennewitz, Maren},
booktitle={Proc. of the IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS)},
year={2025}
}

