加工机器人冗余自由度
一、冗余自由度
刀具路径由离散的CLS数据组成,
其中x,y,z为刀具位置,i,j,k为刀轴方向的单位向量
1、CLS对应的末端姿态
方法一:
引用文献中的方法
Peng J, Ding Y, Zhang G, 等. Smoothness-oriented path optimization for robotic milling processes[J]. Science China Technological Sciences, 2020, 63(9): 1751–1763.
由cls可以生成刀具姿态,但是刀具姿态并不唯一,定义初始机器人任务姿态为:
为刀具姿态矩阵的位置,z轴向量为
x轴向量为
y轴向量可以有下式计算得来
由此可以得到机器人末端初始姿态矩阵,因为绕刀具轴的旋转对铣刀定位没有影响,因此对于一个CLS,存在无数的可行机器人姿态,可由绕刀轴旋转得到。
其中为cls对应的初始末端矩阵,为冗余自由度,这样就可以得到CLS任意冗余自由度对应的末端姿态矩阵。
这种方法会导致刀具轨迹弯折时机器人姿态变化较大
方法二:
[1]Zhu W, Qu W, Cao L, 等. An off-line programming system for robotic drilling in aerospace manufacturing[J]. The International Journal of Advanced Manufacturing Technology, 2013, 68(9–12): 2535–2545.
定义与上一个的方法一样,,而是三个标准单位向量在由决定的平面上的最长投影的归一化向量,是和的叉积。
方法三:
[1]熊刚. 机器人铣削加工的误差补偿和力控制方法研究[D]. 上海交通大学, 2019.

方法四:
计算刀轴向量和 基座标系Z轴之间的变换矩阵
将两个向量之间的变换视为绕某一轴的旋转某一角度的螺旋运动,旋转角为两个向量之间的夹角,而旋转轴则是两个向量之间的叉积。
已知单位向量,将其绕某一轴旋转,通过使用罗德里格斯公式可以计算其旋转矩阵。
方法一:#使用轴角法求取向量之间的变换矩阵,和上一个函数是一样的方法def rotation_matrix_from_vectors2(vec2): vec1 = [0, 0, 1] #规范化两个向量 a, b = (vec1 / np.linalg.norm(vec1)).reshape(3), (vec2 / np.linalg.norm(vec2)).reshape(3) #求两个向量变换的旋转轴 v = np.cross(a, b) s = np.linalg.norm(v) v = v / s #求旋转角度 c = np.dot(a, b) theta = math.acos(c) #使用mr库求取轴角法的旋转矩阵,用的是罗德里格斯公式 omegaHat = mr.VecToso3(v) so3mat = omegaHat * theta matrix = mr.MatrixExp3(so3mat) #求矩阵对应的欧拉角 r = R.from_matrix(matrix) euler = r.as_euler('ZYX',degrees=True) matrix = r.as_matrix() return matrix
方法二:本质上都是一样的def rotation_matrix_from_vectors(vec1,vec2): """ Find the rotation matrix that aligns vec1 to vec2 :param vec1: A 3d "source" vector :param vec2: A 3d "destination" vector :return mat: A transform matrix (3x3) which when applied to vec1, aligns it with vec2. """ a, b = (vec1 / np.linalg.norm(vec1)).reshape(3), (vec2 / np.linalg.norm(vec2)).reshape(3) v = np.cross(a, b) c = np.dot(a, b) s = np.linalg.norm(v) kmat = np.array([[0, -v[2], v[1]], [v[2], 0, -v[0]], [-v[1], v[0], 0]]) rotation_matrix = np.eye(3) + kmat + kmat.dot(kmat) * ((1 - c) / (s ** 2)) return rotation_matrix2、末端姿态对应的欧拉角
末端到基座标的旋转角ABC,是绕动坐标系旋转的ZYX欧拉角,KRC中定义角度A、B和C是绕Z、Y和X的旋转角度,旋转顺序也必须遵从:
- 绕Z轴旋转角度为A
- 绕Y轴旋转角度为B
- 绕X轴旋转角度为C

由机器人导论中的方法,对旋转矩阵求逆解
虽然存在第二个解,但是在上式中取的正根以得到单解,满足,以此获取各种姿态表示法之间一一对应的映射函数。如果等于+-90,解的结果就退化了,这个时候一般取。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!


