机器人奇异点分析工具
- [1️⃣ MATLAB Robotics System Toolbox(最稳最省事版本)](#1️⃣ MATLAB Robotics System Toolbox(最稳最省事版本))
-
- [1. 获取方式(安装)](#1. 获取方式(安装))
- [2. 验证是否安装成功](#2. 验证是否安装成功)
- [3. 是否能正常使用(最小测试)](#3. 是否能正常使用(最小测试))
- [4. 导入自己的 URDF(核心步骤)](#4. 导入自己的 URDF(核心步骤))
- [5. Jacobian 自动计算](#5. Jacobian 自动计算)
- [6. 奇异性分析(最常用)](#6. 奇异性分析(最常用))
- [7. manipulability(推荐一起用)](#7. manipulability(推荐一起用))
- [8. 一步到位:完整流程(建议直接用)](#8. 一步到位:完整流程(建议直接用))
- [9. MATLAB 这一套的优点(为什么推荐)](#9. MATLAB 这一套的优点(为什么推荐))
- [10. 适合什么阶段](#10. 适合什么阶段)
- [11. 一句话总结](#11. 一句话总结)
- [2️⃣ Robotics Toolbox for Python](#2️⃣ Robotics Toolbox for Python)
-
- [1. 获取方式(安装)](#1. 获取方式(安装))
- [2. 验证是否安装成功](#2. 验证是否安装成功)
- [3. 是否能正常使用(最小测试)](#3. 是否能正常使用(最小测试))
- [4. 奇异性分析](#4. 奇异性分析)
- [5. 特点总结](#5. 特点总结)
- [3️⃣ Pinocchio(强烈推荐,下一篇重点讲)](#3️⃣ Pinocchio(强烈推荐,下一篇重点讲))
-
- [1. 获取方式(安装)](#1. 获取方式(安装))
- [2. 验证是否安装成功](#2. 验证是否安装成功)
- [3. 是否能正常使用(最小测试)](#3. 是否能正常使用(最小测试))
- [4. URDF 导入](#4. URDF 导入)
- [5. Jacobian 计算](#5. Jacobian 计算)
- [6. 奇异性分析](#6. 奇异性分析)
- [7. 特点总结](#7. 特点总结)
- [4️⃣ Drake(MIT)](#4️⃣ Drake(MIT))
-
- [1. 获取方式](#1. 获取方式)
- [2. 验证是否安装成功](#2. 验证是否安装成功)
- [3. 是否能正常使用](#3. 是否能正常使用)
- [4. URDF 导入](#4. URDF 导入)
- [5. Jacobian](#5. Jacobian)
- [6. 奇异性分析](#6. 奇异性分析)
- [7. 特点总结](#7. 特点总结)
- [5️⃣ CasADi / SymPy(符号级工具)](#5️⃣ CasADi / SymPy(符号级工具))
-
- [1. 获取方式](#1. 获取方式)
- [2. 验证是否安装成功](#2. 验证是否安装成功)
- [3. 最小测试](#3. 最小测试)
- [4. 奇异性解析](#4. 奇异性解析)
- [5. 特点总结](#5. 特点总结)
- 总结
以下内容GPT生成
我希望实现
输入:关节拓扑 + 连杆长度(URDF/DH)→ 自动生成:Jacobian + 奇异性分析。
1️⃣ MATLAB Robotics System Toolbox(最稳最省事版本)
如果你只是想实现:
👉 输入 URDF / DH
👉 自动得到 Jacobian
👉 顺便做奇异性分析
那么 MATLAB 是目前最省心、最少踩坑的方案。
1. 获取方式(安装)
MATLAB 自带工具箱(非开源,需要授权)
打开 MATLAB:
roboticsAddons
搜索:
Robotics System Toolbox
点击安装即可
2. 验证是否安装成功
方法一:
ver('robotics')
如果返回类似:
Robotics System Toolbox
👉 说明安装成功
方法二(更直接):
which geometricJacobian
👉 能找到函数路径 = OK
3. 是否能正常使用(最小测试)
直接跑一个最简单模型:
robot = loadrobot('kinovaGen3');
q = homeConfiguration(robot);
J = geometricJacobian(robot, q, 'EndEffector');
disp(J)
👉 能输出矩阵 = Jacobian 正常
4. 导入自己的 URDF(核心步骤)
robot = importrobot('humanoid.urdf');
show(robot)
👉 如果能正常显示模型 ⇒ URDF 没问题
5. Jacobian 自动计算
q = homeConfiguration(robot);
J = geometricJacobian(robot, q, 'foot');
disp(J)
6. 奇异性分析(最常用)
[U,S,V] = svd(J);
sigma_min = min(diag(S));
disp(sigma_min)
👉 越接近 0 ⇒ 越接近奇异
7. manipulability(推荐一起用)
w = sqrt(det(J * J'));
disp(w)
👉 w → 0 ⇒ 奇异
8. 一步到位:完整流程(建议直接用)
robot = importrobot('humanoid.urdf');
q = homeConfiguration(robot);
J = geometricJacobian(robot, q, 'foot');
[U,S,V] = svd(J);
sigma_min = min(diag(S));
w = sqrt(det(J * J'));
disp(sigma_min)
disp(w)
9. MATLAB 这一套的优点(为什么推荐)
✔ 不用自己推公式
✔ URDF 直接导入
✔ 自带可视化
✔ 几乎不会踩坑
10. 适合什么阶段
✔ 初期结构验证
✔ Jacobian正确性检查
✔ 奇异性快速判断
11. 一句话总结
👉 MATLAB = "最省脑子的 Jacobian + 奇异性分析工具"
2️⃣ Robotics Toolbox for Python
如果你不想被 MATLAB 环境绑定,或者希望后续和 RL / 仿真(PyTorch / Mujoco / Isaac)打通,推荐使用:
👉 Robotics Toolbox for Python(Peter Corke)
1. 获取方式(安装)
官方 GitHub:
https://github.com/petercorke/robotics-toolbox-python
安装:
pip install roboticstoolbox-python
2. 验证是否安装成功
import roboticstoolbox as rtb
print(rtb.__version__)
输出版本号 ⇒ 安装成功
3. 是否能正常使用(最小测试)
import roboticstoolbox as rtb
robot = rtb.models.DH.Puma560()
q = robot.qz
J = robot.jacob0(q)
print(J)
输出矩阵 ⇒ Jacobian 正常
4. 奇异性分析
import numpy as np
U, S, V = np.linalg.svd(J)
print("sigma_min:", np.min(S))
5. 特点总结
✔ Python生态(可接RL)
✔ 上手简单
✔ 适合快速验证
3️⃣ Pinocchio(强烈推荐,下一篇重点讲)
👉 humanoid / legged robot 主流工具
1. 获取方式(安装)
官方 GitHub:
https://github.com/stack-of-tasks/pinocchio
官方文档:
https://stack-of-tasks.github.io/pinocchio/
推荐安装:
conda install -c conda-forge pinocchio
2. 验证是否安装成功
import pinocchio as pin
print(pin.__version__)
输出版本号 ⇒ 成功
3. 是否能正常使用(最小测试)
import pinocchio as pin
model = pin.buildSampleModelManipulator()
data = model.createData()
q = pin.neutral(model)
pin.computeJointJacobians(model, data, q)
print("OK")
4. URDF 导入
import pinocchio as pin
model = pin.buildModelFromUrdf("humanoid.urdf")
data = model.createData()
print(model.nq)
5. Jacobian 计算
frame_id = model.getFrameId("foot")
J = pin.computeFrameJacobian(
model,
data,
q,
frame_id,
pin.ReferenceFrame.LOCAL
)
print(J)
6. 奇异性分析
import numpy as np
U, S, V = np.linalg.svd(J)
print("sigma_min:", np.min(S))
7. 特点总结
✔ 解析 Jacobian
✔ 支持 URDF
✔ humanoid 主流工具
4️⃣ Drake(MIT)
👉 系统级动力学工具
1. 获取方式
官网:
安装:
pip install drake
2. 验证是否安装成功
import pydrake
print("Drake loaded")
3. 是否能正常使用
from pydrake.all import MultibodyPlant, Parser
plant = MultibodyPlant(time_step=0.0)
parser = Parser(plant)
print("OK")
4. URDF 导入
from pydrake.all import MultibodyPlant, Parser
plant = MultibodyPlant(time_step=0.0)
parser = Parser(plant)
parser.AddModelFromFile("humanoid.urdf")
plant.Finalize()
5. Jacobian
plant.CalcJacobianSpatialVelocity(...)
6. 奇异性分析
import numpy as np
U, S, V = np.linalg.svd(J)
7. 特点总结
✔ 强动力学
✔ 支持接触
✔ 适合 humanoid
5️⃣ CasADi / SymPy(符号级工具)
👉 用于解析 Jacobian
1. 获取方式
官网:
安装:
pip install casadi
2. 验证是否安装成功
import casadi as ca
print(ca.__version__)
3. 最小测试
import casadi as ca
q = ca.SX.sym('q', 2)
x = ca.vertcat(
ca.cos(q[0]) + ca.cos(q[0]+q[1]),
ca.sin(q[0]) + ca.sin(q[0]+q[1])
)
J = ca.jacobian(x, q)
print(J)
4. 奇异性解析
detJ = ca.det(J)
print(detJ)
5. 特点总结
✔ 符号推导
✔ 自动微分
✔ 适合论文
总结
MATLAB → 快速验证
RTB-Python → 轻量分析
Pinocchio → 主力工具
Drake → 系统级
CasADi → 理论推导