目录

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>
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
五号厂房1 小时前
Ubuntu开机时进入initramfs应对方法(亲测有效!!!)
ubuntu
牛角上的男孩2 小时前
ubuntu-24.04.2-live-server-arm64基于cloud-init实现分区自动扩容(LVM分区模式)
linux·运维·ubuntu
亮学长4 小时前
介绍XML
xml
攒了一袋星辰5 小时前
Spring如何通过XML注册Bean
xml·java·spring
yuren_xia5 小时前
示例:spring xml+注解混合配置
xml·java·spring
kuan_li_lyg5 小时前
MATLAB - 小车倒立摆的非线性模型预测控制(NMPC)
开发语言·算法·matlab·机器人·mpc·模型预测控制·倒立摆
LitchiCheng5 小时前
复刻低成本机械臂 SO-ARM100 3D 打印篇
人工智能·机器人
百锦再6 小时前
SQLiteDatabase 增删改查(CRUD)详细操作
android·xml·java·ide·android studio·安卓
Anarkh_Lee7 小时前
在 Ubuntu 上离线安装 OpenJDK 11 并设置为默认版本
java·linux·ubuntu
Anarkh_Lee7 小时前
在离线 Ubuntu 环境下部署双 Neo4j 实例(Prod & Dev)
数据库·人工智能·ubuntu