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
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
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
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
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
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
Command Randomization Control
ORA allows you to add custom commands with custom animations, as well as customize the randomization of these commands. To add new commands, refer to Custom Command. For every new command added, ORA automatically adds an entry to the Command Randomization transition matrix.
You can 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 the possibility of going to the next command is.
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 has a 50% chance of being followed by an Idle
command and 50% chance of being followed by a LookAround
command. A LookAround
command has a 70% chance of being followed by a GoTo
command and a 30% chance of being 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 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 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.