Sensors List#

This page details the different available sensors and the configuration options possible. For more on how to build sensor plugins, please see Sensor Plugins.

Table of Contents

Examples top#

Example JSON configurations are available here:

How to Specify a Sensor top#

A vehicle configuration is in the following format:

[
    SENSOR,
    SENSOR,
    SENSOR
]

A SENSOR is defined in the JSON configuration in the following format:

{
    "name": STRING,
    "params": {PARAMS},
    "parent": STRING,
    "transform": {
      "x": FLOAT,
      "y": FLOAT,
      "z": FLOAT,
      "pitch": FLOAT,
      "yaw": FLOAT,
      "roll": FLOAT,
    }
    "plugin": {
      "id": STRING
    }
}
  • name is the name of the sensor. This is how the sensor will be identified.
  • params are the explicitly specified parameters. If a parameter is not set, the Default Value in the sensor definition will be used.
  • ex. {"Width": 1920, "Height": 1080}
  • There are 2 parameters that all sensors have

    Parameter Description Default Value
    Topic defines the topic that the sensor will subscribe/publish to null
    Frame defines the frame_id if the sensor publishes a ROS message. See ROS Header Message for more information null
  • parent (OPTIONAL) a sensor's transform can be relative to another sensor. STRING is the name of the base sensor transform to which this sensor is relative.

  • If omitted, the transform is relative to the origin of the vehicle.

  • transform is the location and rotation of the sensor relative to the local position of the vehicle. The Unity left-hand coordinate system is used (+x right, +y up, +z forward, +pitch tilts the front down, +yaw rotates clockwise when viewed from above, +roll tilts the left side down).
  • x is the position of the sensor along the x-axis
  • y is the position of the sensor along the y-axis
  • z is the position of the sensor along the z-axis
  • pitch is the rotation around the x-axis
  • yaw is the rotation around the y-axis
  • roll is the rotation around the z-axis

  • id is the unique ID for the sensor plugin

Clock top#

AssetBundle

This sensor outputs simulated time to ROS as rosgraph_msgs/Clock message, or to CyberRT as clock message. The only parameter to use is topic/channel name.

For ROS, you can add <param name="/use_sim_time" value="true"> to their ROS launch file, or use rosparam set /use_sim_time true in command line, to have a ROS node use simulation time according to the /clock topic. For more details please refer to this page.

For CyberRT, you can set clock_mode in cyber.pb.conf as MODE_MOCK to have CyberRT use simulation time according to the /clock topic.

{
    "name": "Clock Sensor",
    "parent": null,
    "params": {
      "Topic": "/clock"
    },
    "plugin": {"id": "968f386f-dc0b-485d-ba33-5bb71bff93ef"}
  }

Color Camera top#

AssetBundle

This is the type of sensor that would be used for the Main Camera in Apollo or other AD stacks.

(For questions about camera matrix, please refer to this FAQ.)

Parameter Description Unit Type Default Value Minimum Maximum
Width defines the width of the image output pixels Int 1920 1 1920
Height defines the height of the image output pixels Int 1080 1 1080
Frequency defines the maximum rate that messages will be published Hertz Int 15 1 100
JpegQuality defines the quality if the image output % Int 75 0 100
FieldOfView defines the vertical angle that the camera sees degrees Float 60 1 90
MinDistance defines how far an object must be from the sensor for it to be detected meters Float 0.1 0.01 1000
MaxDistance defines how close an object must be to the sensor for it to be detected meters Float 2000 0.01 2000
Distorted defines if the image is distorted Bool false
DistortionParameters parameters used by distortion * List of Float empty list
Fisheye defines if the camera has fisheye lens Bool false
Xi parameter used by fisheye distortion ** Float 0.0
CubemapSize size of the cubemap used by fisheye distortion *** pixels Int 1024 512 2048

* If Distorted is true, DistortionParameters must be an empty list or a list of FOUR floats. The values in this list should come from calibration result of real camera. Setting arbitrary values may cause undefined result. If Distorted is false, DistortionParameters, Fisheye and Xi are ignored.

** If Fisheye is true, Xi should be a value from calibration result of real camera. Setting arbitrary value may cause undefined result. If Fisheye is false, Xi is ignored.

*** CubemapSize should only be 512, 1024, or 2048.

{
    "name": "Color Camera",
    "parent": null,
    "params": {
      "Width": 1920,
      "Height": 1080,
      "Frequency": 15,
      "JpegQuality": 75,
      "FieldOfView": 50,
      "MinDistance": 0.1,
      "MaxDistance": 2000,
      "Topic": "/simulator/main_camera",
      "Frame": "camera",
      "Distorted": true,
      "DistortionParameters": [
        -0.25349, 0.11868, 0, 0
      ],
      "Postprocessing": [
      ]
    },
    "transform": {
      "x": 0,
      "y": 1.7,
      "z": -0.2,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "3d4f1e08-4c62-4e9f-b859-b26d4910b85e"}
  }

Sensor Effects top#

Color Camera has multiple post processing sensor effects that can be added to the Postprocessing field in params. Effects can be combined with an array of Postprocessing fields but order is hard coded.

SunFlare - creates a sun flare effect

Parameter Description Type Default Value Min Max
type postprocessing sensor effect name String
sunIntensity defines the intensity of the sun flare Float 1 0 10
haloIntensity defines the intensity of the sun flare halo Float 1 0 10
ghostingIntensity defines the intensity of the mirror effect Float 1 0 10
"Postprocessing": [
    {
        "type": "SunFlare",
        "sunIntensity": 1,
        "haloIntensity": 1,
        "ghostingIntensity": 1
    }
]

Rain - creates rain drops on the lens

Parameter Description Type Default Value Min Max
type postprocessing sensor effect name String
size defines the size of the drops Float 1 0 1
"Postprocessing": [
    {
        "type": "Rain",
        "size": 1
    }
]

GreyScale - converts color to grey scale

Parameter Description Type Default Value Min Max
type postprocessing sensor effect name String
intensity defines the intensity of the grey scale Float 1 0 1
"Postprocessing": [
    {
        "type": "GreyScale",
        "intensity": 1
    }
]

VideoArtifacts - creates jpeg compression artifacts

Parameter Description Type Default Value Min Max
type postprocessing sensor effect name String
intensity defines the intensity of the effect Float 0.25 0 1
blockSize defines the size of the affected block Int 32 1 128
"Postprocessing": [
    {
          "type": "VideoArtifacts",
          "intensity": 0.25,
          "blockSize": 32
    }
]

Depth Camera top#

AssetBundle

This sensor returns an image where the shades on the grey-scale correspond to the depth of objects.

Parameter Description Unit Type Default Value Minimum Maximum
Width defines the width of the image output pixels Int 1920 1
Height defines the height of the image output pixels Int 1080 1 1080
Frequency defines the maximum rate that messages will be published Hertz Int 5 1 100
JpegQuality defines the quality if the image output % Int 100 0 100
FieldOfView defines the vertical angle that the camera sees degrees Float 60 1 90
MinDistance defines how far an object must be from the sensor for it to be detected meters Float 0.1 0.01 1000
MaxDistance defines how close an object must be to the sensor for it to be detected meters Float 2000 0.01 2000
Distorted defines if the image is distorted Bool false
DistortionParameters parameters used by distortion* List of Float empty list
Fisheye defines if the camera has fisheye lens Bool false
Xi parameter used by fisheye distortion ** Float 0.0
CubemapSize size of the cubemap used by fisheye distortion *** pixels Int 1024 512 2048

* See notes on DistortionParameters for Color Camera.

** See notes on Xi for Color Camera.

*** See notes on CubemapSize for Color Camera.

{
    "name": "Depth Camera",
    "parent": null,
    "params": {
      "Width": 1920,
      "Height": 1080,
      "Frequency": 15,
      "JpegQuality": 75,
      "FieldOfView": 50,
      "MinDistance": 0.1,
      "MaxDistance": 2000,
      "Topic": "/simulator/depth_camera"
    },
    "transform": {
      "x": 0,
      "y": 1.7,
      "z": -0.2,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "290af702-b42a-4dce-800e-0999a07d49d2"}
  }

Segmentation Camera top#

AssetBundle

This sensor returns an image where objects are colored corresponding to their tag:

Tag Color Hex Value
Car Blue #120E97
Road Purple #7A3F83
Sidewalk Orange #BA8350
Vegetation Green #71C02F
Obstacle White #FFFFFF
TrafficLight Yellow #FFFF00
Building Turquoise #238688
Sign Dark Yellow #C0C000
Shoulder Pink #FF00FF
Pedestrian Red #FF0000
Curb Dark Purple #4A254F

If a tag is included in "InstanceSegmentationTags", each instance of objects with that tag is colored differently, but all will have same hue (e.g. all cars will be bluish and all pedestrians will be reddish).

Parameter Description Unit Type Default Value Minimum Maximum
Width defines the width of the image output pixels Int 1920 1 1920
Height defines the height of the image output pixels Int 1080 1 1080
Frequency defines the maximum rate that messages will be published Hertz Int 15 1 100
FieldOfView defines the vertical angle that the camera sees degrees Float 60 1 90
MinDistance defines how far an object must be from the sensor for it to be detected meters Float 0.1 0.01 1000
MaxDistance defines how close an object must be to the sensor for it to be detected meters Float 2000 0.01 2000
Distorted defines if the image is distorted Bool false
DistortionParameters parameters used by distortion* List of Float empty list
Fisheye defines if the camera has fisheye lens Bool false
Xi parameter used by fisheye distortion ** Float 0.0
CubemapSize size of the cubemap used by fisheye distortion *** pixels Int 1024 512 2048
InstanceSegmentationTags define tags with instance segmentation List of String empty list

* See notes on DistortionParameters for Color Camera.

** See notes on Xi for Color Camera.

*** See notes on CubemapSize for Color Camera.

{
    "name": "Segmentation Camera",
    "parent": null,
    "params": {
      "Width": 1920,
      "Height": 1080,
      "Frequency": 15,
      "FieldOfView": 50,
      "MinDistance": 0.1,
      "MaxDistance": 2000,
      "InstanceSegmentationTags": [
      ],
      "Topic": "/simulator/segmentation_camera"
    },
    "transform": {
      "x": 0,
      "y": 1.7,
      "z": -0.2,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "dbd171ab-66bc-4c7a-a523-d4e72afe1d0f"}
}

Example of Instance Segmentation Tags. Be aware that this effects performance greatly.

"InstanceSegmentationTags": [
          "Car",
          "Pedestrian",
          "Obstacle",
          "Building"
      ],

LiDAR top#

AssetBundle

This sensor returns a point cloud after 1 revolution.

Parameter Description Unit Type Default Value Minimum Maximum
VerticalRayAngles defines vertical angle for each laser beam* List of Float empty list
LaserCount defines how many vertically stacked laser beams there are Int 32 1 128
FieldOfView defines the vertical angle between bottom and top ray degrees Float 41.33 1 45
CenterAngle defines the center of the FieldOfView cone to the horizon (+ means below horizon) degrees Float 10 -45 45
MinDistance defines how far an object must be from the sensor for it to be detected meters Float 0.5 0.01 1000
MaxDistance defines how close an object must be to the sensor for it to be detected meters Float 100 0.01 2000
RotationFrequency defines how fast the sensor rotates Hertz Float 10 1 30
MeasurementsPerRotation defines how many measurements each beam takes per rotation Int 1500 18 6000
Compensated defines whether or not the point cloud is compensated for the movement of the vehicle Bool true
PointSize defines how large of points are visualized pixels Float 2 1 10
PointColor defines the color of visualized points rgba in hex Color #FF0000FF

* If VerticalRayAngles is not empty, LaserCount will be automatically set to the length of VerticalRayAngles, and FieldOfView and CenterAngle will be ignored.

A sample of uniformly distributed angles:

{
    "name": "Lidar-Uniform",
    "parent": null,
    "params": {
      "LaserCount": 32,
      "FieldOfView": 41.33,
      "CenterAngle": 10,
      "MinDistance": 0.5,
      "MaxDistance": 100,
      "RotationFrequency": 10,
      "MeasurementsPerRotation": 360,
      "Compensated": true,
      "PointColor": "#ff000000",
      "Topic": "/point_cloud",
      "Frame": "velodyne"
    },
    "transform": {
      "x": 0,
      "y": 2.312,
      "z": -0.3679201,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "b30d0478-8c7b-4687-bfc2-b3cdb3f5faff"}
}

A sample of non-uniformly distributed angles:

{
    "name": "Lidar-NonUniform",
    "parent": null,
    "params": {
      "VerticalRayAngles": [
        -25.0,   -1.0,    -1.667,  -15.639,
        -11.31,   0.0,    -0.667,   -8.843,
        -7.254,  0.333,  -0.333,   -6.148,
        -5.333,  1.333,   0.667,   -4.0,
        -4.667,  1.667,   1.0,     -3.667,
        -3.333,  3.333,   2.333,   -2.667,
        -3.0,    7.0,     4.667,   -2.333,
        -2.0,   15.0,    10.333,   -1.333
      ],
      "MinDistance": 0.5,
      "MaxDistance": 100,
      "RotationFrequency": 10,
      "MeasurementsPerRotation": 360,
      "Compensated": true,
      "PointColor": "#ff000000",
      "Topic": "/point_cloud",
      "Frame": "velodyne"
    },
    "transform": {
      "x": 0,
      "y": 2.312,
      "z": -0.3679201,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "b30d0478-8c7b-4687-bfc2-b3cdb3f5faff"}
}

LiDAR2D top#

AssetBundle

This sensor returns a LaserScan message for a planar (2D) lidar.

Parameter Description Unit Type Default Value Minimum Maximum
CenterAngle defines the center of the FieldOfView cone to the horizon (+ means below horizon) degrees Float 10 -45 45
MinDistance defines how far an object must be from the sensor for it to be detected meters Float 0.5 0.01 1000
MaxDistance defines how close an object must be to the sensor for it to be detected meters Float 100 0.01 2000
RotationFrequency defines how fast the sensor rotates Hz Float 10 1 30
MeasurementsPerRotation defines how many measurements each beam takes per rotation Int 1500 18 6000
Compensated defines whether or not the point cloud is compensated for the movement of the vehicle Bool true
PointSize defines how large of points are visualized pixels Float 2 1 10
PointColor defines the color of visualized points rgba in hex Color #FF0000FF
CubemapSize defines the size of each face of the cubemap used to model the lidar pixels Float 1024
ForwardAngle defines the angle between forward axis of the car and forward axis of the lidar degrees Float 0 0 360
HorizontalAngle defines the delta view angle degrees Float 360 0 360
performanceLoad defines the weight for distributed simulation Float 1

A sample json:

{
    "name": "LiDAR 2D Sensor",
    "parent": null,
    "params": {
      "CenterAngle": 0,
      "RotationFrequency": 10,
      "Topic": "/scan",
      "Frame": "base_scan",
      "Compensated": false
    },
    "transform": {
      "x": 0,
      "y": 0.1125,
      "z": 0.27,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "2392cabf-47b4-4410-bd81-37545b78feca"}

  },

3D Ground Truth top#

AssetBundle

This sensor returns 3D ground truth data for training and creates bounding boxes around the detected objects. The color of the object corresponds to the object's type:

Object Color
Car Green
Pedestrian Yellow
Bicycle Cyan
Unknown Magenta

This sensor detects objects in all directions and includes occlusion. If any part of an object is visible from the sensor's position, a bounding box for the whole object is created - partial visibility does not affect bounds size.

Parameter Description Unit Type Default Value Minimum Maximum
Frequency defines the maximum rate that messages will be published Hertz Float 10 1 100
MaxDistance defines the how close an object must be to the sensor to be detected meters Float 100 1 1000
{
    "name": "3D Ground Truth",
    "parent": null,
    "params": {
      "Frequency": 10,
      "Topic": "/simulator/ground_truth/3d_detections"
    },
    "transform": {
      "x": 0,
      "y": 1.975314,
      "z": -0.3679201,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "e3fef197-9724-48ec-b98e-c5a0892d09c4"}
}

Apollo Perception Visualizer 3D top#

AssetBundle

This sensor will visualize 3D bounding boxes on objects as detected by Apollo. It does not publish any data and instead subscribes to the perception topic from Apollo. The color of the boxes are:

Object Color
Car Green
Pedestrian Yellow
Bicycle Cyan
Unknown Magenta
{
    "name": "Apollo Perception Visualizer 3D Sensor",
    "parent": null,
    "params": {
      "Topic": "/apollo/perception/obstacles"
    },
    "transform": {
      "x": 0,
      "y": 0,
      "z": 0,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "ab5d574b-4b32-490f-bc71-f2631d43d5df"}
}

CAN-Bus top#

AssetBundle

This sensor sends data about the vehicle chassis. The data includes:

  • Speed [m/s]
  • Throttle [%]
  • Braking [%]
  • Steering [+/- %]
  • Parking Brake Status [bool]
  • High Beam Status [bool]
  • Low Beam Status [bool]
  • Hazard Light Status [bool]
  • Fog Light Status [bool]
  • Left Turn Signal Status [bool]
  • Right Turn Signal Status [bool]
  • Wiper Status [bool]
  • Reverse Gear Status [bool]
  • Selected Gear [Int]
  • Engine Status [bool]
  • Engine RPM [RPM]
  • GPS Latitude [Latitude]
  • GPS Longitude [Longitude]
  • Altitude [m]
  • Orientation [3D Vector of Euler angles]
  • Velocity [3D Vector of m/s]
Parameter Description Unit Type Default Value Minimum Maximum
Frequency defines the maximum rate that messages will be published Hertz Float 10 1 100
{
    "name": "CAN Bus",
    "parent": null,
    "params": {
      "Frequency": 10,
      "Topic": "/canbus"
    },
    "transform": {
      "x": 0,
      "y": 0,
      "z": 0,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "b0bdc474-ac09-4355-901d-d7012a8c57a8"}
}

GPS Device top#

AssetBundle

This sensor outputs the GPS location of the vehicle in Longitude/Latitude and Northing/Easting coordintates.

Parameter Description Unit Type Default Value Minimum Maximum
Frequency defines the maximum rate that messages will be published Hertz Float 12.5 1 100
IgnoreMapOrigin defines whether or not the actual GPS position is returned. If true, then the Unity world position is returned (as if the MapOrigin were (0,0)) Bool false
{
    "name": "GPS",
    "parent": null,
    "params": {
      "Frequency": 12.5,
      "Topic": "/gps",
      "Frame": "gps",
      "IgnoreMapOrigin": true
    },
    "transform": {
      "x": 0,
      "y": 0,
      "z": 0,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "75bbcbfa-fdca-4703-8e82-abf8078f7991"}
}

GPS Odometry top#

AssetBundle

This sensor outputs the GPS location of the vehicle in Longitude/Latitude and Northing/Easting coordintates and the vehicle velocity.

Parameter Description Unit Type Default Value Minimum Maximum
Frequency defines the maximum rate that messages will be published Hertz Float 12.5 1 100
ChildFrame used by Autoware
IgnoreMapOrigin defines whether or not the actual GPS position is returned. If true, then the Unity world position is returned (as if the MapOrigin were (0,0)) Bool false
{
    "name": "GPS Odometry",
    "parent": null,
    "params": {
      "Frequency": 12.5,
      "Topic": "/gps_odometry",
      "Frame": "gps",
      "IgnoreMapOrigin": true
    },
    "transform": {
      "x": 0,
      "y": 0,
      "z": 0,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "483f7b90-2f76-42ee-82c1-22f02f25f924"}
  }

GPS-INS Status top#

AssetBundle

This sensor outputs the status of the GPS correction due to INS. The Simulator is an ideal environment in which GPS is always corrected.

Parameter Description Unit Type Default Value Minimum Maximum
Frequency defines the maximum rate that messages will be published [Hertz] Float 12.5 1 100
{
    "name": "GPS INS Status",
    "parent": null,
    "params": {
      "Frequency": 12.5,
      "Topic": "/gps_ins_stat",
      "Frame": "gps"
    },
    "transform": {
      "x": 0,
      "y": 0,
      "z": -1.348649,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "77250db2-82c9-47dd-9785-c38cc4cb566d"}
  }

LGSVL Control top#

AssetBundle

This sensor is required for a vehicle to subscribe to a control topic published in ROS or ROS2 with message type lgsvl_msgs/VehicleControlData.

{
    "name": "LGSVL Control Sensor",
    "parent": null,
    "params": {
      "Topic": "/vehicle_cmd"
    },
    "plugin": {"id": "a5696615-d3e2-45e9-afa3-9b5ae7359e02"}
}

Apollo Control top#

AssetBundle

This sensor is required for a vehicle to subscribe to the control topic from Apollo using the CyberRT bridge.

{
    "name": "Apollo Car Control",
    "parent": null,
    "params": {
      "Topic": "/apollo/control"
    },
    "plugin": {"id": "03ea1a65-03ae-4f2e-b670-d7244e48deb4"}
}

The sensor also demonstrates how a user can check when SVL Simulator receives the first control message from the AD stack like Apollo. Based on this time, you can start the rest of the simulation or do some other interesting things.

To wait for control message from apollo in a Python script, you can call on_custom() of the ego agent. For example, the following code set isControlReceived of agent self.ego to be True when the simulator first receives a message of the /apollo/control topic.

def on_control_received(agent, kind, context):
    if kind == "checkControl":
        agent.isControlReceived = True
        log.info("Control message recieved")

self.ego.on_custom(on_control_received)

Differential Drive Control top#

AssetBundle

The sensor allows an ego vehicle (robot) with a differential drive setup to subscribe to control commands using the Ros2 bridge to drive the robot. Internally, the sensor track wheel movement and calculates an odometry pose based on wheel motion which can be published to a topic. The wheel motion is also used as feedback in a PID controller internal to the sensor which can be tuned using sensor parameters.

This sensor requires a path to be defined to each of the two drive wheels under RightWheelLinkPath and LeftWheelLinkPath as seen below. The Topic parameter is the name of the topic which the sensor subscribes to in order to receive control commands. The OdometryTopic provides the name of the topic odometry is to be published to and Frame and OdometryChildFrame populate the frame and odometry frame of the odometry message. For more information on the odometry frame in ROS see REP 105.

{
    "name": "Differential Drive Control Sensor",
    "parent": null,
    "params": {
        "OdometryTopic": "/odom",
        "Topic": "/cmd_vel",
        "OdometryChildFrame": "odom",
        "Frame": "base_footprint",
        "RightWheelLinkPath": "link_MainBody/SuspensionRight/link/wheel_right/link",
        "LeftWheelLinkPath": "link_MainBody/SuspensionLeft/link/wheel_left/link"
    },
    "pluin": {"id": "6bee1cb8-1be9-417a-9cbb-7fcf2eed9600"}
}

Keyboard Control top#

AssetBundle

This sensor is required for a vehicle to accept keyboard control commands. Parameters are not required but you can invert the inputs.

{
    "name": "Keyboard Car Control",
    "parent": null,
    "params": {
      "InvertAccel": false,
      "InvertSteer": false
    },
    "plugin": {"id": "a2ff904a-ff06-4f06-9e45-cb58217a7142"}
}

Wheel Control top#

AssetBundle

This sensor is required for a vehicle to accept Logitech G920 wheel control commands. Parameters are not required.

{
    "name": "Wheel Car Control",
    "parent": null,
    "plugin": {"id": "3d5dea8d-232a-46ea-9a16-57ef4c99df03"}
}

Cruise Control top#

AssetBundle

This sensor causes the vehicle to accelerate to the desired speed and then maintain the desired speed.

Parameter Description Unit Type Default Value Minimum Maximum
CruiseSpeed defines the desired speed meters/second Float 0 0 200
{
    "name": "Cruise Control Sensor",
    "parent": null,
    "params": {
      "CruiseSpeed": 10
    },
    "plugin": {"id": "1726cbc8-85f2-4e29-8c61-0ca93948b8e3"}
}

IMU top#

AssetBundle

This sensor output at a fixed rate of 100 Hz. IMU publishes data on topics where the 2nd topic has corrected IMU data.

Parameter Description
CorectedTopic defines the 2nd topic that the data is published to
CorrectedFrame defines the 2nd frame for the ROS header
{
    "name": "IMU",
    "parent": null,
    "params": {
      "Topic": "/imu",
      "Frame": "imu"
    },
    "transform": {
      "x": 0,
      "y": 0,
      "z": 0,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "9c34ec28-627d-4e73-9bb0-9c2aa7e978f5"}
}

2D Ground Truth top#

AssetBundle

This sensor outputs an image where objects are encased in a box. The color of the box depends on the type of object.

Object Color
Car Green
Pedestrian Yellow
Bicycle Cyan
Unknown Magenta

Bounding boxes for objects tightly encase all visible pixels of an object on the 2D image. Partially occluded objects will have only their visible part detected and encased.

Parameter Description Unit Type Default Value Minimum Maximum
Frequency defines the maximum rate that messages will be published Hertz Float 10 1 100
Width defines the width of the image pixels Int 1920 1 1920
Height defines the height of the iamge pixels Int 1080 1 1080
FieldOfView defines the vertical angle that the camera sees degrees Float 60 1 90
MinDistance defines how far an object must be from the sensor to be in the image meters Float 0.1 0.01 1000
MaxDistance defines how close an object must be to the sensor to be in the image meters Float 2000 0.01 2000
DetectionRange defines how close an object must be to be given a bounding box meters Float 100 0.01 2000
{
    "name": "2D Ground Truth",
    "parent": null,
    "params": {
      "Frequency": 10,
      "Topic": "/simulator/ground_truth/2d_detections"
    },
    "transform": {
      "x": 0,
      "y": 1.7,
      "z": -0.2,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "e0bfb6cc-a8f0-425e-9b6c-a643ca1e255a"}
}

Radar top#

AssetBundle

This sensor outputs the objects detected by the radar. Detected objects are visualized with a box colored by their type:

Type Color
Car Green
Agent Magenta
Bicycle Cyan
Parameter Description Unit Type Default Value Minimum Maximum
Frequency defines the maximum rate that messages will be published Hertz Float 13.4 1 100
{
    "name": "Radar",
    "parent": null,
    "params": {
      "Frequency": 13.4,
      "Topic": "/radar"
    },
    "transform": {
      "x": 0,
      "y": 0.689,
      "z": 2.272,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "215b7d1e-7ad3-4fe6-b3d9-db0e229eb0a4"}
}

Ultrasonic top#

AssetBundle

This sensor outputs the distance (to the center of the sensor) of the closest point within the sensor's FOV.

Parameter Description Unit Type Default Value Minimum Maximum
Width defines the width of the image output pixels Int 400 1 1920
Height defines the height of the image output pixels Int 160 1 1080
Frequency defines the maximum rate that messages will be published Hertz Int 15 1 100
JpegQuality defines the quality if the image output % Int 75 0 100
FieldOfView defines the vertical angle that the camera sees degrees Float 40 1 90
MinDistance defines how far an object must be from the sensor for it to be detected meters Float 0.3 0.01 1000
MaxDistance defines how close an object must be to the sensor for it to be detected meters Float 2.0 0.01 2000
{
    "name": "Ultrasonic Sensor",
    "parent": null,
    "params": {
        "Width": 400,
        "Height": 160,
        "Frequency": 15,
        "JpegQuality": 75,
        "FieldOfView": 50,
        "MinDistance": 0.3,
        "MaxDistance": 2,
        "Topic": "/simulator/ultrasonic",
        "Frame": "ultrasonic"
    },
    "transform": {
        "x": 0,
        "y": 0.5,
        "z": 2.5,
        "pitch": -13,
        "yaw": 0,
        "roll": 0
    },
    "plugin": {"id": "fb1d98b9-fb45-431a-893d-1634f760bde1"}
}

Control Calibration top#

AssetBundle

This sensor outputs control calibration criteria collected by AD Stacks (Apollo, Autoware). It generates steering, throttle or brakes with gear commands between minimum and maximum of velocity during duration.

Parameter Description Unit Type Minimum Maximum
min_velocity defines the minimum velocity when criterion is executed meters/second Float 0 50.0
max_velocity defines the maximum velocity when criterion is executed meters/second Float 0 50.0
throttle defines the throttle which makes acceleration Percent Float 0 100.0
brakes defines the brakes which make deceleration Percent Float 0 100.0
steering defines ego vehicle's steering Percent Float -100.0 100.0
gear defines ego vehicle's direction (forward or reverse) String
duration defines criterion's execution time second Float 0
{
    "name": "Control Calibration",
    "parent": null,
    "params": {
        "states": [{
                "min_velocity": 0.2,
                "max_velocity": 10.0,
                "throttle": 23,
                "brakes": 0,
                "steering": 0,
                "gear": "forward",
                "duration": 4
            },
            {
                "min_velocity": 0.2,
                "max_velocity": 2.0,
                "throttle": 22,
                "brakes": 0,
                "steering": 0,
                "gear": "reverse",
                "duration": 4
            }
        ]
    },
    "plugin": {"id": "ef77d2d3-32ff-4627-9f0c-8eca68c18f71"}
}

Total Control Calibration Criteria:

Transform Sensor top#

AssetBundle

This sensor is specifically used to parent other sensors. For example, if there is a cluster of sensors a Transform sensor can be added at the location of the cluster and then the individual sensors can have a transform that is relative to the location of the Transform sensor`.

Example usage

{
    "name": "Cluster Reference",
    "parent": null,
    "transform": {
      "x": 0.75,
      "y": 1.7,
      "z": 1,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    }
},
{
    "type": "ColorCameraSensor",
    "name": "Main Camera",
    "params": {
      "Width": 1920,
      "Height": 1080,
      "Frequency": 15,
      "JpegQuality": 75,
      "FieldOfView": 50,
      "MinDistance": 0.1,
      "MaxDistance": 2000,
      "Topic": "/simulator/main_camera",
      "Frame": "camera",
      "Distorted": true,
      "DistortionParameters": [
        -0.25349, 0.11868, 0, 0
      ]
    },
    "parent": "Cluster Reference",
    "transform": {
      "x": 0.1,
      "y": 0,
      "z": -0.1,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    }
},
{
    "type": "LidarSensor",
    "name": "Lidar-Uniform",
    "params": {
      "LaserCount": 32,
      "FieldOfView": 41.33,
      "CenterAngle": 10,
      "MinDistance": 0.5,
      "MaxDistance": 100,
      "RotationFrequency": 10,
      "MeasurementsPerRotation": 360,
      "Compensated": true,
      "PointColor": "#ff000000",
      "Topic": "/point_cloud",
      "Frame": "velodyne"
    },
    "parent": "Cluster Reference",
    "transform": {
      "x": 0,
      "y": 0.2,
      "z": 0,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    }
}

Signal Sensor top#

AssetBundle

This sensor returns ground truth data for traffic light signals connected to the current lane of ego vehicle and creates bounding boxes around the detected signals. The color of the bounding box corresponds to the signal's type:

Bounding Box Signal
Green Green
Yellow Yellow
Red Red
Parameter Description Unit Type Default Value Minimum Maximum
Frequency defines the maximum rate that messages will be published Hertz Float 10 1 100
MaxDistance defines how close a traffic light must be to the sensor to be detected meters Float 100 1 1000
{
    "name": "Signal Sensor",
    "parent": null,
    "params": {
      "Frequency": 10,
      "MaxDistance": 100,
      "Topic": "/simulator/ground_truth/signals"
    },
    "transform": {
      "x": 0,
      "y": 0,
      "z": 0,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "c4ba9b81-b274-4c05-b78e-636e61b4590e"}
}

Video Recording Sensor top#

AssetBundle

This sensor records a video for test cases. For local simulations, the path to the recorded video will be shown in the Video Recording Sensor section of the Test Results for each simulation.

Parameter Description Unit Type Default Value Minimum Maximum
Width defines the width of the video pixels Int 1920 1 1920
Height defines the width of the video pixels Int 1080 1 1080
Framerate defines the number of frames per second of the video fps Int 15 1 15
Bitrate defines the average number of bits per second Kbps Int 3000 1000 6000
MaxBitrate defines the maximum number of bits per second Kbps Int 6000 1000 6000
Quality defines the target constant quality level for VBR rate control (0 to 51, 0 means automatic) Int 22 0 51
{
    "name": "Video Recording Sensor",
    "parent": null,
    "params": {
      "Width": 1920,
      "Height": 1080,
      "Framerate": 15,
      "Bitrate": 3000,
      "MaxBitrate": 6000,
      "Quality": 22
    },
    "transform": {
      "x": 0,
      "y": 10.0,
      "z": -10.0,
      "pitch": 30,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "06aef741-23e6-444b-b6d9-18f84f9ace06"}
}

Comfort Sensor top#

AssetBundle

Comfort Sensor will detect whether a vehicle's acceleration, rotation or other values are out of acceptable ranges. For more details, check github.

Parameter Description Unit Type Default Value Minimum Maximum
maxAccelAllowed Maximum acceleration allowed m/s^2 Int
maxJerkAllowed Maximum jerk allowed m/s^3 Int
maxAngularVelocityAllowed Maximum angular velocity allowed deg/s Int
maxAngularAccelerationAllowed Maximum angular acceleration allowed deg/s^2 Int
rollTolerance Maximum deg rotation on the x axis deg Int
slipTolerance Maximum deg difference between vehicle's velocity and vehicle's forward deg Int
{
    "name" : "Comfort Sensor", 
    "parent": null,   
    "params": {
          "maxAccelAllowed": 8,
          "maxJerkAllowed": 4,
          "maxAngularVelocityAllowed": 200,
          "maxAngularAccelerationAllowed": 100,
          "rollTolerance": 10,
          "slipTolerance": 15
        },
        "plugin": {"id": "f96ddc31-02b9-48d9-add5-a920a738236a"}
}

Stop Line Sensor top#

AssetBundle

The Stop Line sensor is a sensor used purely for analyzing the results of a simulation when the Create test report option is enabled for the simulation (See here for more information on test reports). The sensor will allow the simulator to detect and report stop line violations.

{
    "name": "Stop Line Sensor",
    "parent": null,
    "plugin": {"id": "1b94ebcd-0057-4ef5-a9de-23e7f0628e19"}
}

Vehicle Odometry top#

AssetBundle

The Vehicle Odometry sensor publishes information on the vehicle velocity and front and rear angles in ROS and ROS2 using the lgsvl_msgs/VehicleOdometry message type.

{
    "name": "Vehicle Odometry Sensor",
    "parent": null,
    "params": {
        "Topic": "lgsvl/vehicle_odom"
      },
      "plugin": {"id": "662072f8-8123-4e18-9b45-ee801e0bc020"}
}

Vehicle State top#

AssetBundle

The Vehicle State sensor subscribes to information about the state of the vehicle that is not captured in the Can Bus sensor, such as the state of the headlights, blinkers, and wipers, and reflects that state in the simulated ego vehicle. The sensor subscribes in ROS and ROS2 to a topic with the lgsvl_msgs/VehicleStateData message type. See here for all the fields subscribed to by the sensor.

{
    "name": "Vehicle State Sensor",
    "parent": null,
    "params": {
        "Topic": "lgsvl/vehicle_state"
      },
      "plugin": {"id": "8aff00f2-a5e4-4bd3-a778-517f9307fa99"}
}

HUD Keyboard Control top#

AssetBundle

The HUD Keyboard Control sensor is a Keyboard Control sensor with an additional Heads Up Display (HUD) that displays the following information:

  • Speed (mph)
  • Current gear
  • Engine speed (rpm)
  • Ignition status indicator
  • Parking brake indicator

The HUD is shown by enabling the sensor visualization for the HUD Keyboard Sensor.

{
   "name": "HUD Keyboard Control Sensor",
   "parent": null,
   "plugin": {"id": "41fdc7b2-5e2b-4f78-ba1f-e195a5604ad4"}
}

AutowareAI Control top#

AssetBundle

The AutowareAI Control sensor subscribes to the vehicle control topic from Autoware AI in ROS and allows the ego vehicle to react to control commands. The sensor subscribes to autoware_msgs/VehicleCmd message type.

{
   "name": "Vehicle State Sensor",
   "parent": null,
   "params": {
       "Topic": "lgsvl/vehicle_state"
     },
     "plugin": {"id": "76ff7bd1-81bf-4284-b9bf-e8173dc6053e"}
}

Lane-line Sensor top#

AssetBundle

This sensor outputs lines data for the current lane in third-degree polynomial format, along with line type and color. More details are available on the lane-line sensor page.

Parameter Description Unit Type Default Value Minimum Maximum
Width The width of the image output * pixels Int 1920 1 1920
Height The height of the image output * pixels Int 1080 1 1080
Frequency The maximum rate that messages will be published Hertz Int 15 1 100
FieldOfView The vertical angle that the camera sees degrees Float 60 1 90
MinDistance The near plane of the preview camera * meters Float 0.1 0.01 1000
MaxDistance The far plane of the preview camera * meters Float 2000 0.01 2000
DetectionRange Defines how far from the sensor line will be sampled meters Float 50 10 200
SampleDelta The distance between discrete line samples meters Float 0.5 0.05 1

* These parameters only affect the preview, not the output data itself.

{
    "name": "LaneLineSensor",
    "parent": null,
    "params": {
      "Width": 1920,
      "Height": 1080,
      "Frequency": 10,
      "FieldOfView": 60,
      "MinDistance": 0.1,
      "MaxDistance": 2000,
      "DetectionRange": 50,
      "SampleDelta": 0.5,
      "Topic": "/simulator/lane_line"
    },
    "transform": {
      "x": 0,
      "y": 1.7,
      "z": 3.0,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    },
    "plugin": {"id": "5ae0c053-92e5-46e0-b22b-142a3d433dde"}
}

Lane Following Sensor top#

AssetBundle

The Lane Following sensor is used to steer an ego vehicle using a deep learning model. The sensor subscribes to steering commands from the model which are sent as lgsvl_msgs/VehicleControlData messages in ROS2 and applies them to the ego vehicle. Read this tutorial to learn more.

{
    "name": "Lane Following Sensor",
    "parent": null,
    "params": {
        "Topic": "/lanefollowing/steering_cmd"
    },
    "plugin": {"id": "111c4f5f-12a3-48b6-b3df-7d87e158e7d9"}
}

Destination Sensor top#

AssetBundle

The Destination Sensor is used to set an initial pose or a destination pose of an attached agent for Navigation2 stack via python API scripts. The sensor publishes to ROS and ROS2 using the geometry_msgs/PoseStamped message type.

Parameter Description Unit Type Default Value Minimum Maximum
InitPoseTopic Topic name for initial pose String
InitPoseFrame Frame name for initial pose String
DestinationCheckRadius Defines how close a destination must be from the sensor in meters to check whether it has been reached Meters Float 1.0 1.0 10.0
DestinationCheckAngle Defines how close a destination must be from the sensor in degrees to check whether it has been reached Degrees Float 10.0 1.0 360.0
{
    "name": "Destination Sensor",
    "parent": null,
    "params": {
        "Topic": "/goal_pose",
        "Frame": "map",
        "InitPoseTopic": "/initialpose",
        "InitPoseFrame": "map",
        "DestinationCheckRadius": 1.0,
        "DestinationCheckAngle": 10.0
    },
    "plugin": {"id": "087803de-1d56-4db3-93cf-f0018d099b96"}
}