使用mocap在mujoco中实现逆运动学控制
代码地址:https://github.com/kevincheng3/mocap-control
视频地址https://www.bilibili.com/video/BV1jw411d7Aw
在mujoco中实现机械臂的逆运动学控制
前言
MuJoCo 是目前机器人动力学仿真最流行的仿真器之一
MuJoCo官网:http://mujoco.org/
博主在Mujoco反正引擎中搭建了一个UR5机械臂的仿真引擎,希望实现对机械臂末端点位置和姿态的控制(tcp control)。但是查阅了相关的api并未发现有求解逆运动求解器。于是,经过一番探索发现,通过mocap可以很容易实现末端的逆运动学控制。
提示:以下是本篇文章正文内容,下面案例可供参考
一、mocap body的建立
在worldbody下创建一个mocap的body
<body mocap="true" name="mocap" pos="0.08229997 0.10921554 1.871059">
<!-- <geom conaffinity="0" contype="0" pos="0 0 0" rgba="0 0.5 0 0.7" size="0.005 0.005 0.005" type="box"></geom>
<geom conaffinity="0" contype="0" pos="1 0 0" rgba="1 0 0 0.1" size="1 0.005 0.005" type="box"></geom>
<geom conaffinity="0" contype="0" pos="0 1 0" rgba="0 1 0 0.1" size="0.005 1 0.001" type="box"></geom>
<geom conaffinity="0" contype="0" pos="0 0 1" rgba="0 0 1 0.1" size="0.005 0.005 1" type="box"></geom> -->
</body>
二、将mocap body固接到末端执行器的body上
<equality>
<weld body1="mocap" body2="ee_link" solimp="0.9 0.95 0.001" solref="0.02 1"></weld>
</equality>
三、通过设置mocap的位置和姿态实现逆运动学控制
sim.data.set_mocap_pos("mocap", pos)
self.sim.data.set_mocap_quat("mocap", quat)
结果
"Go up/down/left/right", "[up]/[down]/[left]/[right] arrow",
"Go forwarf/backward", "[F]/[B]"
"ROT_X", "[Q]/[W]"
"ROT_Y", "[A]/[S]"
"ROT_Z", "[Z]/[X]"
"Slow down/Speed up", "[-]/[=]"