Pinocchio导入URDF关节为continuous的问题及详细解释

视频讲解:

Pinocchio导入URDF关节为continuous的问题及详细解释

仓库地址:GitHub - LitchiCheng/mujoco-learning

问题背景:打算测试将之前的panda的urdf换成so-arm100的urdf,发现pinocchio的代码不能用,很奇怪,按照道理都是参数,应该可以直接复用,通过排查,发现时model.nq数量发生了变化,pyroboplan的代码在进行ik时直接越界了

复制代码
   <joint
    name="Shoulder_Rotation"
    type="continuous">
    <origin
      xyz="0 -0.0452 0.0181"
      rpy="1.5708 0 1.5708" />
    <parent
      link="Base" />
    <child
      link="Shoulder_Rotation_Pitch" />
    <axis
      xyz="0 1 0" />
  </joint>

进一步排查:

1.打印panda的model.nq发现和urdf中的关节数量一致,其type为revolute

2.打印so-arm100的model.nq发现比urdf中的joint多了一倍,其type为continuous

通过查看pinocchio的issues,发现如下两个解释:

Continuous joint in URDF adds 2 elements to the configuration space · Issue #794 · stack-of-tasks/pinocchio · GitHub

lowerPositionLimit and upperPositionLimit in pinocchio::Model have unexpected dimensions for unbounded joints - how to read them correctly? · Issue #777 · stack-of-tasks/pinocchio · GitHub

但实际上还没没有讲得很清楚为什么continous类型的joint的nq为2,这里进行探究:

URDF的continuous joint:本质也是一种无旋转角度限制的旋转关节(unbounded revolute joint),理论上应使用单个角度参数θ描述其状态就够了,但是为什么需要用两个,这就要反过来思考了,首先1个配置空间的维度能不能用来描述continuous类型关节对应物理位置,肯定是够了,但会出现一种情况,如关节在θ时和θ+2Π实际上物理位置一致,有无数个数值对应同样的物理位置,对于优化、求解问题来说时冗余的

所以用从如下两个角度可以理解cosθ, sinθ的好处:

1.一个数值对对应了一个物理状态,避免求解的冗余问题

2.cosθ和sinθ避免2Π到0的跳跃

下面用python代码来做一个验证

复制代码
import math
# 定义角度
angles = [170, -190, 180, -180, 180, 540]

# 遍历角度列表
for theta in angles:
    # 将角度转换为弧度
    theta_rad = math.radians(theta)
    # 计算 cos 和 sin 值
    cos_theta = math.cos(theta_rad)
    sin_theta = math.sin(theta_rad)
    # 输出结果
    print(f"当 theta = {theta} 度时:")
    print(f"cos(theta) = {cos_theta}")
    print(f"sin(theta) = {sin_theta}")
    print()

可以看到三种情况下数值对均一致

1.170和反方向

2.180°和反向180

3.180和多转一圈

相关推荐
必须会一定会6 分钟前
AI 编程工具选型:Cursor、Claude Code、Codex、OpenCode 与 DeepSeek Harness 的产品形态和成本边界
人工智能·ai编程
tqs_1234512 分钟前
大模型工程化高频踩坑总结:RAG、Agent、检索、模型优化全复盘
人工智能
chunmiao303215 分钟前
NVIDIA Vera CPU 交付 AWS:为智能体设计的 CPU 进入规模化出货
人工智能
十三画者21 分钟前
【文献分享】PANORAMIC:用于空间组学共定位分析的分层不确定性传播框架
人工智能·深度学习·数据挖掘·数据分析·集成学习
cczixun1 小时前
从工具交互到自主进化:2026智能体平台产业发展全景解析
人工智能·智能体
拓维运动科技1 小时前
机器人步态调试平台:从户外“盲测”到室内标准化验证的技术路径
机器人·六自由度运动模拟平台·六自由度定制厂家·南京拓维运动科技·六自由度非标定制·机器人步态调试平台
benchmark_cc1 小时前
1000只ETF的5分钟K线如何批量获取?QuantDash分页策略与高性能Python实践
开发语言·人工智能·爬虫·python·算法·quantdash·量化数据源
sel_91 小时前
【PEFT】参数高效微调(PEFT)技术详解:从原理到 LoRA/QLoRA 实战
人工智能·python·深度学习·算法·机器学习·参数高效微调
机器人猎头David1 小时前
机器人猎头公司(倍利福猎头公司)案例分享
人工智能·机器人·招聘·具身智能·人形机器人·猎头公司·机器人猎头公司
月光船幽幽2 小时前
带刺反馈引擎:唤醒深层意图
人工智能·python