Mujoco xml actuator

actuator

在MuJoCo中,actuator(执行器) 是用于定义外部力或力矩的机制,这些力或力矩可以作用于关节、肌腱或身体。执行器可以模拟各种类型的驱动器,如电机、液压缸、肌肉等。它们通过定义传输(transmission)和力生成机制(force generation)来实现对模型的控制。

Actuator 元素可以包含以下子元素:

  • general:通用执行器,提供对所有执行器组件的完全访问。
  • motor:直接驱动执行器。
  • position:位置伺服。
  • velocity:速度伺服。
  • intvelocity:积分速度伺服。
  • damper:主动阻尼器。
  • cylinder:气缸或液压缸。
  • muscle:肌肉执行器。
  • adhesion:主动粘附执行器。
  • plugin:与引擎插件关联的执行器。

所有执行器类型共享以下属性:

  • name:执行器名称。
  • class:默认类。
  • group:执行器组。
  • ctrllimited:是否限制控制输入。
  • forcelimited:是否限制力输出。
  • actlimited:是否限制激活状态。
  • ctrlrange:控制输入范围。
  • forcerange:力输出范围。
  • actrange:激活状态范围。
  • gear:齿轮比。
  • cranklength:曲柄长度(仅用于滑块-曲柄传输)。
  • joint:作用的关节。
  • tendon:作用的肌腱。
  • site:作用的位点。
  • refsite:参考位点。
  • body:作用的身体。
  • user:用户参数。

general(通用执行器)

通用执行器允许独立设置所有执行器组件,包括传输类型、激活动态、增益类型等。是一个非常灵活的执行器类型,允许用户自定义执行器的动态特性、增益和偏置。通过设置不同的属性和模块,可以实现各种类型的执行器,如直接驱动、位置伺服、速度伺服等。

属性:

  • name: 可选,执行器的名称。
  • class: 可选,活动默认类。
  • group: 整数,执行器所属的组。
  • ctrllimited: 控制输入是否被限制。
  • forcelimited: 力输出是否被限制。
  • actlimited: 激活状态是否被限制。
  • ctrlrange: 控制输入的限制范围。(一般会用)
  • forcerange: 力输出的限制范围。(一般会用)
  • actrange: 激活状态的限制范围。
  • lengthrange: 执行器长度的限制范围。
  • gear: 齿轮比,用于缩放执行器的长度、力矩等。
  • cranklength: 连杆长度,仅用于滑块连杆传动类型。
  • joint: 执行器作用的关节。
  • jointinparent: 执行器作用的父关节。
  • site: 执行器作用的位点。(一般会用)
  • body: 执行器作用的刚体。
  • tendon: 执行器作用的肌腱。(一般会用)
  • cranksite: 执行器作用的连杆位点。
  • slidersite: 执行器作用的滑块位点。
  • dyntype: 激活动态类型。(一般会用)
  • gaintype: 增益类型。(一般会用)
  • biastype: 偏置类型。(一般会用)
  • dynprm: 激活动态参数。(一般会用)
  • gainprm: 增益参数。
  • biasprm: 偏置参数。
  • actdim: 激活状态的维度。
  • actearly: 是否使用下一个激活值。
xml 复制代码
<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: 包含二次项。

python 复制代码
# 获取指定执行器的增益参数
# "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"(禁用)。

motor(电机执行器)

电机执行器是直接驱动的执行器,适用于关节直接控制。

xml 复制代码
<actuator>
  <motor name="my_motor" joint="my_joint" gear="1"/>
</actuator>

position(位置伺服)

位置伺服执行器用于位置控制,可以添加位置反馈增益和阻尼。

xml 复制代码
<actuator>
  <position name="my_position" joint="my_joint" kp="100" kv="10"/>
</actuator>

velocity(速度伺服)

速度伺服执行器用于速度控制,适用于需要速度反馈的场景。

xml 复制代码
<actuator>
  <velocity name="my_velocity" joint="my_joint" kv="50"/>
</actuator>

intvelocity(积分速度伺服)

积分速度伺服执行器结合了位置和速度控制,适用于需要积分位置误差的场景。

xml 复制代码
<actuator>
  <intvelocity name="my_intvelocity" joint="my_joint" kp="100" kv="10"/>
</actuator>

damper(主动阻尼器)

主动阻尼器执行器用于模拟阻尼效果,适用于需要主动阻尼的场景。

xml 复制代码
<actuator>
  <damper name="my_damper" joint="my_joint" kv="50"/>
</actuator>

cylinder(气缸或液压缸)

气缸执行器适用于模拟气缸或液压缸的行为。

xml 复制代码
<actuator>
  <cylinder name="my_cylinder" joint="my_joint" gear="1" area="0.01"/>
</actuator>

muscle(肌肉执行器)

肌肉执行器用于模拟肌肉的动态行为,适用于生物力学模拟。

xml 复制代码
<actuator>
  <muscle name="my_muscle" joint="my_joint" gear="1" 
          timeconst="0.01 0.04" range="0.75 1.05"/>
</actuator>

adhesion(主动粘附执行器)

主动粘附执行器用于模拟粘附力,适用于需要粘附效果的场景。

xml 复制代码
<actuator>
  <adhesion name="my_adhesion" body="my_body" gain="10"/>
</actuator>

plugin(插件执行器)

插件执行器允许通过插件扩展MuJoCo的功能。

xml 复制代码
<actuator>
  <plugin name="my_plugin" plugin="my_plugin_name"/>
</actuator>
相关推荐
奔跑吧邓邓子1 小时前
DeepSeek 赋能智能养老:情感陪伴机器人的温暖革新
人工智能·机器人·deepseek·智能养老·情感陪伴
超级土豆粉3 小时前
从0到1写一个适用于Node.js的User Agent生成库
linux·ubuntu·node.js
VR最前沿4 小时前
全新Xsens Animate版本是迄今为止最大的软件升级,提供更清晰的数据、快捷的工作流程以及从录制开始就更直观的体验
人工智能·科技·机器人·自动化
CHOTEST中图仪器4 小时前
激光干涉仪:解锁协作机器人DD马达的精度密码
机器人·激光干涉仪
Tisfy5 小时前
LeetCode 2434.使用机器人打印字典序最小的字符串:贪心(栈)——清晰题解
leetcode·机器人·字符串·题解·贪心·
敢敢のwings5 小时前
论文速读《DexWild:野外机器人策略的灵巧人机交互》
机器人·人机交互
抠脚学代码9 小时前
Ubuntu18.6 学习QT问题记录以及虚拟机安装Ubuntu后的设置
qt·学习·ubuntu
Sapphire~16 小时前
Linux-07 ubuntu 的 chrome 启动不了
linux·chrome·ubuntu
啵啵学习17 小时前
Linux 里 su 和 sudo 命令这两个有什么不一样?
linux·运维·服务器·单片机·ubuntu·centos·嵌入式
AiTEN_Robotics18 小时前
仓库自动化搬运:自动叉车与AGV选型要点及核心技术解析
人工智能·机器人·自动化