# Bridging the Gap: Simulation Enhancement[#](https://docs.nvidia.com/learning/physical-ai/getting-started-with-isaac-lab/latest/transfer-policies-from-simulation-to-reality/03-bridging-the-gap-simulation-enhancement/index.html.md#bridging-the-gap-simulation-enhancement 'Link to this heading')

## Domain Randomization[#](https://docs.nvidia.com/learning/physical-ai/getting-started-with-isaac-lab/latest/transfer-policies-from-simulation-to-reality/03-bridging-the-gap-simulation-enhancement/index.html.md#domain-randomization 'Link to this heading')

Domain randomization is a key technique for expanding our simulation domain and improving system robustness. Here’s how we implement it:

### Randomize Physical Parameters[#](https://docs.nvidia.com/learning/physical-ai/getting-started-with-isaac-lab/latest/transfer-policies-from-simulation-to-reality/03-bridging-the-gap-simulation-enhancement/index.html.md#randomize-physical-parameters 'Link to this heading')

We modify various physical attributes of our simulated environment:

- Body mass properties of the robot and manipulated objects

- Joint parameters for different movement characteristics

- Friction coefficients between the various surfaces

Note

While link length randomization is possible, it’s challenging to implement effectively with most simulators.

### Randomize Shapes[#](https://docs.nvidia.com/learning/physical-ai/getting-started-with-isaac-lab/latest/transfer-policies-from-simulation-to-reality/03-bridging-the-gap-simulation-enhancement/index.html.md#randomize-shapes 'Link to this heading')

We vary the physical forms in our simulation:

- Terrain variations to expose the robot to different ground conditions

- Object shapes and sizes for grasping tasks, helping the robot learn general concepts rather than specific instances

### Randomize Tasks[#](https://docs.nvidia.com/learning/physical-ai/getting-started-with-isaac-lab/latest/transfer-policies-from-simulation-to-reality/03-bridging-the-gap-simulation-enhancement/index.html.md#randomize-tasks 'Link to this heading')

We introduce variability in how tasks are performed:

- Random initial conditions for robot joint states

- Varied object positions and orientations

- Diverse command sets, such as different target velocities

### Add Perturbations[#](https://docs.nvidia.com/learning/physical-ai/getting-started-with-isaac-lab/latest/transfer-policies-from-simulation-to-reality/03-bridging-the-gap-simulation-enhancement/index.html.md#add-perturbations 'Link to this heading')

To build robustness, we incorporate various disturbances:

- Observation noise, particularly for naturally noisy signals like joint velocities, or data coming from an inertial measurement unit (IMU)

- Physical pushes to develop recovery behaviors