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 中运行算法。