加工机器人冗余自由度

1019 字
5 分钟
加工机器人冗余自由度

一、冗余自由度#

刀具路径由离散的CLS数据组成,

CLS=(x,y,z,i,j,k)CLS=(x,y,z,i,j,k)

其中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可以生成刀具姿态,但是刀具姿态并不唯一,定义初始机器人任务姿态为:

oi=(x,y,z)o_i=(x,y,z)为刀具姿态矩阵的位置,z轴向量为

zi=(i,j,k)z_i = (i,j,k)

x轴向量为

xi=yi×zix_i=y_i \times z_i

y轴向量可以有下式计算得来

yi=zi×oi+1oizi×oi+1oi对于最后一个clsyi=zi×oi1oizi×oi1oi\begin{gathered} y_i= \frac{z_i \times \overline{o_{i+1} o_{i}} } {\lVert {z_i \times \overline{o_{i+1} o_{i}}} \lVert}\\ \text{对于最后一个}cls\text{点}\\ y_i= \frac{z_i \times \overline{o_{i-1} o_{i}} } {\lVert {z_i \times \overline{o_{i-1} o_{i}}} \lVert} \end{gathered}

由此可以得到机器人末端初始姿态矩阵,因为绕刀具轴的旋转对铣刀定位没有影响,因此对于一个CLS,存在无数的可行机器人姿态,可由绕刀轴旋转得到。

T(γi)=TiRot(z^,γi)Ti=[xiyizioi0001]\begin{gathered} T(\gamma_i) = T_i \cdot Rot(\hat{z},\gamma_i)\\ T_i = \begin{bmatrix} x_i&y_i&z_i&o_i\\ 0&0&0&1\end {bmatrix} \end{gathered}

其中TiT_i为cls对应的初始末端矩阵,γ[π,π]\gamma \in [-\pi,\pi]为冗余自由度,这样就可以得到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.

定义与上一个的方法一样,zi=[i,j,k]z_i = [i,j,k],而xix_i是三个标准单位向量[1,0,0],[0,1,0],[0,0,1][1,0,0],[0,1,0],[0,0,1]在由[x,y,z][i,j,k][x,y,z]\text{和}[i,j,k]决定的平面上的最长投影的归一化向量,yiy_iziz_ixix_i的叉积。

方法三:#

[1]熊刚. 机器人铣削加工的误差补偿和力控制方法研究[D]. 上海交通大学, 2019.

image-20220513120231244
image-20220513120231244

方法四:#

计算刀轴向量和 基座标系Z轴之间的变换矩阵

将两个向量之间的变换视为绕某一轴的旋转某一角度的螺旋运动,旋转角为两个向量之间的夹角,而旋转轴则是两个向量之间的叉积。

已知单位向量,将其绕某一轴ω\omega旋转θ\theta,通过使用罗德里格斯公式可以计算其旋转矩阵。

R(ω,θ)=I+sinθ[ω]+(1cosθ)[ω]2R(\omega,\theta) =I +sin\theta[\omega]+(1-cos\theta)[\omega]^2
方法一:
#使用轴角法求取向量之间的变换矩阵,和上一个函数是一样的方法
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_matrix

2、末端姿态对应的欧拉角#

末端到基座标的旋转角ABC,是绕动坐标系旋转的ZYX欧拉角,KRC中定义角度A、B和C是绕Z、Y和X的旋转角度,旋转顺序也必须遵从:

  1. 绕Z轴旋转角度为A
  2. 绕Y轴旋转角度为B
  3. 绕X轴旋转角度为C

image-20220504214148968
image-20220504214148968

由机器人导论中的方法,对旋转矩阵求逆解

RZYX=RZ(α)RY(β)RX(γ)=[r11r12r13r21r22r23r31r32r33]β=Atan2(r31,r112+r212)α=Atan2(r21cβ,r11cβ)γ=Atan2(r32cβ,r33cβ)\begin{gathered} R_{ZYX}=R_Z(\alpha)R_Y(\beta)R_X(\gamma)=\begin {bmatrix} r11 & r12 &r13\\ r21&r22&r23\\ r31&r32&r33\end {bmatrix}\\ \beta=Atan2(-r_{31},\sqrt{r_{11}^2 + r_{21}^2})\\ \alpha=Atan2(\frac {r_{21}}{c\beta},\frac {r_{11}}{c\beta})\\ \gamma = Atan2(\frac{r_{32}}{c\beta},\frac {r_{33}}{c\beta}) \end{gathered}

虽然存在第二个解,但是在上式中取β\beta的正根以得到单解,满足90β90-90\le \beta \le 90,以此获取各种姿态表示法之间一一对应的映射函数。如果等于+-90,解的结果就退化了,这个时候一般取α=0\alpha = 0

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
加工机器人冗余自由度
https://blog.leihub.cn/archives/763/
作者
阿雷
发布于
2022-01-20
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
机器人运动轨迹转换
机器人技术机器人铣削运动链 如图所示为机器人铣削系统,由机器人本体、变位器、工件以及电主轴组成,机器人通过底座本体固定于地面,而电主轴通过刚性连接固定于末端法兰。机器人铣削系统包括了多个参考坐标系,机器人基坐标系 定义于机器人底座中心,机器人工具坐标
2
机器人运动学笔记
机器人技术一、机器人学 1.POE (1)绪论 (2)形位空间 (3)刚体运动 3.1旋转与角速度 1.旋转矩阵 R=Rot hat omega , theta 满足以下条件 正则条件 正交条件 坐标系三个坐标轴遵循右手定则 33旋转矩阵组成的集合被
3
群晖照片异地备份到 Unraid + Immich 相册搭建详细教程:rsync 同步与踩坑全记录
NAS & 云服务搭建我家里同时有白群晖和 unRAID 两台 NAS ,准备把群晖里攒了几年的照片进行异地备份,单盘 NAS 一旦坏了,照片可就全没了。 我自己折腾了两天,踩了一堆坑,终于跑通了一套「unRAID 定时拉取群晖 + Immich 相册」的方案。
4
西上东下:梵净山雾中徒步记
城市短途漫游朋友嚷嚷了一年的梵净山,最近终于找到了爬山窗口,做足了攻略的我们,直接选择来一波特种兵爬梵净山。 一、周五晚上10点,株洲站出发 我们几个都是从株洲出发的,火车是晚上的卧铺车,10 点出发,第二天凌晨 5:40 到铜仁。一张硬卧 138 块
5
NotionNext 个人博客搭建教程:腾讯云 EdgeOne 部署
博客搭建 & 运维前言 目前主流的博客搭建方案可大致分为两类,且各有局限:一类是以 WordPress 为代表的动态博客系统,依赖独立服务器运行,运维与硬件成本较高;另一类是以 Hexo 为代表的静态博客框架,采用本地 Markdown 编写,无实时预览能力
随机文章随机推荐

评论区

Profile Image of the Author
阿雷
一个小趴菜
公告
本站已从 WordPress 迁移到 Astro,访问更快、更清爽。文章链接保持原样(/archives/文章ID/),评论数据正在陆续恢复中。
分类
标签
最新动态
站点统计
文章
76
分类
15
标签
99
总字数
318,421
运行时长
0
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录