Implementation:ARISE Initiative Robosuite WipeArena
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, MJCF_Modeling |
| Last Updated | 2026-02-15 07:00 GMT |
Overview
WipeArena is a specialized table arena that generates visual dirt markers on the table surface for table-wiping tasks in robosuite.
Description
The WipeArena class extends TableArena to create a workspace containing an empty table with randomly placed visual dirt markers on its surface. These markers simulate dirt particles that a robot must wipe away during wiping task environments. The dirt markers are arranged along procedurally generated paths on the table surface, with configurable parameters for path width, coverage, and clustering.
The arena supports two modes of dirt placement: a single continuous dirt path, or two separate clusters (enabled via the two_clusters parameter) each containing half the total number of markers. Dirt paths are generated using a random walk algorithm that samples start positions within the table's coverage area and then incrementally extends the path with small steps, occasionally changing direction. Positions are constrained to remain within the table boundaries.
The class also provides a reset_arena method that allows dynamic repositioning of all visual markers during simulation runtime. This is essential for episodic reinforcement learning, where the dirt layout must be randomized at the start of each episode. The method directly modifies MuJoCo simulation model data to update body positions and geom visibility.
Usage
Use WipeArena when building table-wiping task environments where a robot arm must sweep or wipe dirt particles off a table surface. It is the arena component of the Wipe environment in robosuite. Configure num_markers and coverage_factor to control task difficulty.
Code Reference
Source Location
- Repository: ARISE_Initiative_Robosuite
- File: robosuite/models/arenas/wipe_arena.py
Signature
class WipeArena(TableArena):
def __init__(
self,
table_full_size=(0.8, 0.8, 0.05),
table_friction=(0.01, 0.005, 0.0001),
table_offset=(0, 0, 0.8),
coverage_factor=0.9,
num_markers=10,
table_friction_std=0,
line_width=0.02,
two_clusters=False,
rng=None,
):
Import
from robosuite.models.arenas.wipe_arena import WipeArena
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| table_full_size | tuple(3) | No | (L, W, H) full dimensions of the table. Default: (0.8, 0.8, 0.05) |
| table_friction | tuple(3) | No | (sliding, torsional, rolling) friction parameters. Default: (0.01, 0.005, 0.0001) |
| table_offset | tuple(3) | No | (x, y, z) offset from center of arena for table placement. Default: (0, 0, 0.8) |
| coverage_factor | float | No | Fraction of table area sampled for dirt placement. Default: 0.9 |
| num_markers | int | No | Number of dirt (peg) particles to generate. Default: 10 |
| table_friction_std | float | No | Standard deviation for peg friction sampling. Default: 0 |
| line_width | float | No | Diameter of the dirt path trace. Default: 0.02 |
| two_clusters | bool | No | If True, generates two separate dirt paths with half markers each. Default: False |
| rng | numpy.random.Generator | No | Random number generator instance. Default: None (creates new default_rng) |
Outputs
| Name | Type | Description |
|---|---|---|
| WipeArena instance | WipeArena | Arena object with visual dirt markers placed on the table surface |
| markers | list[CylinderObject] | List of visual cylinder objects representing dirt particles |
Usage Examples
from robosuite.models.arenas.wipe_arena import WipeArena
# Create a wipe arena with default settings
arena = WipeArena()
# Create a wipe arena with more dirt markers and two clusters
arena = WipeArena(
table_full_size=(1.0, 1.0, 0.05),
num_markers=20,
two_clusters=True,
coverage_factor=0.8,
line_width=0.03,
)
# Reset marker positions during simulation
arena.reset_arena(sim)