mujoco无人机实战建模(一)

张开发
2026/4/5 1:03:57 15 分钟阅读

分享文章

mujoco无人机实战建模(一)
前言我们先复习一下我们的建模顺序1.全局环境搭建 2.资源准备 3.骨架构建 4.定义自由度Joints5.添加形状Geoms6添加约束与传动 7 添加动力 8 添加观测如果有忘记的伙伴可以去看我的第一篇文章mujoco建模(一)我们这篇文章先完成全局环境搭建与资源准备mujoco modelsim compiler autolimitstrue / option timestep0.01 density1.225 viscosity1.8e-5/ default default classx2 geom mass0/ motor ctrlrange0 13/ default classcollision geom group3 typebox/ default classrotor geom typeellipsoid size.13 .13 .01/ /default /default site group5/ /default /default asset texture typeskybox builtingradient rgb10.3 0.5 0.7 rgb20 0 0 width512 height3072/ texture type2d namegroundplane builtinchecker markedge rgb10.2 0.3 0.4 rgb20.1 0.2 0.3 markrgb0.8 0.8 0.8 width300 height300/ material namegroundplane texturegroundplane texuniformtrue texrepeat5 5 reflectance0.2/ /asset worldbody light pos0 0 1.5 dir0 0 -1 directionaltrue/ geom namefloor size0 0 0.05 typeplane materialgroundplane/ /worldbody /mujoco1配置全局环境compiler autolimitstrue/ option timestep0.01 density1.225 viscosity1.8e-5/作用autolimitstrueMuJoCo 会自动根据你的 geom/motor 设置生成默认的安全控制范围保证仿真不会出现非法状态。timestep 决定控制频率、积分精度。此处参考值可直接引用density / viscosity 可用于后续建风阻或推进力模型。此处参考值可直接引用2让他好看一点asset texture typeskybox builtingradient rgb10.3 0.5 0.7 rgb20 0 0 width512 height3072/ texture type2d namegroundplane builtinchecker markedge rgb10.2 0.3 0.4 rgb20.1 0.2 0.3 markrgb0.8 0.8 0.8 width300 height300/ material namegroundplane texturegroundplane texuniformtrue texrepeat5 5 reflectance0.2/ /asset这一段代码完全是渲染资源对物理仿真、控制和动力学没有任何影响感兴趣的小伙伴可以交给ai解析一下这里不做过多赘述。用途天空盒模拟环境天空棋盘格地面让无人机飞行视觉上更有参考材质控制纹理重复、均匀度、反射3添加基础的光源的地面worldbody light pos0 0 1.5 dir0 0 -1 directionaltrue/ geom namefloor size0 0 0.05 typeplane materialgroundplane/ /worldbodypos0 0 1.5光源在世界坐标系的位置(x, y, z)dir0 0 -1光线方向向量(dx, dy, dz)(0,0,-1)表示光线朝下照射directionaltrue光源类型true→ 平行光类似太阳光光线方向固定4无人机的全局配置重要default default classfly geom mass0/ motor ctrlrange0 13/ default classcollision geom group3 typebox/ default classrotor geom typeellipsoid size.13 .13 .01/ /default /default site group5/ /default /default首先我们要学会无人机建模中的类建模。这三个类并不是随机创建的它们代表了机器人建模中的三个抽象层级fly (顶级身份层)定义了“只要属于这架无人机就必须遵守的基本准则”。比如无论机身还是旋翼它们的控制输入范围和基本质量规则是统一的。collision(中级物理属性层)定义了“所有实体的、会撞到东西的零件”的共性。它把“看得见、摸得着”的物体从抽象的逻辑中分离出来。rotor(底层特殊形状层)定义了“旋翼这种特殊零件”的几何特征。旋翼和方方正正的机身不同它需要特殊的形状描述。那么为什么每个类下面是这些元素geom, motor 等这是根据属性的作用域来决定的顶级类 (x2) 放motor和geom mass0为什么因为电机Motor是全局的整个无人机的所有电机通常使用相同的电调ESC信号范围。关于mass0这是一个建模技巧。在顶级类设为 0意味着除非你在具体的零件里手动指定质量否则默认不计重通常是为了配合 MuJoCo 自动计算惯量或者在body层级统一设定质量。中间类 (collision) 放geom group3为什么group是 MuJoCo 用来控制显示的。通常 group 3 专门给“看不见的碰撞体”用。放在这里所有碰撞零件就一键归类了。底层类 (rotor) 放特定的geom size为什么因为只有旋翼才需要定义成“扁平的椭球体”来模拟它扫过的空间。机身是不需要这个尺寸的。这么做的作用就是避免重复写代码。如果你的无人机有 4 个旋翼、1 个机身、4 个支架你肯定不想给每个零件都手动设置一遍颜色、碰撞属性和质量。

更多文章