机器人奇异点分析工具

机器人奇异点分析工具

  • [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. 获取方式

官网:

https://drake.mit.edu/

安装:

复制代码
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. 获取方式

官网:

https://web.casadi.org/

安装:

复制代码
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 → 理论推导

相关推荐
zzzzzz3105 天前
假如我是掘金管理员,我先给评论区装个'代码审查'系统
python·程序员·机器人
通信小呆呆6 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
生成论实验室6 天前
机器人:一个自主运动的系统
人工智能·算法·语言模型·机器人·自动驾驶·agi·安全架构
Dick5076 天前
ROS2 常用命令表
人工智能·学习·算法·机器人
沫儿笙6 天前
川崎机器人二保焊节气设备
人工智能·机器人
C++ 老炮儿的技术栈6 天前
Qt工控实战:自研机器人TCP长连接客户端(粘包处理+心跳保活+自动重连完整源码解析)
qt·tcp/ip·机器人
Deepoch6 天前
VLA多模态架构加持 采摘机器人实现精细化智能采收
人工智能·机器人·开发板·具身模型·deepoc·采摘
选与握6 天前
$\pi_{0.7}$: 一个具备涌现能力的可引导的通用机器人基础模型
机器人·vla·pi07
梦想的旅途26 天前
企业微信外部群自动化:一期交付应聚焦双向会话闭环
java·开发语言·机器人·自动化·maven·企业微信