NOTE: this simulator is retired. It was based on Isaac Sim 2019.2, which used Unreal Engine. We have migrated to the new Omniverse-powered Isaac Sim. See benchbot_sim_omni for details.
This simulator is an extension of the NVIDIA Isaac SDK that establishes ROS communications to a running instance of an Unreal Engine-based NVIDIA Isaac SIM. This simulator is explicitly linked to version 2019.2 of Isaac, the last version with direct support for the Unreal Engine-based simulator. This simulator is retired, as we have moved to the latest Isaac Sim which uses Omniverse. See benchbot_sim_omni for details.
This simulator provides direct access to the following data on a robot, simulated in Unreal Engine. Access is via ROS on the topic provided in brackets:
/camera/color/image_raw
)/camera/color/camera_info
)/camera/depth/image_raw
)/camera/depth/camera_info
)/scan_laser
)/odom
)/tf
)Direct control of the robot is also facilitated via:
/cmd_vel
Please see the note at the top of the page; installation of this Simulator in isolation is generally not what you want!
If you are sure you need to install the simulator in isolation, the following steps should be sufficient. Note there are a significant number of driver & software requirements for your system:
Download version 2019.2 of the Isaac SDK from the NVIDIA site. If creating your own environments, also download version 2019.2 of Isaac SIM (not NavSim). You will have to create / sign in to an NVIDIA developer account, and look in the "Archive" drop down for version 2019.2.
Either setup your system with Isaac SIM, or download our environments:
a) Follow the install instructions for Isaac SIM 2019.2 to get Unreal Engine (through IsaacSimProject) running on your system. You will have to link Epic Games to your Github account to get access.
b) Download our latest environments: Isaac Development Environments, and Isaac Challenge Environments
Install the Isaac SDK by following the instructions here.
Clone these simulator wrapper, apply our patches to the installed Isaac SDK, & build the simulator using the Bazel wrapper script (ensure the environment variable ISAAC_SDK_PATH
is set to where you installed Isaac SDK):
u@pc:~$ git clone https://github.com/qcr/benchbot_sim_unreal && cd benchbot_sim_unreal
u@pc:~$ .isaac_patches/apply_patches
u@pc:~$ ./bazelros build //apps/benchbot_simulator
This simulator interface is run alongside a running Isaac Unreal Engine Simulator. To get both components running:
Start the Unreal Engine Simulator, either via our precompiled environments or the IsaacSimProject Unreal Editor:
u@pc:~$ ./IsaacSimProject <map_name> \
-isaac_sim_config_json='<path_to_isaac>/apps/carter/carter_sim/bridge_config/carter_full.json' \
-windowed -ResX=960 -ResY=540 -vulkan -game
Launch this simulator's Isaac application (you first need to hardcode the pose unfortunately...):
u@pc:~$ START_POSE=<robot_start_pose> \
sed -i "0,/\"pose\":/{s/\(\"pose\": \)\(.*\)/\1$START_POSE}" \
<path_to_isaac>/apps/carter/carter_sim/bridge_config/carter_full_config.json
u@pc:~$ ./bazelros run //apps/benchbot_simulator
At this point you will have a running Isaac Unreal Engine Simulator, with sensorimotor data available from the robot in ROS!
The BenchBot Robot Controller is a wrapping ROS / HTTP hybrid script that manages running robots and their required subprocesses. See the carter_sim.yaml
configuration in the BenchBot Supervisor for an example configuration of how to run BenchBot Simulator through the Robot Controller.
CRICOS No. 00213J