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.