Skip to content
v2.10.3Read the release notes

Train robotsfaster than reality.

Quadrupedal locomotion, learned in 10 seconds. Contact-rich robot physics hundreds of times faster than real time, with photoreal cameras and LiDAR.

An off-road buggy with articulated suspension leaves the start lineSimulated with RaiSim, rendered with rayrai

10 s
to learn quadrupedal locomotion
A walking quadruped trained from scratch with raisimGymTorch and PPO
334×
faster than real time
A full day of ANYmal walking on rough terrain, simulated in 4.3 minutes
25.7×
faster LiDAR than the competition
64-beam spinning LiDAR over a 200 m terrain, for perception in the loop
Free
for academic research
Academic licenses cost nothing, and a one-month trial is free for everyone

Performance

More experience per hour. Faster policies.

Reinforcement learning needs billions of steps. RaiSim's lean solvers give you more of them from the hardware you already have: a quadruped learns to walk in 10 seconds, so you iterate on rewards and controllers while the idea is still fresh.

64 quadrupedsStepping on rough terrain, all in one world

Speedup over the competition

The same robotics workloads on the same machine; higher is better.

log scale
Chain, 10 links3.78×
Chain, 20 links6.96×
ANYmal standing2.56×
ANYmal falling2.61×
ANYmal on heightmap4.81×
Primitive contacts2.36×
Strandbeest2.74×
Heightmap LiDAR25.7×
Ray queries147×
Deformable cloth11.9×

AMD Ryzen 9 3950X, median of three runs, October 2026. The deformable cloth row compares different deformable models. Workloads and method

Perception

Train on images that look real.

rayrai, RaiSim's renderer, turns the running simulation into RGB, depth and LiDAR in the same process, headless on a training server or in a window, with the lighting, weather and materials your robot will meet outside.

Explore rayrai
  • Instancing
  • Wind
  • LOD

Dense foliage

Wind-blown trees and grass that cast real shadows, so outdoor perception sees clutter it will meet in the field.

  • Refraction
  • Ray queries

Glass and refraction

Glass and transparent objects refract light the way a camera sees them, a classic failure case for depth and grasping.

  • Rain
  • Wet materials

Weather

Rain, fog, snow and time of day, for policies that hold up in bad weather.

  • PBR
  • IBL

Photoreal scenes

Cities, forests and warehouses with physically based materials and lighting.

  • Sensors

LiDAR point clouds

Spinning LiDAR that scans the same world the robot walks in, ready for mapping and navigation.

  • Sensors

Depth camera

Depth aligned with the RGB camera, for terrain perception and grasping.

  • Sensors

RGB camera

Robot-mounted cameras rendered headless on a server, with sensor noise.

Hall of fame

Research that ran on RaiSim.

Controllers trained in RaiSim have run a marathon, raced across beach sand and hiked alpine trails. These are the papers in Nature and Science Robotics, and more, whose robots learned in RaiSim.

Nature2026

Get going

A running world in a few lines.

  1. 1Clone raisim2LibThe first CMake configure downloads the matching RaiSim and rayrai binaries.
  2. 2Build the examplesOne CMake build on Linux, macOS or Windows.
  3. 3Run and watchStart the TCP viewer and run any server example next to it.
cpp
#include "raisim/RaisimServer.hpp"
#include "raisim/World.hpp"

int main() {
  raisim::World world;
  world.setTimeStep(0.001);
  world.addGround();

  auto anymal = world.addArticulatedSystem("rsc/anymal_c/urdf/anymal.urdf");
  Eigen::VectorXd q(anymal->getGeneralizedCoordinateDim());
  q << 0, 0, 0.54, 1, 0, 0, 0,
       0.03, 0.4, -0.8, -0.03, 0.4, -0.8, 0.03, -0.4, 0.8, -0.03, -0.4, 0.8;
  anymal->setGeneralizedCoordinate(q);

  // PD control on the 12 leg joints, none on the floating base.
  Eigen::VectorXd kp = Eigen::VectorXd::Zero(18), kd = Eigen::VectorXd::Zero(18);
  kp.tail(12).setConstant(200.0);
  kd.tail(12).setConstant(10.0);
  anymal->setPdGains(kp, kd);
  anymal->setPdTarget(q, Eigen::VectorXd::Zero(18));

  // Stream the world to rayrai_tcp_viewer while it runs.
  raisim::RaisimServer server(&world);
  server.launchServer();
  for (int i = 0; i < 100000; ++i) {
    RS_TIMED_LOOP(1e6 * world.getTimeStep())
    server.integrateWorldThreadSafe();
  }
  server.killServer();
}
python
import time
import raisimpy as raisim

world = raisim.World()
world.setTimeStep(0.001)
world.addGround()
ball = world.addSphere(0.2, 1.0)
ball.setPosition(0.0, 0.0, 1.0)

# Stream the world to rayrai_tcp_viewer while it runs.
server = raisim.RaisimServer(world)
server.launchServer(8080)
for _ in range(10_000):
    server.integrateWorldThreadSafe()
    time.sleep(world.getTimeStep())  # run at roughly real time
server.killServer()

Start training today.

Academic and trial licenses are free. Commercial licenses are per person, per year; three or more include a master key that works on any machine.

RaiSim — physics for robotics and AI.