Skip to content

Sensor Classes

2.1 SensorAPI

New Retrieve configuration information for all sensors (ID, type, frequency, position, orientation, etc.) GetSensorConfigurations SoGetSensorConfigurations
New Retrieve road marking information detected by a sensor (includes lane stop lines, ground arrows, and pedestrian crossings) GetSensorRoadMarkInfo SoGetSensorRoadMarkInfo
Retrieve road marking information detected by a sensor — data callback (includes lane stop lines, ground arrows, and pedestrian crossings) SetSensorRoadMarkInfoCB SoApiSetSensorRoadMarkInfoCB

Sensor Simulation Type Description

Sensors in autonomous driving systems are divided into two categories — object-level and physical-level — each serving different application scenarios:

Sensor Type Activation API
Object-Level Sensor — retrieves information about target objects (position, velocity, etc.) for sensor fusion algorithms Set the enable parameter to true to start receiving data: SIMONE_NET_API bool SetSensorObjectbasedDataEnable(bool enable);
Physical-Level Sensor — provides physical data such as images and point clouds, used for testing and validating perception algorithms Set the enable parameter to true to start receiving data: SIMONE_NET_API bool SetSensorPhysicalbasedDataEnable(bool enable);

Note

When using the UDP data injection method to retrieve physical-level sensor data, the sensor activation API is not required, as UDP injection directly provides the necessary data.

*UDP (User Datagram Protocol): A lightweight network communication protocol that allows applications to send data packets without establishing a persistent connection.

2.1.1 GPS

Available APIs for retrieving GPS data:

Event API
Get Ego Vehicle GPS data SIMONE_NET_API bool GetGps(int mainVehicleId, SimOne_Data_Gps *pGps)
Ego Vehicle GPS update callback SIMONE_NET_API bool SetGpsUpdateCB(void(*cb)(int mainVehicleId, SimOne_Data_Gps *pGps))
  • mainVehicleId is the Ego Vehicle ID. The pGps data structure SimOne_Data_Gps is as follows:
Field Description
float posX; X coordinate in the OpenDRIVE map coordinate system (unit: meters)
float posY; Y coordinate in the OpenDRIVE map coordinate system (unit: meters)
float posZ; Z coordinate in the OpenDRIVE map coordinate system (unit: meters)
float oriX; Rotation X in the OpenDRIVE map coordinate system (unit: radians)
float oriY; Rotation Y in the OpenDRIVE map coordinate system (unit: radians)
float oriZ; Rotation Z in the OpenDRIVE map coordinate system (unit: radians)
float velX; Velocity X in the OpenDRIVE map coordinate system (unit: m/s)
float velY; Velocity Y in the OpenDRIVE map coordinate system (unit: m/s)
float velZ; Velocity Z in the OpenDRIVE map coordinate system (unit: m/s)
float throttle; Ego Vehicle throttle
float brake; Ego Vehicle brake
float steering; Ego Vehicle steering
int gear; Ego Vehicle gear
float accelX; Acceleration X in the OpenDRIVE map coordinate system (unit: m/s²)
float accelY; Acceleration Y in the OpenDRIVE map coordinate system (unit: m/s²)
float accelZ; Acceleration Z in the OpenDRIVE map coordinate system (unit: m/s²)
float angVelX; Angular velocity direction X in the OpenDRIVE map coordinate system (unit: radians)
float angVelY; Angular velocity direction Y in the OpenDRIVE map coordinate system (unit: radians)
float angVelZ; Angular velocity direction Z in the OpenDRIVE map coordinate system (unit: radians)
float wheelSpeedFL; Front-left wheel speed (unit: m/s)
float wheelSpeedFR; Front-right wheel speed (unit: m/s)
float wheelSpeedRL; Rear-left wheel speed (unit: m/s)
float wheelSpeedRR; Rear-right wheel speed (unit: m/s)
float engineRpm; Engine RPM (unit: r/min)
float odometer; Ego Vehicle odometer (unit: meters)

2.1.2 Camera and Object-Level Camera

2.1.2.1 Physical-Level Camera

Event API
Get image data SIMONE_NET_API bool GetImage(const int mainVehicleId, const int sensorId, SimOne_Data_Image *pImage)
Set image update callback SIMONE_NET_API bool SetImageUpdateCB(void(*cb)(int mainVehicleId, int sensorId, SimOne_Data_Image *pImage))
Get streaming image data SIMONE_NET_API bool GetStreamingImage(const char* ip, unsigned short port, SimOne_Data_Image *pImage)
Set streaming image callback SIMONE_NET_API bool SetStreamingImageCB(const char* ip, unsigned short port, void(*cb)(SimOne_Data_Image *pImage))

mainVehicleId is the Ego Vehicle ID; sensorId is the camera ID; ip is the receiver's IP address; port is the assigned port number; pImage contains per-frame image data. The SimOne_Data_Image structure is as follows:

Field Description
int width; Image width
int height; Image height
SimOne_Image_Format format; Image format — currently only RGB (8 bits per channel) is supported
int imageDataSize; Image data size
char imageData[SOSM_IMAGE_DATA_SIZE_MAX]; Image data array, max 1920 × 1200 × 3

Methods 1 and 2 do not require UDP configuration. Methods 3 and 4 (streaming) require UDP configuration on the web portal channel, for example: udp://127.0.0.1:13956. See the screenshot below:

2.1.2.2 Object-Level Camera

Event API
Get ground-truth detections for objects detected by a sensor (supports object-level camera, object-level LiDAR, and perfect sensor) SIMONE_NET_API bool GetSensorDetections(int mainVehicleId, int sensorId, SimOne_Data_SensorDetections *pGroundtruth)
Sensor detection update callback (supports object-level camera, object-level LiDAR, and perfect sensor) SIMONE_NET_API bool SetSensorDetectionsUpdateCB(void(*cb)(int mainVehicleId, int sensorId, SimOne_Data_SensorDetections *pGroundtruth))
Get lane and lane line data detected by a sensor (object-level camera and fusion sensor only) SIMONE_NET_API bool GetSensorLaneInfo(int mainVehicleId, int sensorId, SimOne_Data_LaneInfo *pLaneInfo)
Get lane and lane line data detected by a sensor — callback SIMONE_NET_API bool SetSensorLaneInfoCB(void(*cb)(int mainVehicleId, int sensorId, SimOne_Data_LaneInfo *pLaneInfo))
  • pGroundtruth is a collection of detected objects. The SimOne_Data_SensorDetections structure is as follows:
Field Description
int objectSize; Number of objects
SimOne_Data_SensorDetections_Entry objects[SOSM_SENSOR_DETECTIONS_OBJECT_SIZE_MAX]; Object array, max 256 entries
  • The SimOne_Data_SensorDetections_Entry structure is as follows:
Field Description
int id; Object ID
SimOne_Obstacle_Type type; Object type, consistent with the physical material type of the obstacle
float posX; Object X coordinate in the world coordinate system (unit: meters)
float posY; Object Y coordinate in the world coordinate system (unit: meters)
float posZ; Object Z coordinate in the world coordinate system (unit: meters)
float oriX; Object rotation around the X-axis in the world coordinate system (unit: radians)
float oriY; Object rotation around the Y-axis in the world coordinate system (unit: radians)
float oriZ; Object rotation around the Z-axis in the world coordinate system (unit: radians)
float length; Object length (unit: meters)
float width; Object width (unit: meters)
float height; Object height (unit: meters)
float range; Distance from the object to the sensor (unit: meters)
float velX; Object velocity on the X-axis (unit: km/h)
float velY; Object velocity on the Y-axis (unit: km/h)
float velZ; Object velocity on the Z-axis (unit: km/h)
float probability; Confidence that the object belongs to the current type (0–1)
float relativePosX; Object X coordinate relative to the sensor (unit: meters)
float relativePosY; Object Y coordinate relative to the sensor (unit: meters)
float relativePosZ; Object Z coordinate relative to the sensor (unit: meters)
float relativeRotX; Object X-axis rotation relative to the sensor (unit: meters)
float relativeRotY; Object Y-axis rotation relative to the sensor (unit: meters)
float relativeRotZ; Object Z-axis rotation relative to the sensor (unit: meters)
float relativeVelX; Object velocity relative to the sensor in the X direction (unit: km/h)
float relativeVelY; Object velocity relative to the sensor in the Y direction (unit: km/h)
float relativeVelZ; Object velocity relative to the sensor in the Z direction (unit: km/h)
float bbox2dMinX; X coordinate of the top-left corner of the 2D bounding box in pixel coordinates
float bbox2dMinY; Y coordinate of the top-left corner of the 2D bounding box in pixel coordinates
float bbox2dMaxX; X coordinate of the bottom-right corner of the 2D bounding box in pixel coordinates
float bbox2dMaxY; Y coordinate of the bottom-right corner of the 2D bounding box in pixel coordinates
  • pLaneInfo is a lane information set. The SimOne_Data_LaneInfo structure is as follows:
Field Description
int id; Lane ID
ESimOneLaneType laneType; Lane type
int laneLeftID; ID of the lane to the left of the current lane
int laneRightID; ID of the lane to the right of the current lane
int lanePredecessorID[SOSM_SENSOR_LANE_OBJECT_SIZE_MAX]; Predecessor lane collection for the current lane, max 256
int laneSuccessorID[SOSM_SENSOR_LANE_OBJECT_SIZE_MAX]; Successor lane collection for the current lane, max 256
SimOne_Data_LaneLineInfo l_Line; Left edge line information of the current lane
SimOne_Data_LaneLineInfo c_Line; Center line information of the current lane
SimOne_Data_LaneLineInfo r_Line; Right edge line information of the current lane
SimOne_Data_LaneLineInfo ll_Line; Left-left edge line information of the current lane
SimOne_Data_LaneLineInfo rr_Line; Right-right edge line information of the current lane

2.1.3 Perfect Sensor

  • A perfect sensor is used to retrieve ground-truth values for objects. It provides object-level information only. Related APIs:
Event API
Get ground-truth object information in the simulation scene SIMONE_NET_API bool GetObstacle(const char* mainVehicleId, SimOne_Data_Obstacle *pObstacle)
Ground-truth object information update callback SIMONE_NET_API bool SetObstacleUpdateCB(void(*cb)(const char* mainVehicleId, SimOne_Data_Obstacle *pObstacle))
Get ground-truth detections for objects detected by a sensor (supports object-level camera, object-level LiDAR, and perfect sensor) SIMONE_NET_API bool GetSensorDetections(int mainVehicleId, int sensorId, SimOne_Data_SensorDetections *pGroundtruth)
Sensor detection update callback (supports object-level camera, object-level LiDAR, and perfect sensor) SIMONE_NET_API bool SetSensorDetectionsUpdateCB(void(*cb)(int mainVehicleId, int sensorId, SimOne_Data_SensorDetections *pGroundtruth))
  • APIs 3 and 4 have been described above. The SimOne_Data_Obstacle structure used by APIs 1 and 2 is as follows:
Field Description
int obstacleSize; Number of objects
SimOne_Data_Obstacle_Entry obstacle[SOSM_OBSTACLE_SIZE_MAX]; Object array, max 100 entries
  • The SimOne_Data_Obstacle_Entry structure is as follows:
Field Description
int id; Object ID
int viewId; Object visualization ID
SimOne_Obstacle_Type type; Object type, consistent with the physical material type of the obstacle
float theta; Azimuth in the global coordinate system — uses the value of oriZ
float posX; Object X coordinate in the world coordinate system (unit: meters)
float posY; Object Y coordinate in the world coordinate system (unit: meters)
float posZ; Object Z coordinate in the world coordinate system (unit: meters)
float oriX; Object X-axis rotation in the world coordinate system (unit: radians)
float oriY; Object Y-axis rotation in the world coordinate system (unit: radians)
float oriZ; Object Z-axis rotation in the world coordinate system (unit: radians)
float velX; Object velocity on the X-axis (unit: km/h)
float velY; Object velocity on the Y-axis (unit: km/h)
float velZ; Object velocity on the Z-axis (unit: km/h)
float length; Object length (unit: meters)
float width; Object width (unit: meters)
float height; Object height (unit: meters)

2.1.4 Ultrasonic Radar

The ultrasonic radar detects the relative distance from obstacles to the sensor and returns obstacle position information. Related APIs:

Event API
Get data from a single ultrasonic radar SIMONE_NET_API bool GetUltrasonicRadar(int mainVehicleId, int sensorId, SimOne_Data_UltrasonicRadar *pUltrasonic)
Get data from all ultrasonic radars SIMONE_NET_API bool GetUltrasonicRadars(int mainVehicleId, SimOne_Data_UltrasonicRadars *pUltrasonics)
Ultrasonic radar ground-truth update callback SIMONE_NET_API bool SetUltrasonicRadarsCB(void(*cb)(int mainVehicleId, SimOne_Data_UltrasonicRadars *pUltrasonics))

API 1 retrieves data from a single ultrasonic radar; API 2 returns all ultrasonic radar data as a collection.

  • The SimOne_Data_UltrasonicRadar structure is as follows:
Field Description
int id; Ultrasonic radar ID
int obstacleNum; Number of obstacles detected by the radar
SimOne_Data_UltrasonicRadarDetection_Entry obstacledetections[SOSM_OBSTACL_SIZE_MAX]; Detected obstacle collection, max 100 entries
  • The SimOne_Data_UltrasonicRadarDetection_Entry structure is as follows:
Field Description
float obstacleRanges = 0; Distance from the obstacle to the sensor (unit: meters)
float x = 0; X coordinate of the obstacle relative to the sensor (unit: meters)
float y = 0; Y coordinate of the obstacle relative to the sensor (unit: meters)
  • The SimOne_Data_UltrasonicRadars structure is as follows:
Field Description
int UltrasonicRadarsNum; Number of ultrasonic radars
SimOne_Data_UltrasonicRadar ultrasonicRadars[SOSM_ULTRASONICRADAR_SIZE_MAX]; Ultrasonic radar collection, max 100 entries

2.1.5 Millimeter-Wave Radar

The millimeter-wave radar detects the distance, velocity, and angle of targets. Related APIs:

Event API
Get millimeter-wave radar target information SIMONE_NET_API bool GetRadarDetections(const int mainVehicleId, const int sensorId, SimOne_Data_RadarDetection *pDetections)
Millimeter-wave radar target information update callback SIMONE_NET_API bool SetRadarDetectionsUpdateCB(void(*cb)(int mainVehicleId, int sensorId, SimOne_Data_RadarDetection *pDetections))
  • Input: mainVehicleId is the Ego Vehicle ID; sensorId is the radar ID.

  • Output: SimOne_Data_RadarDetection *pDetections. Structure:

  • struct SimOne_Data_RadarDetection : public SimOne_Data

Field Description
int detectNum; Number of detected objects
SimOne_Data_RadarDetection_Entry detections[SOSM_RADAR_SIZE_MAX]; Detected object collection
  • struct SimOne_Data_RadarDetection_Entry
Field Description
int id; Object ID
int subId; Object sub-ID
SimOne_Obstacle_Type type; Object type
float posX; Object X position in the radar coordinate system (right-hand system: X = forward, Z = up)
float posY; Object Y position in the radar coordinate system
float posZ; Object Z position in the radar coordinate system
float velX; Object X-axis velocity in the radar coordinate system
float velY; Object Y-axis velocity in the radar coordinate system
float velZ; Object Z-axis velocity in the radar coordinate system
float range; Object distance in the radar coordinate system
float rangeRate; Object radial velocity in the radar coordinate system
float azimuth; Object azimuth angle in the radar coordinate system
float vertical; Object elevation angle in the radar coordinate system
float snrdb; Object echo signal-to-noise ratio
float rcsdb; Object RCS value
float probability; Object detection confidence

2.1.6 LiDAR and Object-Level LiDAR

2.1.6.1 Physical-Level LiDAR

Event API
1 SIMONE_NET_API bool GetPointCloud(int mainVehicleId, int sensorId, SimOne_Data_Point_Cloud *pPointCloud)
2 SIMONE_NET_API bool SetPointCloudUpdateCB(void(*cb)(int mainVehicleId, int sensorId, SimOne_Data_Point_Cloud *pPointCloud))
3 SIMONE_NET_API bool GetStreamingPointCloud(const char ip, unsigned short port, unsigned short infoPort, SimOne_Data_Point_Cloud *pPointCloud)
4 SIMONE_NET_API bool SetStreamingPointCloudUpdateCB(const char* ip, unsigned short port, unsigned short infoPort, void(*cb)(SimOne_Data_Point_Cloud *pPointCloud))

mainVehicleId is the Ego Vehicle ID; sensorId is the LiDAR ID; ip is the receiver IP; port is the LiDAR data port; infoPort is the user-configured info port; pPointCloud contains per-frame point cloud data.

Methods 1 and 2 do not require UDP configuration. Methods 3 and 4 require UDP configuration on the web portal channel, for example: udp://127.0.0.1:6699. See the screenshot below:

2.1.6.2 Object-Level LiDAR

Event API
1 SIMONE_NET_API bool GetSensorDetections(int mainVehicleId, int sensorId, SimOne_Data_SensorDetections *pGroundtruth)
2 SIMONE_NET_API bool SetSensorDetectionsUpdateCB(void(*cb)(int mainVehicleId, int sensorId, SimOne_Data_SensorDetections *pGroundtruth))

The pGroundtruth and SimOne_Data_SensorDetections structures have been described in the Camera and Object-Level Camera API section.

2.1.7 Object-Level Fusion Sensor

Event API
Get ground-truth detections for objects detected by a sensor (supports object-level camera, object-level LiDAR, and perfect sensor) SIMONE_NET_API bool GetSensorDetections(int mainVehicleId, int sensorId, SimOne_Data_SensorDetections *pGroundtruth)
Sensor detection update callback (supports object-level camera, object-level LiDAR, and perfect sensor) SIMONE_NET_API bool SetSensorDetectionsUpdateCB(void(*cb)(int mainVehicleId, int sensorId, SimOne_Data_SensorDetections *pGroundtruth))
Get lane and lane line data detected by a sensor (object-level camera and fusion sensor only) SIMONE_NET_API bool GetSensorLaneInfo(int mainVehicleId, int sensorId, SimOne_Data_LaneInfo *pLaneInfo)
Get lane and lane line data detected by a sensor — callback SIMONE_NET_API bool SetSensorLaneInfoCB(void(*cb)(int mainVehicleId, int sensorId, SimOne_Data_LaneInfo *pLaneInfo))

The pGroundtruth, SimOne_Data_SensorDetections, and SimOne_Data_LaneInfo structures have been described in the Camera and Object-Level Camera API section.