Dense foliage
Wind-blown trees and grass that cast real shadows, so outdoor perception sees clutter it will meet in the field.
Quadrupedal locomotion, learned in 10 seconds. Contact-rich robot physics hundreds of times faster than real time, with photoreal cameras and LiDAR.
Robot learning
A quadruped learns to walk in 10 seconds. Build environments in C++ or Python, train with PPO in PyTorch, render camera observations headless, and watch any run live, all on the same RaiSim world.
Render camera and LiDAR observations headless for training, or embed photoreal views in your own tools.

Watch a running simulation live, inspect contacts, and pause, step or drag the robot.
Vectorized environments and PPO in PyTorch: quadrupedal locomotion in 10 seconds, tens of billions of steps on one desktop.
The full C++ API from Python with NumPy arrays, for prototyping scenes and controllers.
Performance
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.
The same robotics workloads on the same machine; higher is better.
AMD Ryzen 9 3950X, median of three runs, October 2026. The deformable cloth row compares different deformable models. Workloads and method
Perception
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 rayraiWind-blown trees and grass that cast real shadows, so outdoor perception sees clutter it will meet in the field.
Glass and transparent objects refract light the way a camera sees them, a classic failure case for depth and grasping.
Rain, fog, snow and time of day, for policies that hold up in bad weather.
Cities, forests and warehouses with physically based materials and lighting.
Spinning LiDAR that scans the same world the robot walks in, ready for mapping and navigation.
Depth aligned with the RGB camera, for terrain perception and grasping.
Robot-mounted cameras rendered headless on a server, with sensor noise.
Physics
Legged-robot controllers trained in RaiSim have walked real robots over rough terrain in published research. Hard contacts with friction, closed loops, tracks, deformable soil and granular media are solved together, and the same inputs give the same trajectory, run after run.
Suspension, steering and drive shafts move as one articulated system, with live spring and damper forces.
Tires sink and leave lasting ruts, with the whole contact patch resolved, for off-road and planetary rovers.
Linkage-driven legs and parallel mechanisms: a Strandbeest walks on 36 closed loops from a single crank.
A Shadow Hand from OpenUSD grasps a cube, with many simultaneous contacts for in-hand manipulation.
URDF, MJCF and OpenUSD models load directly, with their meshes and materials.
Tracks are simulated as driven belts, so a flipper robot crosses loose rubble and climbs stairs on contact friction alone.
Hall of fame
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.
RAIBO2 ran a full marathon on one battery charge, in 4 hours 19 minutes.
Lee et al. · KAISTRaibo runs on vertical walls, jumps a 1.3 m gap and crosses stepping stones at 4 m/s.
Kim et al. · KAISTScience Robotics · 2023Raibo runs on soft beach sand at 3.03 m/s, its feet buried at every step.
Choi et al. · KAISTScience Robotics · 2022ANYmal fuses vision and proprioception with zero falls in alpine, forest, underground and urban terrain.
Miki et al. · ETH Zurich, KAIST and IntelScience Robotics · 2020Without vision, ANYmal trots through mud, sand, rubble, thick vegetation, snow and running water.
Lee et al. · ETH Zurich, KAIST and IntelScience Robotics · 2019ANYmal runs faster than ever before and recovers from falls, with policies trained in simulation.
Hwangbo et al. · ETH Zurich and IntelCapabilities
Get going
#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();
}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.