robotPlatform
描述
的robotPlatform
对象表示一个机器人平台在给定机器人的场景。使用这个平台来定义和跟踪对象的轨迹的场景。模拟传感器读数为平台,安装传感器等gpsSensor
,insSensor
,robotLidarPointCloudGenerator
系统对象™平台robotSensor
对象。添加一个身体网格可视化平台使用updateMesh
对象的功能。
创建
描述
创建一个平台指定名称平台
= robotPlatform (的名字
,场景
)的名字
,并将其添加到场景中,指定为一个robotScenario
对象。指定的名字
参数为字符串标量。的的名字
参数设置的名字财产。
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
例子:开始时间= 10
平台的初始时间轨迹设置为10秒。
BaseTrajectory
——关于机器人平台基本运动轨迹
[]
(默认)|waypointTrajectory
对象|polynomialTrajectory
对象
运动轨迹为机器人平台基地,作为指定waypointTrajectory
或polynomialTrajectory
对象。默认情况下,该平台被认为是静止的起源和场景。移动平台在每个场景的模拟步骤,使用移动
对象的功能。
请注意
的robotPlatform
对象必须指定相同的ReferenceFrame
对象属性中指定的轨迹。
IsBinaryOccupied
——占领的二进制状态占用地图
假
(默认)|真正的
占领的二进制状态占用地图,指定为真正的
或假
。将值设置为真正的
如果机器人平台中包含二进制入住率地图。
数据类型:逻辑
InitialBasePosition
——最初的机器人平台基础的位置
(0 0 0)
(默认)|向量的形式(xyz]
最初的机器人平台基础位置,指定为一个向量的形式(xyz]
。如果不指定仅指定这个名称参数BaseTrajectory财产。
数据类型:单
|双
InitialBaseVelocity
——初始速度机器人平台的基础
(0 0 0)
(默认)|向量的形式(vxvvz]
机器人平台的初始速度基地,指定为一个向量的形式(vxvvz]
。如果不指定仅指定这个名称参数BaseTrajectory财产。
数据类型:单
|双
InitialBaseAcceleration
——初始加速度机器人平台的基础
(0 0 0)
(默认)|向量的形式(斧头唉阿兹]
机器人平台的初始加速度基地,指定为一个向量的形式(斧头唉阿兹]
。如果不指定仅指定这个名称参数BaseTrajectory财产。
数据类型:单
|双
InitialBaseOrientation
——最初的机器人平台基本取向
(1 0 0 0)
(默认)|向量的形式(wxyz]
最初的机器人平台基本取向,指定为一个向量的形式(wxyz]
代表一个四元数。如果不指定仅指定这个名称参数BaseTrajectory财产。
数据类型:单
|双
InitialBaseAngularVelocity
——初始角速度机器人平台的基础
(0 0 0)
(默认)|向量的形式(的天气王寅wz]
初始角速度机器人平台的基础,指定为一个向量的形式(的天气王寅wz]
。矢量的大小定义了角弧度/秒的速度。的xyz坐标定义轴顺时针旋转。如果不指定仅指定这个名称参数BaseTrajectory财产。
数据类型:单
|双
InitialJointConfiguration
——初始联合配置rigidBodyTree
基于机器人平台
homeConfiguration
(默认)|N元向量
初始联合的配置rigidBodyTree
基于机器人平台,作为一个指定N元向量。N关节相关的总数吗rigidBodyTree
对象。
数据类型:单
|双
ReferenceFrame
——参考帧计算机器人运动平台
“ENU表示”
(默认)|“内德”
参考帧计算机器人运动平台,指定为“ENU表示”
或“内德”
,匹配任何参考系robotScenario
。计算所有平台运动相对于惯性坐标系。
数据类型:字符串
|字符
RigidBodyTree
——刚体树机器人平台
[]
(默认)|rigidBodyTree
对象
刚体树机器人平台,作为一个指定rigidBodyTree
对象。
开始时间
——机器人平台的初始时间轨迹
0
(默认)|标量在几秒钟内
机器人平台的初始时间轨迹,指定为一个标量在几秒钟内。
数据类型:单
|双
碰撞
——添加碰撞对象网格平台
“默认”
(默认)|假
|“网”
|“胶囊”
|collisionBox
对象|collisionCapsule
对象|collisionCylinder
对象|collisionMesh
对象|collisionSphere
对象
碰撞对象添加到网格平台,指定这些值之一:
假
——保持网格碰撞对象自由的平台。明确现有的碰撞rigidBodyTree
的平台。“默认”
——保持现有碰撞网格rigidBodyTree
的平台。其他平台,使平台网格碰撞自由。“网”
-符合碰撞对象等collisionBox
,collisionCylinder
,collisionMesh
,collisionSphere
基于平台的网格类型。“胶囊”
-符合碰撞胶囊对象与网格平台。创建一个外部碰撞对象:
的rigidBodyTree
的平台只接受外部创建碰撞网格为基础的身体。
CollisionOffset
-转换的碰撞网格相对于网格平台
(4)
(默认)| 4×4齐次变换矩阵
转换的碰撞网格相对于网格平台,指定为一个4×4齐次变换矩阵。使用CollisionOffset
输入rigidBodyTree
只有当的平台碰撞
输入被指定为外部碰撞对象创建。
数据类型:单
|双
属性
的名字
- - - - - -标识符为机器人平台
字符串标量|特征向量
标识符指定的机器人平台,作为一个字符串标量或特征向量。在场景的名称必须是惟一的。
数据类型:字符
|字符串
BaseTrajectory
- - - - - -运动轨迹为机器人平台基地
[]
(默认)|waypointTrajectory
对象|polynomialTrajectory
对象
机器人平台的轨迹运动基地,作为指定waypointTrajectory
或polynomialTrajectory
对象。默认情况下,对象假设的基础平台是固定和场景的起源。当指定为一个waypointTrajectory
或polynomialTrajectory
对象,基础平台的移动沿着轨迹在场景模拟。移动平台在每个场景的模拟步骤,使用移动
对象的功能。
请注意
的robotPlatform
对象必须指定相同的ReferenceFrame
对象属性中指定的轨迹。
ReferenceFrame
- - - - - -参考帧计算机器人运动平台
“ENU表示”
(默认)|“内德”
参考帧计算机器人运动平台,指定为“ENU表示”
或“内德”
,匹配任何参考系robotScenario
。计算所有对象平台运动相对于惯性坐标系。
数据类型:字符
|字符串
RigidBodyTree
- - - - - -刚体树机器人平台
[]
(默认)|rigidBodyTree
对象
刚体树机器人平台,作为一个指定rigidBodyTree
对象。
BaseMesh
- - - - - -机器人平台基本体网格
(1)0.5 - 0.3)
(默认)|extendedObjectMesh
对象
机器人平台基地网,作为一个指定extendedObjectMesh
对象。身体网描述了平台的三维模型可视化的目的。身体网用于生成三维点云。默认的网格是一个长方体的形式(xlengthylengthzlength]
在米。
BaseMeshColor
- - - - - -机器人平台基础身体网颜色
(1 0 0)
(默认)|RGB值
机器人平台基础身体网颜色显示在场景时,指定为一个RGB值。
数据类型:单
|双
BaseMeshTransform
- - - - - -机器人平台基础的身体和网格坐标系之间的变换
(4)
(默认)|4×4齐次变换矩阵
机器人平台基础的身体和网格坐标系之间的变换,指定为一个4×4齐次变换矩阵映射点网格框架分身体框架平台。
数据类型:单
|双
IsBinaryOccupied
- - - - - -机器人平台的二进制状态占用地图
假
(默认)|真正的
机器人平台的二进制状态占用地图,指定为真正的
或假
。
数据类型:逻辑
CollisionMesh
- - - - - -机器人碰撞网格平台的基础
[]
(默认)|collisionBox
对象|collisionCapsule
对象|collisionCylinder
对象|collisionMesh
对象|collisionSphere
对象
身体碰撞网格与机器人相关的平台基础网格,指定为一个碰撞对象。支持的碰金宝app撞对象类型是:collisionBox
,collisionCapsule
,collisionCylinder
,collisionMesh
,collisionSphere
。
CollisionMeshOffset
- - - - - -机器人平台之间的变换基的身体和碰撞网格
(4)
(默认)|4×4齐次变换矩阵
机器人平台基础的身体和碰撞网格之间的变换,指定为一个4×4齐次变换矩阵。
数据类型:单
|双
传感器
- - - - - -传感器安装在机器人平台
[]
(默认)|的数组robotSensor
对象
传感器安装在机器人平台,指定为数组robotSensor
对象。
对象的功能
附加 |
附加目标机器人平台源机器人平台 |
checkCollision |
检查机器人平台和目标的身体碰撞 |
分离 |
分离目标机器人平台从源机器人平台 |
移动 |
在场景中移动机器人平台 |
读 |
读机器人平台的场景 |
updateMesh |
体网格更新机器人平台 |
例子
创建和模拟机器人的场景
创建一个机器人的场景。
场景= 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(场景)结束持有从
在机器人执行选择和场景
创建一个robotScenario
对象。
场景= robotScenario (UpdateRate = 1, StopTime = 10);
创建一个rigidBodyTree
对象的Franka Emika熊猫机械手使用loadrobot
。
robotRBT = loadrobot (“frankaEmikaPanda”);
创建一个rigidBodyTree
的robotPlatform
使用机械手模型对象。
机器人= robotPlatform (“操纵者”场景,…RigidBodyTree = robotRBT);
创建一个非rigidBodyTree
的robotPlatform
一个盒子来操纵的对象。指定网格类型和大小。
盒= robotPlatform (“盒子”场景中,碰撞=“网”,…InitialBasePosition = [0.5 0.15 0.278]);updateMesh(盒子,“长方体”碰撞=“网”、大小= (0.06 0.06 0.1))
想象的场景。
ax = show3D(场景中,碰撞=“上”);视图(79年,36)光
指定的初始和拾音器联合配置机械手,将机械手从最初对接近。
initialConfig = homeConfiguration (robot.RigidBodyTree);pickUpConfig = [0.2371 -0.0200 0.0542 -2.2272 0.0013…2.2072 -0.9670 0.0400 0.0400);
创建一个RRT路径规划使用manipulatorRRT
对象,并指定机械手模型。
规划师= manipulatorRRT (robot.RigidBodyTree scenario.CollisionMeshes);计划。IgnoreSelfCollision = true;
计划之间的路径的初始和拾音器联合配置。然后,想象整个路径,插入路径成小步骤。
rng (“默认”)路径=计划(计划、initialConfig pickUpConfig);路径=插入(规划师,路径,25);
建立了模拟。
设置(场景)
之前检查碰撞机械手拿起盒子。
checkCollision(机器人,“盒子”,…IgnoreSelfCollision =“上”)
ans =逻辑0
移动机械手的关节沿路径和可视化的场景。
helperRobotMove(路径,机器人,场景,ax)
检查碰撞后机械手拿起盒子。
checkCollision(机器人,“盒子”,…IgnoreSelfCollision =“上”)
ans =逻辑1
使用附加
函数把盒子机械手的夹持。
附加(机器人,“盒子”,“panda_hand”,…ChildToParentTransform = trvec2tform ([0 0 0.1]))
指定的下降联合配置机械手移动机械手的上车对箱子下车姿势。
dropOffConfig = [-0.6564 0.2885 -0.3187 -1.5941 0.1103…1.8678 -0.2344 0.04 0.04);
计划之间的道路上车和下车联合配置。
路径=计划(计划、pickUpConfig dropOffConfig);路径=插入(规划师,路径,25);
移动机械手的关节沿路径和可视化的场景。
helperRobotMove(路径,机器人,场景,ax)
使用分离
函数分离机械手爪的盒子。
分离(机器人)
计划下降之间的路径和初始联合配置移动机械手从盒子下降对初始姿势。
路径=计划(计划、dropOffConfig initialConfig);路径=插入(规划师,路径,25);
移动机械手的关节沿路径和可视化的场景。
helperRobotMove(路径,机器人,场景,ax)
Helper函数移动机械手的关节。
函数helperRobotMove(路径,机器人,场景,ax)为idx = 1:尺寸(路径,1)jointConfig =路径(idx:);(移动机器人,“联合”jointConfig) show3D(场景,fastUpdate = true,父母= ax,碰撞=“上”);drawnow推进(场景);结束结束
版本历史
介绍了R2022a
Abrir比如
这种版本modificada德埃斯特比如。害怕Desea abrir埃斯特比如con sus modificaciones吗?
第一de MATLAB
Ha事实clic en联合国围绕此时一个埃斯特第一de MATLAB:
Ejecute el第一introduciendolo en la ventana de第一de MATLAB。洛杉矶navegadores网络没有admiten第一de MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。