系列文章目录
前言
一、
要快速访问常见的机器人模型,可使用 loadrobot 功能,该功能可加载市售的机器人模型,如 Universal Robots™ UR10 cobot、Boston Dynamics™ Atlas 人形机器人和 KINOVA™ Gen 3 机械手。探索如何生成关节配置并与机器人模型交互。
要导入自己的通用机器人描述格式(URDF),请参阅 importrobot 功能。
以字符串形式向 loadrobot 函数指定机器人模型类型。利用制表符完成从提供的模型列表中选择输入。
若要使用列向量进行关节配置,请将数据格式指定为 "列"。
ur10 = loadrobot("universalUR10");
atlas = loadrobot("atlas");
gen3 = loadrobot("kinovaGen3","DataFormat","column");
loadrobot 函数返回一个刚体树(rigidBodyTree)对象,该对象表示每个机器人模型的运动学和动力学。某些模型可能没有加载刚体的动力学或惯性属性。请使用 Bodies 属性或 getBody 函数检查各个刚体。
disp(gen3);
rigidBodyTree with properties:NumBodies: 8Bodies: {[1x1 rigidBody] [1x1 rigidBody] [1x1 rigidBody] [1x1 rigidBody] [1x1 rigidBody] [1x1 rigidBody] [1x1 rigidBody] [1x1 rigidBody]}Base: [1x1 rigidBody]BodyNames: {'Shoulder_Link' 'HalfArm1_Link' 'HalfArm2_Link' 'ForeArm_Link' 'Wrist1_Link' 'Wrist2_Link' 'Bracelet_Link' 'EndEffector_Link'}BaseName: 'base_link'Gravity: [0 0 0]DataFormat: 'column'
调用 show 可视化主配置中的机器人模型。用其他模型替换 gen3 对象,使其可视化。
show(gen3);
show(atlas);
show(ur10);
二、生成关节配置
为 KINOVA Gen3 机器人生成随机配置。随机配置(randomConfiguration)函数可在模型限制范围内输出随机关节位置。为验证模型是否符合预期,可视化一组四种配置。
for i = 1:4subplot(2,2,i)config = randomConfiguration(gen3);show(gen3,config);
end
三、与机器人模型互动
要移动机器人模型并检查其行为,可加载交互式刚体树图形用户界面。您可以设置末端执行器的目标位置,手动移动关节,并选择模型中的各种元素。
interactiveGUI = interactiveRigidBodyTree(gen3);
单击并拖动中心圆盘可自由移动目标末端执行器的位置。图形用户界面使用逆运动学求解每个肢体的关节位置。使用轴线进行线性移动,使用圆圈绕轴旋转。
点击刚体可查看其具体参数。
右键单击可设置不同的目标标记体。更改目标体可更新逆运动学求解器的末端执行器。
要手动控制关节,请右击并切换标记控制方法。
要控制所选肢体上一个旋进关节的旋转,请单击并拖动黄色圆圈。
四、保存关节配置
保存使用 addConfiguration 函数设置的特定配置,该函数会将当前关节位置存储在 StoredConfigurations 属性中。本示例在存储前设置了一个随机配置。
interactiveGUI.Configuration = randomConfiguration(gen3);
addConfiguration(interactiveGUI)
disp(interactiveGUI.StoredConfigurations)
-0.4218-1.66471.3419-2.08181.8179-0.4140-1.4517
五、下一步
现在您已经在 MATLAB® 中建立了模型,您可能想要做许多不同的事情。
- 执行逆运动学,根据所需的末端执行器位置获得关节配置。指定模型参数以外的其他机器人约束条件,包括瞄准约束条件、笛卡尔边界或姿势目标。
- 利用梯形速度曲线、B-样条曲线或多项式轨迹,根据航点和其他参数生成轨迹。
- 利用机器人模型和快速探索随机树 (RRT) 路径规划器执行机械手规划。
- 检查与环境中障碍物的碰撞检测,确保机器人安全有效地运动。