Environment Actors Configuration Settings

Environment actors in Project AirSim are elements within the simulation environment that enhance its realism and complexity. These actors are not directly involved in primary simulation tasks but contribute to the overall immersive and authentic experience. They include a variety of entities designed to replicate real-world surroundings, which help in creating a comprehensive testing scenario for autonomous systems.

The environment actors have the capacity of having a defined trajectory to follow. It can be configured in the same settings file Trajectory settings, inside the script or using a path file.

There are different types of environment actors: - Generic Environment Actors: Generic Environment Actors configuration overview settings - Cars: Car configuration overview overview settings - Humans: Human configuration overview settings

The Generic Actors and Cars are configured as tree structures of links (components with shape) and joints (connections and constraints between links).

The Humans are only configured by a link.

Trajectory settings

The environment actors’ settings can also include the trajectory they will follow. In order to confifure this, a series of parameter have to be set in script.

For example:

{
  "script": {
    "loop": true,
    "auto_start": true,
    "trajectory": {
      "name": "right_and_descend_config",
      "time_sec": [1, 3, 6, 9, 12],
      "pose_x": [3, 3, 3, 3, 3],
      "pose_y": [0, 5, 10, 15, 20],
      "pose_z": [-5, -4, -4, -4, -4],
      "pose_roll": [0, 0, 0, 0, 0],
      "pose_pitch": [0, 0, 0, 0, 0],
      "pose_yaw": [0, 0, 0, 0, 0],
      "velocity_linear_x": [1, 1, 1, 1, 1],
      "velocity_linear_y": [1, 1, 1, 1, 1],
      "velocity_linear_z": [0, 0, 0, 0, 0]
    }
  },
  {...}
}

Parameter

Value

Description

loop

bool

Whether the movement of the actor should loop.

auto_start

bool

Whether the movement of the actor should begin automatically.

trajectory

object

The path that the actor will follow.

trajectory: name

string

The name of the trajectory to follow.

trajectory: time_sec

array

The times, in seconds, of each point on the trajectory.

trajectory: pose_x

array of numbers

The x pose at each point on the trajectory.

trajectory: pose_y

array of numbers

The y pose at each point on the trajectory.

trajectory: pose_z

array of numbers

The z pose at each point on the trajectory.

trajectory: pose_roll

array of numbers

The roll at each point on the trajectory.

trajectory: pose_pitch

array of numbers

The pitch pose at each point on the trajectory.

trajectory: pose_yaw

array of numbers

The yaw pose at each point on the trajectory.

trajectory: velocity_linear_x

array of numbers

The x velocities at each point on the trajectory.

trajectory: velocity_linear_y

array of numbers

The y velocities at each point on the trajectory.

trajectory: velocity_linear_z

array of numbers

The z velocities at each point on the trajectory.

Generic Environment Actors configuration overview

Versatile entities that can be added to the scene.

Project AirSim currently comes with some base configurations for environment actors to demonstrate how to configure them for simulation.

env_actor_quadrotor.jsonc

{
  "links": [...],
  "joints": [...]
}

Parameter

Value

Description

links

Array of Link settings

Link settings for each link component of the actors.

joints

Array of Joint settings

Joint settings for connecting links together.

Joint settings

A joint is a connection between two links (a single parent link and a single child link) in order to define a relationship for relative motion. Constraints for the joint type can specify the type of joint motion to allow.

"joints": [
  {
      "id": "Frame_Prop_FL",
      "origin": {
        "xyz": "0.253 -0.253 -0.01",
        "rpy-deg": "0 0 0"
      },
      "type": "fixed",
      "parent-link": "Frame",
      "child-link": "Prop_FL",
      "axis": "0 0 1"
    },
  ...
]

Parameter

Value

Description

id

string

Name identifier for the joint.

origin: xyz

string of 3 floats

Position “X Y Z” of the joint’s child link relative to the joint’s parent link in meter units. Defaults to all zero if no origin is specified.

origin: rpy

string of 3 floats

Rotation “Roll Pitch Yaw” of the joint’s child link relative to the joint’s parent link in radian units. Defaults to all zero if no origin is specified.

type

fixed, continuous, revolute

Type of joint constraint. fixed means the pose of the child-link should stay fixed relative to the parent-link. continuous means the child-link can rotate continously around the axis normal. revolute means the child-link can rotate like a hinge around the axis up to an angle limit.

parent-link

string

Name identifier for the joint’s parent link.

child-link

string

Name identifier for the joint’s child link.

axis

"1 0 0" for X axis, "0 1 0" for Y axis, "0 0 1" for Z axis

Rotation axis for joint motion.

Car configuration overview

Ground vehicles designed to simulate real-world traffic and driving conditions. This is a grounded environment actor since it is affected by gravity. It also has wheels that follow the trajectory given.

Project AirSim currently comes with some base configurations for environment cars to demonstrate how to configure them for simulation.

env_actor_car.jsonc

{
  "links": [...],
  "joints": [...]
}

Parameter

Value

Description

links

Array of Link settings

Link settings for each link component of the car. Note: For Skeletal Meshes there is only one link necessary.

joints

Array of Joint settings

Joint settings for connecting links together. Note: Skeletal Meshes don’t use joints.

Joint settings cars

A joint is a connection between two links (a single parent link and a single child link) in order to define a relationship for relative motion. Constraints for the joint type can specify the type of joint motion to allow.

"joints": [
  {
      "id": "Frame_FL_Normal",
      "type": "fixed",
      "parent-link": "Frame",
      "child-link": "FL_Normal",
      "axis": "0 0 1"
    },
  ...
]

Parameter

Value

Description

id

string

Name identifier for the joint.

type

fixed, continuous, revolute

Type of joint constraint. fixed means the pose of the child-link should stay fixed relative to the parent-link. continuous means the child-link can rotate continously around the axis normal. revolute means the child-link can rotate like a hinge around the axis up to an angle limit. Note: Cars currently only use the fixed type.

parent-link

string

Name identifier for the joint’s parent link.

child-link

string

Name identifier for the joint’s child link.

axis

"1 0 0" for X axis, "0 1 0" for Y axis, "0 0 1" for Z axis

Rotation axis for joint motion.

Human configuration overview

Representations of pedestrians within the simulation. This is a grounded environment actor since it is affected by gravity, that uses an skeletal mesh for refined movement.

env_actor_human.jsonc

{
  "links": [...]
}

Parameter

Value

Description

links

Array of Link settings

Link settings for each link component of the human. Note: The humans only need one link for the skeletal mesh