Installation
Installing Isaac Lab, and then subsequently installing Stripe Kit, can be a daunting task. That’s why this guide will walk you through the process step-by-step.
Create a Virtual Environment
You are going to want to have a virtual environment for this. Trust me, the package bloat is real and a pain to manage. While normally, personally, we consider Conda to be overkill, here it’s also necessary. So let’s create a conda environment:
conda create -p ~/env_isaaclab python=3.10
conda activate ~/env_isaaclab
Now we have to install Isaac Lab. Unfortunately, since Isaac Lab isn’t on the normal PyPI, we have to run a separate command for this:
pip install isaaclab[isaacsim,all] --extra-index-url https://pypi.nvidia.com
Wonderful. Now we are going to have a problem though, where static analyzers won’t like this setup one bit. To alleviate that issue, run the following commands:
conda develop ~/env_isaaclab/lib/python3.10/site-packages/isaaclab/source/isaaclab
conda develop ~/env_isaaclab/lib/python3.10/site-packages/isaaclab/source/isaaclab_tasks
conda develop ~/env_isaaclab/lib/python3.10/site-packages/isaaclab/source/isaaclab_rl
conda develop ~/env_isaaclab/lib/python3.10/site-packages/isaaclab/source/isaaclab_assets
This will create necessary symlinks for the packages to be recognized by the Python interpreter, during development in your IDE.
Install STRIPE-kit
This step is actually fairly straightforward. We will use pip to install the Stripe Kit package:
pip install stripe_kit
However, there’s nothing stopping you from installing it from the git repo directly:
pip install git+https://github.com/GrafCzterech/STRIPE-kit.git
Test
First, let’s test if IsaacSim actually works:
isaacsim
Then, we are going to need to have a ready to use Isaac Lab script. In order to test that we can simulate things, here’s a very simple one:
from isaaaclab.app import AppLauncher
import argparse
parser = argparse.ArgumentParser(
description="Basic scene loading"
)
AppLauncher.add_app_launcher_args(parser)
args_cli = parser.parse_args()
simulation_app = AppLauncher(args_cli).app
from isaaclab.scene import InteractiveScene, InteractiveSceneCfg
from isaaclab.sim import SimulationContext, SimulationCfg
from isaaclab_assets.robots.spot import SPOT_CFG
def run_simulation(sim: SimulationContext, scene: InteractiveScene) -> None:
"""Function to run a simulation.
Pretty basic as of now.
Args:
sim (sim_utils.SimulationContext): Simulation Context as defined by Isaac Lab
scene (InteractiveScene): Scene generated from NFL Interface config class
"""
sim_dt = sim.get_physics_dt()
sim.pause()
while simulation_app.is_running():
scene.write_data_to_sim()
sim.step()
scene.update(sim_dt)
if __name__ == "__main__":
# Simulation Context initialization
sim_cfg = SimulationCfg(device=args_cli.device)
sim = SimulationContext(sim_cfg)
print("Simulation context initialized")
# Camera setting
sim.set_camera_view((0.0, 0.0, 5.0), (1.0, 1.0, 4.0))
# Scene generation
my_scene_cfg = InteractiveSceneCfg(1, 0.0)
print("Scene generated")
my_scene = InteractiveScene(my_scene_cfg)
# Reset simulation context - required by Isaac Lab
sim.reset()
# Run scene
print("Setup completed!") # Yipeee! Cola trinken!
run_simulation(sim, my_scene)
simulation_app.close()
Assuming it’s saved as sim.py, we can run it using the following command:
python3 sim.py
You can launch Isaac Lab / Sim integrating scripts in a multitude of ways, however, the one which we have found the easiest is to have each script launch Isaac Lab, as it’s done in the script above. Be sure to manage import accordingly however, modules such as: isaaclab, isaacsim, gymnasium, skrl, pxr will not be importable, as long as there isn’t a running instance of Isaac Lab. Since stripe_kit uses these imports to provide type hints, you should only import stripe_kit after you have a running instance of the simulation.
Getting video out of Isaac Lab may be tricky. Especially if you are doing your work on a remote machine, like a computing cluster. For those use-cases Nvidia has developed a streamer called “Isaac Sim WebRTC Streaming Client”. You can find more information about it here. To allow the WebRTC client to work, you will need to pass proper arguments to isaacsim, like it is done in the following example:
python3 sim.py --headless --livestream 2
–headless option disables video output, and –livestream 2 enables WebRTC streaming output. Not passing any livestream option will result in a silent crash, which we know because we spent an ungodly amount of time debugging it.