在MuJoCo中,actuator(执行器) 是用于定义外部力或力矩的机制,这些力或力矩可以作用于关节、肌腱或身体。执行器可以模拟各种类型的驱动器,如电机、液压缸、肌肉等。它们通过定义传输(transmission)和力生成机制(force generation)来实现对模型的控制。
Actuator 元素可以包含以下子元素:
所有执行器类型共享以下属性:
通用执行器允许独立设置所有执行器组件,包括传输类型、激活动态、增益类型等。是一个非常灵活的执行器类型,允许用户自定义执行器的动态特性、增益和偏置。通过设置不同的属性和模块,可以实现各种类型的执行器,如直接驱动、位置伺服、速度伺服等。
属性:
<actuator>
<general name="my_general" joint="my_joint" gear="1 0 0 0 0 0"
dyntype="integrator" gaintype="fixed" biastype="none"/>
actuator>
gainprm(增益参数)
作用 :控制执行器的输出力与输入信号的线性关系。
格式 :gainprm=“k0 k1 k2”,其中:
k0: 基础增益。
k1: 输入信号的线性增益(如关节角度偏差)。
k2: 输入信号的平方增益(用于非线性控制)。
biasprm(偏置参数)
作用 :定义执行器的静态偏置力(如模拟重力或摩擦力)。
格式 :biasprm=“b0 b1 b2”,其中:
b0: 基础偏置。
b1: 关节角度的偏置系数。
b2: 关节角速度的偏置系数。
activerange(激活范围)
作用 :限制执行器的输出力范围。
格式 :activerange=“min max”。比如activerange=“-100 100”
biastype(偏置类型)
作用 :定义偏置力的计算方式。 biastype=“quadratic”
可选值 :
none: 不计算偏置。
affine: 使用 biasprm 的线性组合。
quadratic: 包含二次项。
# 获取指定执行器的增益参数
# "actuator1"是xml中actuator的name
actuator_id = model.actuator_name2id("actuator1")
gainprm = model.actuator_gainprm[actuator_id]
print("Gain Parameters:", gainprm) # 输出: [100.0, 0.0, 0.0]
# 修改激活范围(需重新编译模型)
model.actuator_activerangemin[actuator_id] = -200
model.actuator_activerangemax[actuator_id] = 200
ctrllimited(控制限幅)
作用 :启用/禁用控制信号的限幅。
值 :ctrllimited=“true”(启用)或 “false”(禁用)。
电机执行器是直接驱动的执行器,适用于关节直接控制。
<actuator>
<motor name="my_motor" joint="my_joint" gear="1"/>
actuator>
位置伺服执行器用于位置控制,可以添加位置反馈增益和阻尼。
<actuator>
<position name="my_position" joint="my_joint" kp="100" kv="10"/>
actuator>
速度伺服执行器用于速度控制,适用于需要速度反馈的场景。
<actuator>
<velocity name="my_velocity" joint="my_joint" kv="50"/>
actuator>
积分速度伺服执行器结合了位置和速度控制,适用于需要积分位置误差的场景。
<actuator>
<intvelocity name="my_intvelocity" joint="my_joint" kp="100" kv="10"/>
actuator>
主动阻尼器执行器用于模拟阻尼效果,适用于需要主动阻尼的场景。
<actuator>
<damper name="my_damper" joint="my_joint" kv="50"/>
actuator>
气缸执行器适用于模拟气缸或液压缸的行为。
<actuator>
<cylinder name="my_cylinder" joint="my_joint" gear="1" area="0.01"/>
actuator>
肌肉执行器用于模拟肌肉的动态行为,适用于生物力学模拟。
<actuator>
<muscle name="my_muscle" joint="my_joint" gear="1"
timeconst="0.01 0.04" range="0.75 1.05"/>
actuator>
主动粘附执行器用于模拟粘附力,适用于需要粘附效果的场景。
<actuator>
<adhesion name="my_adhesion" body="my_body" gain="10"/>
actuator>
插件执行器允许通过插件扩展MuJoCo的功能。
<actuator>
<plugin name="my_plugin" plugin="my_plugin_name"/>
actuator>