主要内容

robotScenario

生成机器人仿真场景

自从R2022a

    描述

    robotScenario组成的静态网格对象生成一个模拟场景,在3 d环境中机器人平台和传感器。

    创建

    描述

    场景= robotScenario创建一个空的机器人的场景用默认属性值。默认的惯性系是east-north-up (ENU表示)和north-east-down (NED)框架。

    例子

    场景= robotScenario (名称=值)配置一个robotScenario使用一个或多个名称参数对象的属性。

    属性

    全部展开

    模拟更新率,指定为一个积极的标量赫兹。当使用一个场景的步长推进目标函数等于更新率的倒数。

    例子:2

    数据类型:|

    停止时间的模拟,指定为一个非负标量在几秒钟内。一个场景停止推进当它到达停止时间。

    例子:60

    数据类型:|

    最大数量的步骤保存在场景中,指定为一个正整数比1。这个属性决定了平台的最大帧数对存储在场景。如果模拟步骤的数目超过这个属性的值,那么这个场景只存储的最新步骤。

    例子:60

    数据类型:|

    场景的起源在大地坐标系,指定为一个三元素向量的形式(纬度经度高度]纬度经度大地坐标在度。高度是WGS84参考椭球体的高度米。

    例子:1673年(46.017 - 7.750)

    数据类型:|

    最大帧数在该方案中,指定为一个正整数。惯性系的组合数量、平台和传感器添加到场景必须小于或等于这个属性的值。

    例子:15

    数据类型:|

    这个属性是只读的。

    当前仿真时间,指定为负的标量。

    数据类型:|

    这个属性是只读的。

    显示场景是否运行,指定为真正的。一个场景模拟启动后,它运行,直到它到达停止时间。

    数据类型:逻辑

    这个属性是只读的。

    转换所有的帧之间的信息的情况下,指定为一个transformTree对象。这个属性包含惯性之间的转换信息,平台和传感器与场景相关的框架。

    这个属性是只读的。

    惯性系的名字在该方案中,指定为一个向量的字符串。

    数据类型:字符串

    这个属性是只读的。

    静态网格在该方案中,指定为1×-N单元阵列的extendedObjectMesh对象。

    这个属性是只读的。

    碰撞网格在该方案中,指定为1×-N细胞碰撞对象的数组。支持的碰金宝app撞对象类型是:collisionBox,collisionCapsule,collisionCylinder,collisionMesh,collisionSphere

    这个属性是只读的。

    机器人平台在该方案中,指定为数组robotPlatform对象。

    对象的功能

    addInertialFrame 定义新的惯性坐标系在机器人的场景
    addMesh 添加新的静态网格机器人的场景
    推进 推进机器人场景模拟时间步
    binaryOccupancyMap 从机器人的场景创建二维二进制入住率地图
    重新启动 复位机器人场景的模拟
    设置 准备模拟机器人的场景
    show3D 想象机器人在三维场景中
    updateSensors 更新机器人中的传感器读数的场景

    例子

    全部折叠

    创建一个机器人的场景。

    场景= robotScenario (UpdateRate = 100, StopTime = 1);

    添加网格的地平面和一盒。

    addMesh(场景中,“平面”、大小= 3[3],颜色= [0.7 0.7 0.7]);addMesh(场景中,“盒子”、大小=(0.5 0.5 0.5),位置= [0 0 0.25],颜色= [0 1 0))

    创建一个路径轨迹的机器人平台使用ENU表示参考系。

    路标= [0 1 0;1 0 0;1 1 0;0 1 0];toa = linspace(0, 1,长度(路标));traj = waypointTrajectory (“锚点”路标,“TimeOfArrival”toa,“ReferenceFrame”,“ENU表示”);

    创建一个rigidBodyTree对象TurtleBot 3华夫格π的机器人loadrobot

    robotRBT = loadrobot (“robotisTurtleBot3WafflePi”);

    创建一个机器人平台与轨迹。

    平台= robotPlatform (“TurtleBot”场景,BaseTrajectory = traj);

    设置网格的平台rigidBodyTree对象。

    updateMesh(平台,“RigidBodyTree”对象= robotRBT)

    创建一个INS传感器对象和附加的传感器平台。

    ins = robotSensor (“英寸”、平台、insSensor (“RollAccuracy”0),UpdateRate = scenario.UpdateRate);

    想象的场景。

    [ax, plotFrames] = show3D(场景);轴平等的持有

    在一个循环,一步通过轨迹输出位置,方向,速度,加速度和角速度。

    数= 1;~结束(traj)[位置(计数,:),姿态(计数,:),速度(计数,:)加速度(计数,:),AngularVelocity(计数,:)]= traj ();数=计数+ 1;结束

    创建一条线轨迹图。首先创建的阴谋plot3,然后手动修改数据源属性的阴谋。这提高了绘制的性能。

    trajPlot = plot3(南南、南“颜色”(1 1 1),“线宽”2);trajPlot。XDataSource =“位置(:1)”;trajPlot。YDataSource =“位置(:,2)”;trajPlot。ZDataSource =“位置(:,3)”;

    建立了模拟。然后,遍历的位置并显示现场每次INS传感器更新。推进现场,移动机器人平台,并更新传感器。

    设置(场景)idx = 1:把1%读取传感器读数。[isUpdated insTimestamp (idx, 1), sensorReadings (idx)] =阅读(ins);如果isUpdated%使用快速更新移动平台的可视化框架。show3D(场景,FastUpdate = true,父= ax);%刷新所有情节数据和可视化。refreshdata drawnowlimitrate结束%场景模拟的时间。推进(场景);%更新场景中所有的传感器。updateSensors(场景)结束持有

    图包含一个坐标轴对象。坐标轴对象包含东(m), ylabel北(m)包含28个对象类型的补丁,线。

    版本历史

    介绍了R2022a