Hanjie's Blog

一只有理想的羊驼

运动学分析

SCARA机械臂3、4关节\(J_3\)\(J_4\)采用滚珠丝杠滚珠花键,其结构如图11所示。关节\(J_3\)与同步轮\(N_2\)联动,关节\(J_4\)与同步轮\(N_1\)联动。他们的运动关系如表1所示。

表. 1:电机与滚珠丝杠滚珠花键运动关系表

\(\theta_{J_3}\) \(\theta_{J_4}\) \(\theta_{N_1}\) \(\theta_{N_2}\) 竖直运动 旋转运动
+ 0 0 + - -
- 0 0 - + +
0 + + 0 + 0
0 - - 0 - 0

其中,\(+\)号表示正方向,\(-\)表示逆方向,\(0\)表示不运动,要注意\(\theta_{J_3}\)\(\theta_{J_4}\)\(\theta_{N_1}\)\(\theta_{N_2}\)的方向是根据各自所在的坐标下的,具体方向根据图.2所示的DH(Denavit-Hartenberg)坐标系定义,而竖直运动和旋转运动是相对于\(X_0Y_0Z_0\)基坐标系。

从表中可以看出,当关节电机\(J_4\)带动同步轮\(N_1\)进行正方向运动(\(X_3Y_3Z_3\)坐标系),而\(N_2\)不动时,轴仅仅会向上运动(相对于\(X_0Y_0Z_0\)基坐标系)。当关节电机\(J_3\)带动同步轮\(N_2\)进行正方向运动(\(X_2Y_2Z_2\)坐标系),而\(N_1\)不动时,轴在向下运动同时,还会逆时针反方向运动(\(X_0Y_0Z_0\)基坐标系)。由此可见,\(N_1\)\(N_2\)相互耦合,需要配合运动。在机械人中,通过逆运动学求得\(d_3\)\(\theta_4\)后,需要通过关节解耦求出电机的转角\(\theta_{J_3}\)\(\theta_{J_4}\)2

scara_skew_bal
图.1: 滚珠丝杠滚珠花键。
scara_mode
图.2: SCARA型机械臂的DH坐标系分配。

关节解耦

经上述分析,可得出以下关系式:

对于\(N_1\),有:

\[\begin{align} {y_1} &= \alpha {\theta _{N_1}} \nonumber \newline {\theta _{N_1}} &= {k_1}{\theta _ {J_4}} \nonumber \newline \therefore {y_1} &= \alpha {k_1}{\theta _{J_4}} \label{eq:jieou1} \end{align}\]

其中,\(y_1\)表示\(N_1\)运动导致的竖直方向位移(\(X_0Y_0Z_0\)坐标系);\(\alpha\)为螺距,单位为\(m/rad\),表示为\(N\)转动的弧度\(\theta_{N}\)与所产生轴上下移动的位移比例;\(k\)表示电机\(J\)与同步轮\(N\)之间的减速比。

同样地,对于\(N_2\),有:

\[\begin{align} {y_2} &= -\alpha {\theta _{N_2}} \notag \newline {\theta _{N_2}} &= {k_2}{\theta _{J_3}} \notag \newline \therefore {y_2} &= -\alpha {k_2}{\theta _{J_3}} \label{eq:jieou2} \end{align}\]

则:

\[\begin{align} \label{eq:jieou3} \theta_4 &= {\theta _{N_2}} \newline \label{eq:jieou4} -{d_3} &= {y_1} + {y_2} \end{align}\]

注意\(d_3\)是相对于\(X_2Y_2Z_2\)坐标系的,而\(y_1\)\(y_2\)是相对于\(X_0Y_0Z_0\)坐标系的,由于\(Z_2\)\(Z_0\)方向相反,所以\(d_3\)前有一个负号。将公式\(\eqref{eq:jieou1}\)\(\eqref{eq:jieou2}\)代入公式\(\eqref{eq:jieou3}\)\(\eqref{eq:jieou4}\),可得:

\[\begin{align} \label{eq:jieou5} {\theta _{J_3}} &= \frac{\theta_4}{k_2} \newline \label{eq:jieou6} {\theta _{J_4}} &= \frac{1}{k_1}({\theta _4} - \frac{d_3}{\alpha}) \end{align}\]

所以,算法流程如下:

  1. 使用逆运动学方法,将基于基坐标系(Base Frame)\(X_0Y_0Z_0\)的目标点(包括坐标跟姿态)转换成广义坐标(Generalized Coordinates)下的\(d_3\)\(\theta_4\)
  2. 使用公式\(\eqref{eq:jieou5}\)\(\eqref{eq:jieou6}\),关节解耦求出电机的转角\(\theta_{J_3}\)\(\theta_{J_4}\)

在我们的实体机器人中,\(k_1 = 1\)\(k_2 = 1/7\)\(\alpha = 0.016m/2\pi = 0.002546479089 m/rad\),所以有:

\[\begin{align} \label{eq:jieou7} {\theta _{J_3}} &= 7\theta_4 \newline \label{eq:jieou8} {\theta _{J_4}} &= {\theta _4} - 392.69908177d_3 \end{align}\]


  1. https://www.nbcorporation.com/product/new/spbr/spbr.html↩︎

  2. 胡杰, 张铁. 基于 SCARA 机器人的运动学分析及关节解耦. 机床与液压. 2011;39(21):28-31.↩︎

最近使用使用Mac的过程中,经常会发现鼠标卡顿的现象,然后使用活动监视器,发现opendirectory进程占用CPU高达50%。

经过搜索,发现是因为Dropbox文件夹里有错误的symlinks造成的1。我首先关掉Dropbox,opendirectory进程的CPU占用率马上降下来了,确定Dropbox是造成问题的原因。

使用命令:

1
find '~/Dropbox' -type l -print0 | barges -0 file | grep broken

删除显示的失效symlinks,重启电脑。

重启后发现opendirectory不会一直占用了,但还是会波段地占用30%左右的CPU资源。

最后终于在Dropbox网站上找了原因2

如果知道您的 Dropbox 文件夹中有符号链接,删除这些符号链接可改善 Dropbox 桌面应用的性能。符号链接会引用 Dropbox 文件夹外部位置中的数据,因此 Dropbox 桌面应用可能会在尝试访问这些链接时卡住。

在终端输入以下命令:

1
find ~/Dropbox -type l -exec ls -lah {} \;

发现由于我在Dropbox文件内有一个Hexo的博客项目,里面有大量的软链接。

通过清除软链接,opendirectory占用CPU资源的问题终于解决了。


  1. http://superuser.com/questions/350879/opendirectoryd-consumes-40-of-cpu↩︎

  2. https://www.dropbox.com/help/9199↩︎

0%