跳转至

SensorUss 超声波雷达(原始数据接入)

注意

示例目录:[SimOne 安装目录]\SimOneAPI\SensorRaw\SensorUssRadar

用法简述

物理级超声波雷达数据的演示代码,通过 SimOneAPI 的 GetUltrasonicRadars_Pys 接口获取所有超声波探头的障碍物检测结果,也支持通过 GetUltrasonicRadar_Pys 获取单个探头数据。

接收超声波雷达数据示例

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

std::string mainVehicleId = "0";
std::string sensorId = "ultrasonic_physical1";  // 传感器配置名称

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

int lastFrame = 0;
while (true) {
    // 方式一:获取全部超声波探头数据
    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;
    }

    // 方式二:获取单个超声波探头数据
    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));
}

编译环境

CMakeList.txt 支持生成 windows / ubuntu 的项目工程。

使用流程

在 SimOne 中运行用例,在 VS 中运行算法。