当前位置: 首页 > news >正文

mujoco建模(一)

前言

mujoco的建模其实很简单,他就和建房子一样,他是有一个基础的框架的,在框架的基础上我们不断地去完善建立一些东西。下面我们就从框架出发带大家一步一步搞清楚他是怎样建模的

1.基础概念

  • Body (刚体):不带形状的概念,只具有质量和惯性属性,也就是重心。

  • Joint (关节):定义 Body 相对于其父节点的自由度(无关节则为固定连接)。

  • Geom (几何体):附着在 Body 上的实体,用于碰撞 (Collision) 或外观 (Visual)。

  • Site (位点):Body 坐标系内的一个点,无质量,常用于定义传感器位置。

  • Transmission (传动机制):力如何作用于关节(如直接作用或通过绳索)

2.MJCF 建模的框架是什么

<mujoco model="模型名称"> <compiler .../> <option .../> <asset> <mesh .../> <material .../> </asset> <worldbody> <light .../> <geom name="floor" .../> <body name="link1"> <joint .../> <geom .../> <body name="link2"> <joint .../> <geom .../> </body> bodies> </worldbody> <equality> ... </equality> <tendon> ... </tendon> <actuator> ... </actuator> <sensor> ... </sensor> </mujoco>

我们来解释一下上面的框架:

2.1. 顶层配置:规则设定区

在蓝图的最开头,你得先定好“度量衡”和“物理环境”。

  • <compiler>(编译器设置)

    • 作用:告诉 MuJoCo 怎么理解你的数字。

    • 常用属性angle="degree"(我写的 90 是 90 度,不是弧度)、coordinate="local"(坐标是相对父节点的)。

  • <option>(物理选项)

    • 作用:设定模拟环境的物理规律。

    • 常用属性gravity="0 0 -9.81"(重力朝哪指)、timestep="0.002"(模拟步长,越小越精确但越慢)。

2.2<asset>:仓库区

想象这是一个仓库。如果你想给机器人穿漂亮的衣服(材质)或者用复杂的 3D 打印件(网格模型),你得先把它们放进仓库里,并起个名字。

  • <mesh>:导入外部的 STL 或 OBJ 文件。

  • <material>:定义颜色、反光度、贴图。

  • 逻辑:在这里定义好了,后面在<geom>里通过名字调用。

2.3.<worldbody>:舞台区(核心)

这是最重要的地方。所有的刚体、关节、形状都写在这里。

(1)<body>—— 刚体(骨架)
  • 定义:它是一个逻辑上的“块”。它本身没有形状,只是一个坐标系。

  • 特点:Body 里面可以嵌套 Body。嵌套就代表了父子连接

  • 属性name(名字),pos(相对于父节点的位置)。

(2)<joint>—— 关节(轴承)
  • 关键点关节必须写在<body>标签内部。

  • 含义:它定义了这个 Body 相对于它的父节点怎么动

    • 如果没有 Joint,这个 Body 就死死地焊在父节点上。

    • 如果有 Joint,它就可以绕着轴转动或滑动。

  • 常用类型hinge(像合页一样转动),slide(像抽屉一样滑动)。

(3)<geom>—— 几何体(肉体/碰撞体)
  • 含义:给看不见的 Body 加上形状。

  • 作用:1.视觉展示(让你看见它);2.碰撞检测(让它能撞到地板或别人)。

  • 常用类型box(长方体),sphere(球体),capsule(胶囊体, 最常用,因为计算速度快)。

(4)<site>—— 位点(记号笔)
  • 含义:在 Body 上定一个点。它不参与物理碰撞,也不增加重量。

  • 作用:就像在手臂上贴个标签,告诉传感器“请测这个点的位置”或者“把绳索系在这个点上”。

2.4. 动力与反馈区

  • <actuator>(执行器)

    • 作用:给关节加“电机”。

    • 逻辑:你在worldbody里定义了一个 Joint(能动),在这里给它加一个 Actuator(给它力,让它动)。

  • <sensor>(传感器)

    • 作用:安装摄像头、力矩传感器、加速度计等。

3. 从 0-1 建立模型的建模顺序

根据 XML 结构,建议的建模逻辑顺序如下:

  1. 全局环境搭建:在<compiler>中设定angle="degree"(推荐) 和坐标系,在<worldbody>中添加地板和灯光。

  2. 资源准备:在<asset>中导入复杂的 3D 模型文件 (STL/OBJ) 或定义颜色材质。

  3. 骨架构建(Kinematic Tree):这是最核心的一步。按照“父节点 -> 子节点”的顺序在<worldbody>中建立 Body 树。

  4. 定义自由度(Joints):在每个 Body 下添加 Joint。注意:MuJoCo 的关节是定义在子节点上的。

  5. 添加形状(Geoms):为每个 Body 添加 Geom。通常建议每个 Body 至少有两个 Geom:一个用于视觉(好看),一个用于碰撞(简单几何体,提高计算速度)。

  6. 添加约束与传动:如果有闭环链或绳索,添加<equality><tendon>

  7. 添加动力(Actuators):定义电机,关联到对应的 Joint 上。

  8. 添加观测(Sensors):根据实验需求安装传感器。

http://www.jsqmd.com/news/594759/

相关文章:

  • 基于与非门的全加法器设计:从逻辑门到高效电路实现
  • Python 3.12 MagicMethods - 103 - __instancecheck__
  • 【高效开发工具系列】DataGrip实战技巧:从配置到高阶查询优化
  • 易语言黑月编译器插件v4.1.7.7安装配置全攻略(附VC++2015运行库避坑指南)
  • 姜翰奇补题
  • Qwen3.5-Plus Apache Tomcat 9、10 和 11 的核心区别在于支持的规范版本、命名空间(Package Name)以及最低 JDK 要求
  • 从 Promise 到 async/await:一次把 JavaScript 异步模型讲透
  • 嵌入式C语言宏嵌套展开机制与实战技巧
  • OpenClaw原理
  • 自动化测试新范式:OpenClaw驱动千问3.5-9B生成测试报告
  • 高校学生综合素质评价系统数据库设计
  • Geekble测谎模块Arduino库:GSR生理信号采集与多模态反馈
  • OpenClaw+Qwen3.5-9B开发提效:日志分析+自动修复脚本
  • 1.单例模式
  • Pixel Aurora Engine部署教程:Kubernetes集群中像素工作站弹性扩缩实践
  • 别再折腾了!Windows 10/11下用VS2017编译ZMQ 4.3.2的完整避坑指南(附常见错误修复)
  • 2025_NIPS_JavisGPT: A Unified Multi-modal LLM for Sounding-Video Comprehension and Generation
  • Java程序设计(第3版)第二章——变量的三种定义方式2和3
  • 豆包 Tomcat 9 → Tomcat 10 完整迁移指南(一步到位)
  • OpenClaw+Qwen3-4B旅行规划:自动生成行程与预订建议
  • 短短几天GitHub 30万Star!2026年必玩的开源AI网关OpenClaw保姆级部署教程
  • MySQL后端开发核心知识点
  • 半导体行业展会推荐怎么选?半导体展会全产业链盛会甄选 - 品牌2026
  • 别再只调RGB了!用HSV给你的WS2812灯带调出更自然的彩虹渐变(附Arduino代码)
  • 一篇顶一万篇,很难找到代码这么全的高分文章,WGS、RNA-seq、scRNA-seq、免疫肽组质谱联合分析
  • 从“单模型黑箱”到“多智能体博弈”:PediaMind 架构选型与核心优势解析
  • 科研党福音:OpenClaw+千问3.5-27B自动整理参考文献
  • STM8S001单片机:8引脚高性价比嵌入式开发方案
  • 在kali上创建DVWA靶机实验
  • 高效制作IO通道测试表:从位号表到VLOOKUP函数实战