Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Heuristic:Isaac sim IsaacGymEnvs Factory Velocity Limits

From Leeroopedia
Knowledge Sources
Domains Robotics, Simulation
Last Updated 2026-02-15 09:00 GMT

Overview

Reduce Franka robot maximum velocity limits from defaults (1000.0 linear, 64.0 angular) to conservative values (1.0 linear, 2pi angular) to prevent CUDA errors in contact-rich Factory and IndustReal tasks.

Description

The default IsaacGym asset options allow very high maximum velocities (1000.0 m/s linear, 64.0 rad/s angular). In contact-rich manipulation tasks like Factory nut-bolt assembly and IndustReal peg insertion, these defaults cause the PhysX GPU solver to produce CUDA errors when rigid bodies achieve extreme velocities during contact events. Both `factory_base.py` and `industreal_base.py` explicitly override these defaults with conservative limits.

Usage

Apply this heuristic when creating contact-rich manipulation tasks, especially those involving tight-tolerance assembly operations (nut-bolt, peg-hole insertion, gear meshing). The reduced velocity limits prevent the PhysX GPU solver from encountering numerical instability during high-force contact events. This is particularly important when training policies that may apply large forces during exploration.

The Insight (Rule of Thumb)

  • Action: Set `max_linear_velocity = 1.0` and `max_angular_velocity = 2 * math.pi` on Franka robot asset options.
  • Value: Linear: 1.0 m/s (down from 1000.0 default). Angular: ~6.28 rad/s (down from 64.0 default).
  • Trade-off: Policies cannot command extremely fast motions, which limits aggressive exploration but prevents simulation crashes. The reduced limits are still well above realistic robot velocities.
  • Additional Control: Factory also clamps applied torques to +-100 Nm in the control module (`factory_control.py`).

Reasoning

During early RL training, exploration noise and random actions can cause the simulated robot to accelerate to extreme velocities, especially in contact-rich scenarios. When a rigid body reaches the PhysX solver's numerical limits, it triggers CUDA device-side assertion errors that crash the training process. The reduced velocity limits act as a physics-level safety constraint, capping velocities before the solver encounters numerical issues.

From `factory_base.py:124-126`:

franka_options.max_linear_velocity = 1.0
    # default = 1000.0; reduced to prevent CUDA errors
franka_options.max_angular_velocity = 2 * math.pi
    # default = 64.0; reduced to prevent CUDA errors

Same pattern in `industreal_base.py:123-131`:

franka_options.max_linear_velocity = 1.0
    # default = 1000.0; reduced to prevent CUDA errors
franka_options.max_angular_velocity = (2 * math.pi
    # default = 64.0; reduced to prevent CUDA errors

Torque clamping in `factory_control.py:174`:

torch.clamp(dof_torque, min=-100.0, max=100.0)

Additional numerical stability concern in `factory_control.py:387`:

# NOTE: Susceptible to undesirable behavior due to divide-by-zero

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment