[isaacsim.cortex.framework] Omni Isaac Cortex#
Warning
Deprecation: Extension deprecated since Isaac Sim 6.0.0. Will be replaced in 7.0 with simple examples and open source equivalents.
Version: 1.0.20
Overview#
Deprecated since version 6.0.0: This extension has been deprecated and is kept only as reference material for existing Cortex users. There is no drop-in replacement package.
For migration guidance, see Cortex behavior workflow migration. For replacement behavior-programming examples, see State Machines for Robot Behavior.
Migration#
There is no drop-in package replacement for isaacsim.cortex.framework. Move
workflow ownership into the application, then replace Cortex decision logic with
application-owned state machines, behavior trees, or task planners.
Import replacements#
Deprecated import |
Replacement |
|---|---|
|
Use application lifecycle code with |
|
Reimplement the behavior with an application-owned state machine, a |
|
Move robot context and diagnostics into application-owned classes that update once per simulation tick. |
|
Use supported motion-generation controllers and examples from |
|
Track obstacles in application state and update the active motion-generation world before command generation. |
|
Set up robot assets and command paths in the application with supported manipulator and robot-control APIs. |
Command-line and extension changes#
Deprecated workflow |
Replacement |
|---|---|
|
Run an application or standalone script that owns its behavior logic and does not enable |
Add |
Remove the dependency. Add only the supported packages used by the migrated app, such as |
Run |
Load the stage from the application entry point, register simulation callbacks, and tick the migrated state machine, behavior tree, or planner from that app loop. |
Use |
Start the ROS 2 bridge and project ROS nodes explicitly from the migrated application workflow. |
API mapping#
Cortex concept |
Migration strategy |
|---|---|
Cortex loop runner and |
Register an application simulation callback that updates world state, ticks the behavior policy, and sends robot commands. |
Belief model paths such as |
Keep only the scene state needed by the migrated application. Store logical state in application data structures or sensors, not Cortex-specific USD conventions. |
|
Replace with a state machine, behavior tree, or task planner. Preserve the original decision priorities as tests. |
|
Update logical robot state once per tick before evaluating the behavior policy. |
|
Issue commands through supported manipulator, robot-control, and motion-generation APIs. |
Cortex ROS helpers in |
Use ROS 2 bridge workflows and application-owned publishers, subscribers, or action clients. |
Cortex example behavior modules |
Treat them as reference material only and port the task logic into application-owned modules. |
Replacement examples#
standalone_examples/tutorials/state_machine/franka_pick_place_ifelse.pystandalone_examples/tutorials/state_machine/franka_pick_place_fsm.pystandalone_examples/tutorials/state_machine/franka_pick_place_py_trees.pystandalone_examples/tutorials/state_machine/ur10_palletizing_transitions.py
Use those examples as starting points for behavior logic that should no longer
depend on isaacsim.cortex.framework, isaacsim.cortex.behaviors, or
isaacsim.cortex.examples.
isaacsim.cortex.framework provided a decision framework for orchestrating
Isaac Sim robot workflows and executing behavior logic on simulated or physical
robots. It included:
A Cortex loop runner with a belief model of the world and robot.
ROS bridge helpers for synchronizing Cortex belief state with physical robot perception and actuation.
A simulated-controller workflow for hardware-in-the-loop development.
Example environments and behavior scripts, including reactive block stacking.
Deprecated usage#
The Cortex command-line runner, ROS bridge workflow, physical-robot quickstarts, world setup conventions, and file breakdown below are deprecated. They remain here only to help existing projects understand and remove their Cortex dependencies.
World setup conventions#
Cortex USD worlds follow a particular path naming convention. Good examples are:
Isaac/Samples/Cortex/Franka/BlocksWorld/cortex_franka_blocks_belief.usd
Isaac/Samples/Cortex/Franka/BlocksWorld/cortex_franka_blocks_belief_sim.usd
Isaac/Samples/Cortex/UR10/Basic/cortex_ur10_basic_belief.usd
Isaac/Samples/Cortex/UR10/Basic/cortex_ur10_basic_belief_sim.usd
It is assumed these environments are setup in units of centimeters.
The belief environment is added to the path /cortex/belief and the simulation
environment, if it exists, is added to /cortex/sim. Each environment contains
robot and objects subprims. The robot has a string metadata attribute
cortex:robot_type telling the system the robot type. Currently supported
values are franka and ur10.
Objects added to the scene can have an optional cortex:is_obstacle attribute.
When set to True, Cortex loads the object as an obstacle. If the attribute is
not present, the object is assumed to not be an obstacle.
All xform prims representing robots and objects follow the Isaac Sim Core API
transform specification USD conventions. Specifically, they have transform
attributes specified by xformOp:translate, xformOp:orient, and
xformOp:scale, with xformOpOrder given as
[xformOp:translate, xformOp:orient, xformOp:scale].
For instance, the block stacking environment containing both belief and simulation worlds is laid out as:
/cortex
/belief
/robot # Franka USD with cortex:robot_type of 'franka'
/objects
/red_block # cortex:is_obstacle = True
/yellow_block # cortex:is_obstacle = True
/green_block # cortex:is_obstacle = True
/blue_block # cortex:is_obstacle = True
/sim
/robot # Franka USD with cortex:robot_type of 'franka'
/objects
/red_block
/yellow_block
/green_block
/blue_block
It is often useful to set up a common environment that is shared by both
/cortex/belief and /cortex/sim. That makes it easy to set up both
belief-only and belief-simulation variants of the USD environment.
Other attributes and prims:
The belief robot has
cortex:adaptive_cycle_dt(Double) andcortex:is_suppressed(Bool). These are used internally by Cortex and are automatically added on startup. It is okay if the USD environment already has them./cortex/belief/motion_controller_targetis a cube prim used for manually controlling the robot. If it already exists in the environment, Cortex uses it. Otherwise, Cortex creates one when initializing the motion commander.
Breakdown of files#
Main Cortex loop runner:
cortex_main.py: Primary entry point and main Cortex loop runner. This runs the standalone Cortex Python app. It points to its own experience file, which includes theisaacsim.cortex.frameworkextension. A Cortex-compatible USD environment is passed in with a flag. It starts thecortex_rosandcortex_simextensions.cortex_rosis always running so a physical robot can be connected at any time. If the USD environment has a simulation environment, that robot is used in place of a physical robot.
Extensions loaded on startup:
cortex_ros.py: Handles ROS connections to get perceptual information into Cortex and send control information out of Cortex.cortex_sim.py: Creates the ROS communication interface to mimic a physical robot using a simulated environment.
Decision framework:
df.py: Core framework tools, including decider networks and state machines.dfb.py: Decision-framework behaviors shared across behavior scripts.df_behavior_watcher.py: Monitorsdf_behavior_module.pyfor changes and reloads when a change is detected.df_behavior_module.py: Behavior module monitored by the main Cortex loop runner. On startup, nothing runs until a behavior is explicitly activated.
Cortex tools:
cortex_utils.py: Utilities for setting up Cortex.cortex_object.py: Object representation wrapping Core API objects and Cortex attributes, including measured poses.motion_commander.py: Wrapper around Isaac Sim motion policies that provides a command API with pose targets and approach directions.smoothed_command.py: Tool for smoothing commands automatically.synchronized_time.py: ROS utility for clock synchronization between the embedded robot controller and the machine running Cortex.
Utilities:
cli.py: Helpers for command-line interfaces.gf_conversions.py: Helpers for reading and writing USD data through the Gf interface.math_util.py: Math tools and utilities.ros_tf_util.py: ROS-based utilities.tools.py: Utilities for steady loops and profiling.
Tests:
tests/test_df.py: Unit tests for the decision framework.tests/test_motion_commander.py: Standalone Python app that starts a motion commander in a basic Franka environment.
Troubleshooting#
When restarting the controller for a physical robot, bring down the entire controller manager on the real-time machine and restart everything.
Enable Extension#
The extension can be enabled (if not already) in one of the following ways:
Define the next entry as an application argument from a terminal.
APP_SCRIPT.(sh|bat) --enable isaacsim.cortex.framework
Define the next entry under [dependencies] in an experience (.kit) file or an extension configuration (extension.toml) file.
[dependencies]
"isaacsim.cortex.framework" = {}
Open the Window > Extensions menu in a running application instance and search for isaacsim.cortex.framework.
Then, toggle the enable control button if it is not already active.