Mujoco 检验 KDL 和 Pinocchio 运动学 FK 是否一致

视频讲解:Mujoco 检验 KDL 和 Pinocchio 运动学 FK 是否一致_哔哩哔哩_bilibili

代码仓库:https://github.com/LitchiCheng/mujoco-learning

是否好奇过 KDL 和 Pinocchio 等运动学的库的结果是否相同?

今天做个测试同时使用 KDL 和 Pinocchio 进行 FK 来,输入为 data.qpos,然后通过通过 data.xpos 和 fk 后的位姿进行实时比较,如下为完整代码:

复制代码
import mujoco_viewer 
import mujoco
import src.kdl_ik as kdl_ik
import src.casadi_ik as casadi_ik

class CheckFk(mujoco_viewer.CustomViewer):
    def __init__(self, rendor_path, arm_path):
        super().__init__(rendor_path, 3, azimuth=-45, elevation=-30)
        self.arm_path = arm_path

        self.ee_body_name = "link7"
        # # 初始化逆运动学
        self.arm2 = kdl_ik.Kinematics(self.ee_body_name)
        urdf_file = "model/franka_panda_urdf/robots/panda_arm.urdf"
        self.arm2.buildFromURDF(urdf_file, "link0")

        self.arm1 = casadi_ik.Kinematics(self.ee_body_name)
        self.arm1.buildFromMJCF(self.arm_path)

    def runBefore(self):
        self.model.opt.timestep = 0.005
        # 设定初始位置
        self.initial_pos = self.model.key_qpos[0]  
        print("Initial position: ", self.initial_pos)
        for i in range(self.model.nq):
            self.data.qpos[i] = self.initial_pos[i]
            
    def runFunc(self):
        # self.data.qpos[:7] = self.initial_pos[:7]
        print("Mujoco body position: ")
        print(self.getBodyPosByName(self.ee_body_name))
        self.fk_tf1 = self.arm1.fk(self.data.qpos)
        self.fk_tf2 = self.arm2.fk(self.data.qpos)
        print("FK methed 1 result: ")
        print(self.fk_tf1)
        print("FK methed 2 result: ")
        print(self.fk_tf2)


if __name__ == '__main__':
    SCENE_XML_PATH = 'model/franka_emika_panda/scene_pos.xml'
    ARM_XML_PATH = 'model/franka_emika_panda/panda_pos.xml'
    robot = CheckFk(SCENE_XML_PATH, ARM_XML_PATH)
    robot.run_loop()

拉取某一个关节,看下末端位置是否一致

换一个方向拉一下看

相关推荐
yyuuuzz6 小时前
记一次 VPS 性能排查:共享 CPU 突发额度导致的限流
运维·服务器·人工智能
恋猫de小郭6 小时前
看懂大模型架构术语,帮助你理解目前常见的大模型开源架构
前端·人工智能·ai编程
tachibana26 小时前
复杂任务怎么做的任务拆分?
人工智能·ai·大模型·llm·agent
tachibana26 小时前
ReAct、Plan-and-Execute、Reflection 三种范式有什么核心区别
人工智能·ai·大模型·llm·agent
————A6 小时前
Agent 接收用户上传文件
人工智能·笔记·python·状态模式
可乐鸡翅yeah_6 小时前
hls.js 内存泄漏实战排查,直播 M3U8 长时间播放异常定位方案
开发语言·javascript·python·django·ecmascript·m3u8·m3u8在线
可乐鸡翅yeah_6 小时前
第三方接口对接 M3U8 流媒体排坑实战,解决外部服务商流兼容难题
前端·javascript·python·django·html·m3u8·m3u8在线
Huazhongzhanhui6 小时前
极智防护与绿色表改:2026中国(武汉)国际表面处理展览会涂装涂料展会前瞻
人工智能·云计算
金融小师妹6 小时前
多因子智能推演:黄金震荡回升,杰克逊霍尔“沃什首秀”政策如何重塑金价路径的AI预测框架
大数据·人工智能·python·线性回归
阿童木写作6 小时前
跨马翻译:AI批量图片翻译与视频字幕翻译工具推荐
人工智能·python·音视频