Agent Control

Overview

Omni.Replicator.Agent (ORA) supports controlling two different agents:

  • human characters

  • Isaac Nova Carter autonomous mobile robots

The behaviors of the agents can be randomized by ORA.

This section discusses supported commands for each agent and the commands for randomization.

The ORA UI provides command editors under the agent setting panel, so you can edit the commands for each agent and control the behaviors for the agents in the simulation. Additionally, the ORA UI allows you to inject commands into a running simulation to control the agents during runtime.

Character

The Character Behavior control is based on the Omni.Anim.People extension. The GoTo, Idle, and LookAround commands can be randomized. Characters can also Sit and Queue, but these commands require a manual input. For a more detailed guide, refer to the Omni.Anim.People documentation.

GoTo

GoTo moves the character to a location. It can be followed by a single point or a sequence of points, where the last point specifies the ending rotation that the character must have upon reaching its destination. If you would prefer to not set a rotation, you can use “_” for the ending rotation.

When a sequence of points is given, the character crosses every point. If Navmesh Navigation and Dynamic Obstacle Avoidance is on, then the character tries to avoid static and dynamic obstacles.

Example: female_adult_police_03 GoTo 10 10 0 90

expected result for the GoTo command

Idle

Idle makes the character stand still. It takes a duration value in seconds and performs the action for that duration.

Example: female_adult_police_03 Idle 10

expected result for the Idle command

LookAround

LookAround makes the character stand in the same spot, while moving its head from left to right. It takes a duration value in seconds and performs the action for that duration.

Example: female_adult_police_03 LookAround 10

expected result for the LookAround command

Robot

Robot behavior control is supported by the Omni.Anim.People and Omni.Isaac.Wheeled_Robots extensions. The GoTo and Idle commands can be randomized by ORA. The iw.hub robot supports the LiftUp and LiftDown commands, which both require manual input.

GoTo

The GoTo command moves the robot from its current location to a target location. The command expects the X Y Z world coordinate of the target location.

Example: Nova_Carter_01 GoTo 10.02 5.9 0

expected result for the robot GoTo command

Idle

The Idle command makes the robot stay where it is for a given duration in seconds. It can be combined with the GoTo command to make the robot go to a position, stay there for a while, and then go to another position.

Example: Nova_Carter_01 Idle 5

expected result for the robot Idle command

LiftUp/LiftDown

The iw.hub robot also supports the LiftUp and LiftDown commands, which move the loader on the iw.hub up or down by 4 cm.

Example: iw_hub_01 LiftUp

expected result for the robot LiftUp and LiftDown command

Command Randomization Control

ORA allows you to control the possibilities of command randomization by defining the command transition matrix. The command transition matrix determines the possibility of transitioning to a state from a state. Each row of the transition matrix represents under the current command (row head), what’s the possibility to go to the next command.
To do so, go to the Command Randomization tab under the Character Settings panel. You will see the current transition matrix. Once the transition matrix is edited, it must be save in order to take effect.
For example, in the following transition matrix, a GoTo command will have 50% chance followed by an Idle command and 50% chance followed by a LookAround command. A LookAround command will have 70% chance followed by a GoTo command and 30% chance followed by Idle.
                  GoTo        Idle  LookAround
      GoTo           0         0.5         0.5
      Idle         0.6           0         0.4
LookAround         0.7         0.3           0

Note

The sum of probabilities for each row must be equal to 1.

Command Injection

ORA allows you to inject commands into a running simulation to control the agents in real time. This enables you to adjust the simulation during runtime to create emergent events or quickly simulate a particular scenario.

Command injection works similar to regular commands. The format is agent_name command params and there is one panel for all the agents. This feature only works while the simulation is running. To inject commands, type the commands in the Inject Control UI panel, which is the last panel in the ORA UI, and then click the Inject button.

When a command is injected, the agent stops whatever command it is currently executing and starts the injected command immediately.

Note

  • If a character is performing the Sit command and a new command is injected, the character stands up first and then executes the injected command.

  • If a character is in a queue when an Idle command is injected, the character appears to stay in the queue but the Queue command is in fact already interrupted.

Below is an image of the command injection UI. It is injecting a GoTo 1 1 0 _ command to Character_01 and an Idle 10 command to Nova_Carter_02.

an example of what the command injection UI panel looks like