news 2026/10/17 19:25:15

机器人运动学1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器人运动学1

文章目录

    • @[toc]
    • 一、什么是逆运动学(Inverse Kinematics, IK)?
      • 1️⃣ 先看“正运动学”(FK)好理解一点
      • 2️⃣ 逆运动学(IK)正好反过来
    • 二、先从“最简单的一条腿”开始(二维)
      • 模型(非常重要)
    • 三、逆运动学的几何本质(不是魔法)
      • 1️⃣ 核心思想:**三角形**
      • 2️⃣ 膝关节角(最简单)
      • 3️⃣ 髋关节角(分两步)
        • 步骤 A:脚的方向角
        • 步骤 B:三角形内部补角
        • 髋关节角:
    • 四、用 Python 写一个“最小可运行 IK”
      • 1️⃣ 纯数学 IK(二维单腿)
      • 2️⃣ 试一下(和你站立高度接近)
    • 五、你代码里的 IK 是“进阶版”
    • 六、一句话总结(非常重要)
    • 这一步在做什么:从 (x, y) 到 (r, θ)
      • Step 1:先有一个点 P(x, y)
      • Step 2:把“到原点的距离”画出来,这就是 r
      • Step 3:用投影形成直角三角形,解释 r 为什么是 √(x²+y²)
      • Step 4:θ 是“从 x 轴转到 OP 的角度”,用 atan2 最稳
    • 总结:cartesian_to_polar() 的核心就是这两行

一、什么是逆运动学(Inverse Kinematics, IK)?

1️⃣ 先看“正运动学”(FK)好理解一点

正运动学(FK):
👉已知关节角度 → 算末端在哪里

比如:

  • 髋关节 30°
  • 膝关节 60°

问:脚现在在空间的什么位置 (x, z)?

这就是 FK。


2️⃣ 逆运动学(IK)正好反过来

逆运动学(IK):
👉已知脚的位置 → 算关节角度

比如你在程序里写:

set_site(leg,x=60,y=0,z=-50)

你真正想问的是:

“如果脚要到这个点,
髋关节要转多少度?
膝关节要转多少度?”

这一步,就是逆运动学。


二、先从“最简单的一条腿”开始(二维)

我们先不管四足、不管 yaw,只看一条腿在一个平面里动。

模型(非常重要)

髋关节 o \ 大腿 L1 \ o 膝关节 \ \ 小腿 L2 \ x 足端
  • 大腿长度:L1
  • 小腿长度:L2
  • 脚目标位置:(x, z)(注意 z 往下是负)

三、逆运动学的几何本质(不是魔法)

1️⃣ 核心思想:三角形

当脚的位置(x, z)已知时:

从髋关节到脚 → 构成一个三角形

边长分别是:

  • 一条边:r = sqrt(x² + z²)
  • 另外两条边:L1、L2

于是你得到一个已知三边的三角形
👉可以用余弦定理!


2️⃣ 膝关节角(最简单)

用余弦定理:

[
\cos(\theta_{knee}) = \frac{L1^2 + L2^2 - r^2}{2 L1 L2}
]

注意:

  • 这是“膝关节内角”
  • 舵机角度往往要再转换(你代码里已经做了)

3️⃣ 髋关节角(分两步)

步骤 A:脚的方向角
phi=atan2(z,x)
步骤 B:三角形内部补角

[
\psi = \arccos\left(\frac{L1^2 + r^2 - L2^2}{2 L1 r}\right)
]

髋关节角:
hip = phi + psi

⚠️ 有些机器人用phi - psi,取决于你角度定义
你现在用的代码就是其中一种约定


四、用 Python 写一个“最小可运行 IK”

1️⃣ 纯数学 IK(二维单腿)

importmathdefleg_ik_2d(x,z,L1,L2):""" 二维平面两连杆逆运动学 输入: x, z : 足端坐标 L1 : 大腿长度 L2 : 小腿长度 输出: hip_angle, knee_angle (单位:度) """# 到脚的距离r=math.sqrt(x*x+z*z)# ---- 膝关节角(余弦定理)----cos_knee=(L1*L1+L2*L2-r*r)/(2*L1*L2)cos_knee=max(-1.0,min(1.0,cos_knee))# 防止数值炸掉knee=math.acos(cos_knee)# ---- 髋关节角 ----phi=math.atan2(z,x)cos_psi=(L1*L1+r*r-L2*L2)/(2*L1*r)cos_psi=max(-1.0,min(1.0,cos_psi))psi=math.acos(cos_psi)hip=phi+psi# 转成角度hip_deg=math.degrees(hip)knee_deg=math.degrees(knee)returnhip_deg,knee_deg

2️⃣ 试一下(和你站立高度接近)

L1=55.0L2=77.5x=62z=-50hip,knee=leg_ik_2d(x,z,L1,L2)print("hip =",hip,"knee =",knee)

这一步得到的角度,就是 IK 的核心结果。


五、你代码里的 IK 是“进阶版”

你现在用的这个函数:

cartesian_to_polar(x,y,z)

本质上做了三件事:

  1. 把 (x, y) 合成水平距离 w

  2. 减去髋关节横向偏移 length_c

  3. 在 3D 空间里算:

    • α:髋俯仰
    • β:膝关节
    • γ:髋 yaw(左右摆)

也就是说:

你已经在用完整的三维逆运动学了
只是还没“从几何角度彻底看懂它”


六、一句话总结(非常重要)

🔹逆运动学不是“控制舵机”
🔹它只是回答一个问题:

👉 “脚要去这里,关节应该转多少?”

你现在的代码结构已经是工业级四足机器人的典型写法了:

步态规划(set_site) ↓ 插值(servo_service) ↓ 逆运动学(IK) ↓ 舵机映射

cartesian_to_polar(x, y)(把直角坐标转成极坐标)用图形一步步拆开讲清楚。为了直观,用示例点P = (3, 2)来演示(换成任意 x,y 逻辑都一样)。


这一步在做什么:从 (x, y) 到 (r, θ)

Step 1:先有一个点 P(x, y)

  • 直角坐标就是“从原点往右 x、往上 y”的位置。

(图里就是把点 P 标出来)


Step 2:把“到原点的距离”画出来,这就是 r

  • 极坐标的r是从原点 O 到点 P 的距离。
  • 用勾股定理:
    [
    r = \sqrt{x^2 + y^2}
    ]
    示例:
    [
    r = \sqrt{3^2 + 2^2} = \sqrt{13} \approx 3.606
    ]

(图里就是从 O 连到 P 的那条线段)


Step 3:用投影形成直角三角形,解释 r 为什么是 √(x²+y²)

  • 把 P 垂直投影到 x 轴,形成一个直角三角形:

    • 底边长度 = x
    • 高 = y
    • 斜边 = r
  • 所以 r 就是三角形斜边。

(图里有 x、y、r 三条边)


Step 4:θ 是“从 x 轴转到 OP 的角度”,用 atan2 最稳

  • 极坐标的θ是从正 x 轴逆时针转到OP的角。
  • 用:
    [
    \theta = \text{atan2}(y, x)
    ]
    为什么不用atan(y/x)?
  • atan2能正确区分象限(比如 x<0 的时候角度不一样),也能处理 x=0 的情况。

示例:
[
\theta = \text{atan2}(2,3) \approx 0.588\text{ rad} \approx 33.69^\circ
]

(图里有一个小弧线表示 θ)


总结:cartesian_to_polar() 的核心就是这两行

[
r=\sqrt{x2+y2},\quad \theta=\text{atan2}(y,x)
]

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 21:59:53

Cursor试用限制全攻略:go-cursor-help一键重置技术方案深度解析

Cursor试用限制全攻略&#xff1a;go-cursor-help一键重置技术方案深度解析 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to…

作者头像 李华
网站建设 2026/10/15 19:56:37

GPT-SoVITS语音细节还原能力测评:齿音、气音等表现

GPT-SoVITS语音细节还原能力测评&#xff1a;齿音、气音等表现 在如今虚拟人、AI主播和个性化语音助手快速发展的背景下&#xff0c;用户对合成语音的“真实感”提出了前所未有的高要求。不再是简单地“把字念出来”&#xff0c;而是要听起来像真人——有呼吸、有情绪、有细微的…

作者头像 李华
网站建设 2026/10/16 8:40:30

GPT-SoVITS在直播场景中的实时语音替换实验

GPT-SoVITS在直播场景中的实时语音替换实验 在一场深夜的游戏直播中&#xff0c;观众听到的是一位甜美少女的声音&#xff0c;语气活泼、语调自然。可镜头一转&#xff0c;主播本人却是个声音低沉的男生——他并没有使用变声器那种机械感十足的处理方式&#xff0c;而是通过一套…

作者头像 李华
网站建设 2026/10/16 22:21:40

B站视频下载终极指南:轻松保存所有心仪内容

还在为喜欢的B站视频无法离线观看而烦恼吗&#xff1f;想要一次性收藏UP主的全部作品却苦于手动操作太麻烦&#xff1f;今天为大家带来一款超级实用的B站视频下载工具使用攻略&#xff0c;让你从此告别这些烦恼&#xff01;&#x1f389; 【免费下载链接】BilibiliDown (GUI-多…

作者头像 李华
网站建设 2026/10/8 9:39:33

终极设备标识重置指南:三步实现无限试用体验

在AI编程助手日益普及的今天&#xff0c;许多开发者都遇到过这样的困扰&#xff1a;当Cursor提示"这台机器上使用了太多免费试用账号"时&#xff0c;我们的编程效率瞬间大打折扣。今天&#xff0c;我将为你揭秘一种高效的设备标识重置方案&#xff0c;让你重新获得无…

作者头像 李华
网站建设 2026/10/13 13:34:43

高密度电源设计:PCB线宽与电流关系实用指南

高密度电源设计&#xff1a;如何科学确定PCB走线宽度承载电流&#xff1f;你有没有遇到过这样的情况——电路板一上电&#xff0c;某段电源走线就开始发烫&#xff0c;甚至在长时间运行后出现铜箔起泡、焊盘翘起&#xff1f;更严重的&#xff0c;整机莫名其妙重启或烧毁。问题查…

作者头像 李华