Skip to content

SensorUSS — Ultrasonic Radar (Physical-Level Raw Data Ingestion)

Note

Example directory: [SimOne installation directory]\SimOneAPI\SensorRaw\SensorUssRadar

Overview

Demo code for physical-level ultrasonic radar data. Use GetUltrasonicRadars_Pys to retrieve obstacle detection results from all ultrasonic probes, or use GetUltrasonicRadar_Pys to retrieve data from a single probe.

Receiving Ultrasonic Radar Data

#include <SimOneServiceAPI.h>
#include <SimOneSensorAPI.h>

std::string mainVehicleId = "0";
std::string sensorId = "ultrasonic_physical1";  // Sensor configuration name

// Initialize SimOne API
SimOneAPI::InitSimOneAPI(mainVehicleId.c_str(), false, "127.0.0.1");

int lastFrame = 0;
while (true) {
    // Method 1: Get data from all ultrasonic probes
    std::unique_ptr<SimOne_Data_UltrasonicRadars_Pys> pAll =
        std::make_unique<SimOne_Data_UltrasonicRadars_Pys>();
    if (SimOneAPI::GetUltrasonicRadars_Pys(mainVehicleId.c_str(), pAll.get()) &&
        pAll->frame != lastFrame)
    {
        for (int ussIndex = 0; ussIndex < pAll->ultrasonicRadarNum; ussIndex++) {
            for (int i = 0; i < pAll->ultrasonicRadars[ussIndex].obstacleNum; i++) {
                auto& det = pAll->ultrasonicRadars[ussIndex].obstacleDetections[i];
                printf("sourceid:%d, dstid:%d, range:%.2f, x:%.2f, y:%.2f, z:%.2f, semantictype:%d\n",
                    det.sourceid, det.dstid, det.obstacleRanges,
                    det.x, det.y, det.z, det.semantictype);
            }
        }
        lastFrame = pAll->frame;
    }

    // Method 2: Get data from a single ultrasonic probe
    std::unique_ptr<SimOne_Data_UltrasonicRadar_Pys> pOne =
        std::make_unique<SimOne_Data_UltrasonicRadar_Pys>();
    if (SimOneAPI::GetUltrasonicRadar_Pys(mainVehicleId.c_str(), sensorId.c_str(), pOne.get())) {
        for (int num = 0; num < pOne->obstacleNum; num++) {
            auto& det = pOne->obstacleDetections[num];
            printf("sourceid:%d, dstid:%d, range:%.2f\n",
                det.sourceid, det.dstid, det.obstacleRanges);
        }
    }

    std::this_thread::sleep_for(std::chrono::milliseconds(10));
}

Build Environment

CMakeLists.txt supports generating projects for Windows and Ubuntu.

Usage

Run the use case in SimOne, then run the algorithm in Visual Studio.