Software
RaiSim
RaiSim is a high-speed, super-precise physics engine crafted by RaiSim Tech Inc., designed specifically for simulating robots. But it’s more than just a robot simulator! You can use RaiSim to simulate any kind of rigid body with excellent efficiency.
Why should you use RaiSim?
Speed: RaiSim has been benchmarked against other physics engines, and it’s super fast! Check out the benchmark here [1]
Accuracy: There’s a bunch of papers that highlight just how precise RaiSim can be. Take a look at these academic works for more details: [2, 3, 4, 5, 6].
Ease of Use: RaiSim is the easiest C++ simulation library to pick up and use!
Minimal Dependencies: RaiSim only depends on STL and Eigen, so there’s less things for you to worry about.
System Requirements
Linux: We suggest using Ubuntu 20.04 or higher. Make sure your X86 CPU supports AVX2 instructions (Intel Haswell or newer).
Windows 10: You’ll need Visual Studio 2019 or newer. Only X86 CPUs are supported.
Mac: Keep your OS up to date! Your system needs to support the AVX2 instruction set. Both M1 (Apple ARM) and X86 systems are okay.
Example Code
Here’s a quick taste of how you can use RaiSim to simulate a world with a robot and a ball. You can visualize this using RaiSim’s Unity or Unreal tools.
#include “raisim/World.hpp”
#include "raisim/RaisimServer.hpp"
int main() {
// Set your activation key
raisim::World::setActivationKey("PATH_TO_THE_ACTIVATION_KEY");
// Create a new world
raisim::World world;
// Add a robot
auto anymal = world.addArticulatedSystem(PATH_TO_URDF);
// Add a ball
auto ball = world.addSphere(1, 1);
// Add the ground
auto ground = world.addGround();
// Set the time step for the simulation
world.setTimeStep(0.002);
// Launch RaiSim server for visualization
raisim::RaisimServer server(&world);
server.launchServer();
// Loop the simulation
while (1) {
raisim::MSLEEP(2);
server.integrateWorldThreadSafe();
}
// Terminate the server
server.killServer();
}
And here’s a simple CMake file to compile the above code:
cmake_minimum_required(VERSION 3.10)
project(raisim_examples LANGUAGES CXX)
find_package(raisim CONFIG REQUIRED)
find_package(Eigen3 REQUIRED)
include_directories (${EIGEN3_INCLUDE_DIRS})
add_executable(APP_NAME ${file_name})
target_link_libraries(APP_NAME PUBLIC raisim::raisim pthread)
target_include_directories(APP_NAME PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
Want to see it in action? You can find a working example here!