DH坐标系的建立笔记

本文详细介绍了DH坐标系的建立原则及其在机械臂正运动学中的应用。作者通过实践,总结出了坐标系建立的重要原则,并分享了一段Python代码实现正运动学计算,适合初学者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://www.cnblogs.com/mightycode/p/9095059.html
如上这篇文章用于学习DH坐标系建立,非常不错,推荐初学者阅读。
在此建立笔记如下:
1.坐标系的建立隐含原则:文章右上方的草图,即为各伺服电机的初始位置,也就是 theta=0的位置。 我经过反复调测,得到这个结论。
2.实际调试中,应该会对伺服电机的正负转向予以定义,用于适应开始建立的这个模型。
3.在编码过程中走了一个弯路: 我曾经试图将每个矩阵都先用round函数,使每个矩阵元素都保留小数点后四位,这样后续计算就比较省计算机时间,然而,这个函数加上之后,矩阵算出来的新矩阵总是很离谱,反复查找原因未果,只好放下这个想法了。至今不明白为何numpy.around()这个函数为何不好用。有一种可能是这个库函数有bug。

上面第一条结论,是通过多次尝试修改六个转角值得出的。
一开始,我想让机械臂沿基础坐标的z轴伸展到最大,也就是末端的z值达到最大,试图发现各角度为0时的起始点。没有发现头绪,但当我把所有角度都置为0时,发现机械臂的位姿和模型草图位姿一样,才发现了这个道理。

下面是我根据文章的模型写的正运动学部分代码:逆运动学部分代码哪位大佬写出来了,请与我分享,谢谢。

import numpy as np
import time
import math

#math.sin(math.radians(90))
from numpy import *;
theta=math.pi/180
d1=89.2
a2=-425.0
a3=-392.25
d4=109.15
d5=94.65
d6=82.3

#6 angles of each joint.
theta1=math.pi
theta2=0
theta3=0
theta4=0
theta5=0
theta6=0

#6 matrix.
T1=np.matrix([[math.cos(theta1),0,math.sin(theta1),0],
       [math.sin(theta1),0,-math.cos(theta1),0],
       [0,1,0,d1],
       [0,0,0,1]])
#T1_=np.round(T1,decimals=4)
T2=np.matrix([[math.cos(theta2),-math.sin(theta2),0,a2*math.cos(theta2)],
       [math.sin(theta2),math.cos(theta2),0,a2*math.sin(theta2)],
       [0,0,1,0],
       [0,0,0,1]])
#T2_=np.round(T2,decimals=4)
T3=np.matrix([[math.cos(theta3),-math.sin(theta3),0,a3*math.cos(theta3)],
           [math.sin(theta3),math.cos(theta3),0,a3*math.sin(theta3)],
           [0,0,1,0],
           [0,0,0,1]])
#T3_=np.round(T3,decimals=4)
T4=np.matrix([[math.cos(theta4),0,math.sin(theta4),0],
    [math.sin(theta4),0,-math.cos(theta4),0],
    [0,1,0,d4],
    [0,0,0,1]])
#T4_=np.round(T4,decimals=4)
T5=[[math.cos(theta5),0,-math.sin(theta5),0],
    [math.sin(theta5),0,math.cos(theta5),0],
    [0,-1,0,d5],
    [0,0,0,1]]
#T5_=np.around(T5,4)
T6=[[math.cos(theta6),-math.sin(theta6),0,0],
    [math.sin(theta6),math.cos(theta6),0,0],
    [0,0,1,d6],
    [0,0,0,1]]
#T6_=np.around(T6,4)


t1t2t3t4t5t6=T1*T2*T3*T4*T5*T6




#output of the matrix

for j in t1t2t3t4t5t6:
	print (j)








<think>好的,我现在需要帮助用户在SolidWorks中导入自定义的DH参数表并与坐标系关联。首先,我需要回忆一下DH参数的基本概念,Denavit-Hartenberg参数是用于描述机器人关节之间坐标变换的一种方法,分为标准DH和改进DH两种。用户可能已经设计了自己的参数表,现在想在SolidWorks中应用这些参数来建立相应的坐标系。 接下来,我得思考SolidWorks中通常如何处理坐标系和参数设置。SolidWorks中的装配体功能允许用户通过配合和约束来定位零件,但要直接导入DH参数可能需要使用方程驱动的功能或者宏来实现。可能需要通过配置全局变量,然后应用这些变量到零件的移动或旋转中。 步骤可能包括:首先在装配体中建立各个连杆的坐标系,然后根据DH参数表中的α, a, d, θ等参数,调整每个坐标系之间的相对位置和旋转角度。每个关节可能需要使用Mate中的高级约束,或者通过添加方程式来关联参数表中的数值。例如,旋转关节的θ角度可以通过方程式链接到全局变量,这样当参数表更新时,模型自动调整。 另外,用户可能需要使用SolidWorks的API或宏来自动化这一过程,尤其是当DH参数较多时,手动操作容易出错。编写一个VBA宏读取CSV或Excel文件中的DH参数,然后在装配体中自动生成相应的坐标系和约束,这可能是一个有效的方法。不过,用户可能需要一定的编程知识,或者需要参考相关的API文档。 还需要考虑用户是否了解SolidWorks中的参考几何体,比如基准轴和基准面的创建,这些是建立坐标系的基础。每个连杆的坐标系应基于前一个坐标系的变换,按照DH参数的规则来设置。例如,标准DH参数中,每个坐标系的原点位于连杆的末端,而改进DH可能有所不同,所以正确区分这两种方法很重要,避免混淆。 可能遇到的问题包括:坐标系的变换顺序是否正确,参数的符号是否与SolidWorks的坐标系方向一致,以及如何验证生成的运动学模型是否正确。这时候可能需要用户进行正向运动学计算,手动验证末端执行器的位置是否符合预期,或者在Motion Study中进行运动模拟。 最后,需要确保回答结构清晰,分步骤说明操作流程,并提醒用户注意常见问题和验证方法。如果有相关的参考资料或SolidWorks官方文档支持某些步骤,应添加引用标识,比如使用方程式驱动装配体的官方教程链接。</think>在 SolidWorks 中将自定义 DH 参数表与坐标系关联需要结合参数化设计和装配体约束。以下是详细步骤: --- ### **步骤 1:准备 DH 参数表** 假设您的 DH 参数表包含以下参数(以改进 DH 为例): | 关节 | $\alpha_{i-1}$ | $a_{i-1}$ | $d_i$ | $\theta_i$ | |------|----------------|-----------|-------|------------| | 1 | 0 | 0 | $d_1$ | $\theta_1$ | | 2 | $-\pi/2$ | 0 | 0 | $\theta_2$ | --- ### **步骤 2:创建零件和装配体** 1. **建模连杆**:为每个关节创建零件,定义基准轴和基准面以表示关节的旋转/平移方向。 2. **新建装配体**:将零件按顺序装配,确保初始位置对齐。 --- ### **步骤 3:定义全局变量** 1. 在装配体中,通过 **“方程式”** 功能(顶部菜单 > 工具 > 方程式)添加 DH 参数变量,例如: ```plaintext "alpha_0" = 0, "a_0" = 0, "d_1" = 100mm, "theta_1" = 30deg ``` [^1] --- ### **步骤 4:应用 DH 参数约束** 1. **坐标系变换**:对每个关节的坐标系应用 DH 变换规则: - **旋转 $\alpha_{i-1}$**:绕当前 X 轴旋转 $\alpha_{i-1}$。 - **平移 $a_{i-1}$**:沿当前 X 轴平移 $a_{i-1}$。 - **平移 $d_i$**:沿新 Z 轴平移 $d_i$(平移关节)。 - **旋转 $\theta_i$**:绕新 Z 轴旋转 $\theta_i$(旋转关节)。 2. **使用高级配合**: - 在装配体中,通过 **“机械配合” > “齿轮”** 或 **“线性耦合”** 将关节运动与全局变量绑定。 - 对旋转关节,添加角度约束公式,例如:`"角度" = theta_1`。 --- ### **步骤 5:验证运动链** 1. **驱动关节变量**:在 Motion Study 中通过 **“马达”** 或 **“线性驱动”** 模拟关节运动。 2. **检查末端轨迹**:使用 **“结果跟踪”** 验证末端执行器路径是否符合 DH 模型预期。 --- ### **注意事项** - **坐标系方向**:SolidWorks 默认使用 Y 轴竖直向上,需调整 DH 参数中的轴定义[^2]。 - **参数更新**:若修改全局变量,需右键更新装配体(**Ctrl + B**)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值