mujoco无人机实战建模(二)
·
前言
我们先复习一下我们的建模顺序
1.全局环境搭建 2.资源准备 3.骨架构建 4.定义自由度(Joints)5.添加形状(Geoms)6添加约束与传动 7 添加动力 8 添加观测
如果有忘记的伙伴可以去看我的第一篇文章mujoco建模(一)
我们这篇文章完成。3骨架构建 4.定义自由度(Joints)5.添加形状(Geoms)
<worldbody>
<light pos="0 0 1.5" dir="0 0 -1" directional="true"/>
<geom name="floor" size="0 0 0.05" type="plane" material="groundplane"/>
<body name="fly" pos="0 0 0.1" childclass="fly">
<geom class="collision" type="box" size="0.08 0.05 0.02" pos="0 0 0.02"/>
<geom class="collision" type="capsule" fromto="0 0 0.02 -0.14 -0.18 0.05" size="0.01"/>
<geom class="collision" type="capsule" fromto="0 0 0.02 -0.14 0.18 0.05" size="0.01"/>
<geom class="collision" type="capsule" fromto="0 0 0.02 0.14 0.18 0.05" size="0.01"/>
<geom class="collision" type="capsule" fromto="0 0 0.02 0.14 -0.18 0.05" size="0.01"/>
<geom name="rotor1" class="rotor" pos="-0.14 -0.18 0.05" mass="0.25"/>
<geom name="rotor2" class="rotor" pos="-0.14 0.18 0.05" mass="0.25"/>
<geom name="rotor3" class="rotor" pos=" 0.14 0.18 0.05" mass="0.25"/>
<geom name="rotor4" class="rotor" pos=" 0.14 -0.18 0.05" mass="0.25"/>
<freejoint/>
<site name="thrust1" pos="-0.14 -0.18 0.05"/>
<site name="thrust2" pos="-0.14 0.18 0.05"/>
<site name="thrust3" pos=" 0.14 0.18 0.05"/>
<site name="thrust4" pos=" 0.14 -0.18 0.05"/>
</body>
</worldbody>
这个 worldbody 其实只做了一件事:定义一个 6DOF 刚体 + 质量分布 + 力作用点
可以抽象成
thrust site(施力点)
↑
rotor mass ● ● rotor mass
\ /
\ /
●———刚体———●
/ \
/ \
rotor mass ● ● rotor mass
↑
thrust site
一<body> —— 刚体系统
<body name="fly" pos="0 0 0.1" childclass="fly">
- 定义一个刚体坐标系
pos→ 初始位置(世界坐标系)childclass="fly"→ 所有子元素继承默认属性(mass / motor 等)
二构建无人机主体
按照机身-机臂-旋翼的顺序依次构建无人机主体,机身就用一个盒子表示机身刚体,简化动力学计算,机臂capsule → 表示机身到旋翼的连杆,物理稳定,碰撞自然。旋翼单独刚体 → 可以挂 motor actuator 产生推力
<geom class="collision" type="box" size="0.08 0.05 0.02" pos="0 0 0.02"/>
<geom class="collision" type="capsule" fromto="0 0 0.02 -0.14 -0.18 0.05" size="0.01"/>
<geom class="collision" type="capsule" fromto="0 0 0.02 -0.14 0.18 0.05" size="0.01"/>
<geom class="collision" type="capsule" fromto="0 0 0.02 0.14 0.18 0.05" size="0.01"/>
<geom class="collision" type="capsule" fromto="0 0 0.02 0.14 -0.18 0.05" size="0.01"/>
<geom name="rotor1" class="rotor" pos="-0.14 -0.18 0.05" mass="0.25"/>
<geom name="rotor2" class="rotor" pos="-0.14 0.18 0.05" mass="0.25"/>
<geom name="rotor3" class="rotor" pos=" 0.14 0.18 0.05" mass="0.25"/>
<geom name="rotor4" class="rotor" pos=" 0.14 -0.18 0.05" mass="0.25"/>
三构建6自由度模型和力作用点
<freejoint/>
<site name="thrust1" pos="-0.14 -0.18 0.05"/>
<site name="thrust2" pos="-0.14 0.18 0.05"/>
<site name="thrust3" pos=" 0.14 0.18 0.05"/>
<site name="thrust4" pos=" 0.14 -0.18 0.05"/>
此时一个简单的无人机模型就构建好了

更多推荐

所有评论(0)