主要内容

createCustomSensorTemplate

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

描述

例子

createCustomSensorTemplate创建UAV自定义传感器的示例实现,该传感器继承自UAV.SensorAdaptor.类。这个函数在MATLAB中打开一个新文件®编辑器。

例子

全部折叠

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

创建传感器适配器

使用createSensorAdaptorTemplate函数生成模板传感器并对其进行更新以适应imuSensor用于无人机场景的对象。

createCustomSensorTemplate

这个例子提供了适配器类uavIMU,可以使用以下命令查看。

编辑uavIMU.m

在UAV方案模拟中使用传感器适配器

在UAV方案模拟中使用IMU传感器适配器。首先,创建方案。

场景= uavScenario (“停止”,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 pi]));

使用该附加IMU传感器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的辛迪塔存储模拟数据的结构和字段。IMU传感器将输出加速度和角度率。

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;尽管真的%的进步情况。isrunning =推进(情景);UpdateCounter = UpdateCounter + 1;%更新传感器并读取IMU数据。更新(方案);[iSupdated,T,ACC,Gyro] =读(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结束场景结束时退出循环。如果~正在打破结束结束

图中包含一个轴对象。axis对象包含一个patch类型的对象。

可视化模拟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)”]);

Figure包含一个类型为stackedplot的对象。

另请参阅

介绍了R2021a