系列文章目录
前言
一、用法
com = centerOfMass(robot)
com = centerOfMass(robot,configuration)
[com,comJac] = centerOfMass(robot,configuration)
二、说明
- com = centerOfMass(robot) 计算机器人模型在原点构型处相对于基础坐标系的质心位置。
- com = centerOfMass(robot,configuration) 计算机器人模型在指定关节配置处相对于基准坐标系的质心位置。
- [com,comJac] = centerOfMass(robot,configuration) 还返回质心雅各布系数,它将质心速度与关节速度联系起来。
三、示例
3.1 计算机器人配置的质量中心和雅各布系数
从机器人系统工具箱™ loadrobot 中加载库卡 LBR iiwa 机器人模型。该模型被指定为刚体树(rigidBodyTree)对象。
lbr = loadrobot("kukaIiwa14")
lbr =
rigidBodyTree - 属性:
NumBodies: 10
Bodies: {[1×1 rigidBody] [1×1 rigidBody] [1×1 rigidBody] [1×1 rigidBody] [1×1 rigidBody] [1×1 rigidBody] [1×1 rigidBody] [1×1 rigidBody] [1×1 rigidBody] [1×1 rigidBody]}
Base: [1×1 rigidBody]
BodyNames: {'iiwa_link_0' 'iiwa_link_1' 'iiwa_link_2' 'iiwa_link_3' 'iiwa_link_4' 'iiwa_link_5' 'iiwa_link_6' 'iiwa_link_7' 'iiwa_link_ee' 'iiwa_link_ee_kuka'}
BaseName: 'world'
Gravity: [0 0 0]
DataFormat: 'struct'
将数据格式设置为 "行"。对于所有动力学计算,数据格式必须是 "行 "或 "列"。
lbr.DataFormat = "row";
计算机器人原点配置的质心位置和雅各布。
[comLocation,comJac] = centerOfMass(lbr);
show(lbr);
hold all
plot3(comLocation(1),comLocation(2),comLocation(3),Marker="x",MarkerSize=30,LineWidth=5);
四、输入参数
robot - 机器人模型 —— 刚体树对象
以刚体树对象形式指定的机器人模型。要使用质量中心函数,请将数据格式属性设置为 "行 "或 "列"。
configuration - 机器人配置 —— 矢量
机器人配置向量,包含机器人模型中所有非固定关节的位置。您可以使用 homeConfiguration(机器人)、randomConfiguration(机器人)或指定自己的关节位置来生成配置。要使用矢量形式的配置,请将机器人的 DataFormat 属性设置为 "行 "或 "列"。
五、输出参数
com - 质量中心位置 —— [x y z] 矢量
质心位置,以 [x y z] 向量形式返回。该向量描述了指定配置的质心相对于车身坐标系的位置,单位为米。
comJac - 质量中心雅各布矩阵 —— 3 乘 n 矩阵
质量中心雅各布,以 3 乘 n 矩阵形式返回,其中 n 是机器人的速度自由度。
六、参考
[1] Featherstone, Roy. Rigid Body Dynamics Algorithms. Springer US, 2008. DOI.org (Crossref), doi:10.1007/978-1-4899-7560-7.