主要内容

createCustomSensorTemplate

创建示例实现无人机自定义传感器接口

描述

例子

createCustomSensorTemplate创建了一个样本实现无人机自定义传感器的继承uav.SensorAdaptor类。这在MATLAB函数打开一个新文件®编辑器。

例子

全部折叠

创建一个传感器的适配器imuSensor从导航工具箱™和收集数据的模拟无人机飞行场景。

创建传感器适配器

使用createSensorAdaptorTemplate函数模板来生成一个传感器和更新它适应imuSensor无人机场景中对象使用。

createCustomSensorTemplate

这个例子provivdes适配器类uavIMU,可以使用下面的命令查看。

编辑uavIMU.m

在无人机使用传感器适配器场景模拟

在无人机使用乌兹别克斯坦伊斯兰运动传感器适配器场景模拟。首先,创建的场景。

场景= uavScenario (“StopTime”8“UpdateRate”,100);

创建一个无人机平台和指定轨迹。添加一个固定翼网可视化。

平台= uavPlatform (“无人机”场景,“轨迹”,waypointTrajectory ([0 0 0;100 0 0;100 100 0],“TimeOfArrival”,[0 5 8],“AutoBank”,真的));updateMesh(平台,“fixedwing”{10},(1 0 0),eul2tform([0 0π]));

附加乌兹别克斯坦伊斯兰运动传感器使用uavSensor对象和指定uavIMU作为输入。负载参数传感器模型。

imu = uavSensor (“IMU”平台,uavIMU (imuSensor));fn = fullfile (matlabroot,“工具箱”,“共享”,“定位”,“positioningdata”,“generic.json”);loadparams (imu.SensorModel fn,“GenericLowCost9Axis”);

想象的场景。

图ax = show3D(场景);xlim(200年[-20]);ylim(200年[-20]);

Preallocate的simData结构和字段来存储仿真数据。乌兹别克斯坦伊斯兰运动加速度和角速率传感器将输出。

simData =结构;simData。时间= duration.empty;simData。AccelerationX = 0 (0, 1);simData。AccelerationY = 0 (0, 1);simData。AccelerationZ = 0 (0, 1);simData。AngularRatesX = zeros(0,1); simData.AngularRatesY = zeros(0,1); simData.AngularRatesZ = zeros(0,1);

设置的场景。

设置(场景);

运行仿真使用推进函数。传感器和记录的数据进行更新。

updateCounter = 0;真正的%的进步情况。正在=进步(场景);updateCounter = updateCounter + 1;%更新传感器和读取IMU数据。updateSensors(场景);[isUpdated t acc,陀螺]=阅读(imu);%在结构中存储数据。simData。时间= [simData.Time;秒(t)];simData。AccelerationX = [simData.AccelerationX;acc (1)];simData。AccelerationY = [simData.AccelerationY;acc (2)];simData。AccelerationZ = [simData.AccelerationZ; acc(3)]; simData.AngularRatesX = [simData.AngularRatesX; gyro(1)]; simData.AngularRatesY = [simData.AngularRatesY; gyro(2)]; simData.AngularRatesZ = [simData.AngularRatesZ; gyro(3)];%更新可视化每10更新。如果updateCounter > 10 show3D(场景中,“FastUpdate”,真的,“父”、ax);updateCounter = 0;drawnowlimitrate结束%完成场景时退出循环。如果~正在打破;结束结束

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的补丁。

可视化模拟IMU读数。

simTable = table2timetable (struct2table (simData));图stackedplot (simTable, (“AccelerationX”,“AccelerationY”,“AccelerationZ”,“AngularRatesX”,“AngularRatesY”,“AngularRatesZ”),“DisplayLabels”,(“AccX (m / s ^ 2)”,“AccY (m / s ^ 2)”,“AccZ (m / s ^ 2)”,“AngularRateX (rad / s)”,“AngularRateY (rad / s)”,“AngularRateZ (rad / s)”]);

图包含一个stackedplot类型的对象。

另请参阅

介绍了R2021a