RCM约束下的手术机器人
RCM(Remote Center of Motion)约束,通俗讲就是做微创手术时,机械臂插进身体,机械臂受身体的插入点的约束,不能乱动。
相关参考论文《 Task Control with Remote Center of Motion Constraint for Minimally Invasive Robotic Surgery》
RCM例题如下
下图显示了用机器人执行内窥镜检查问题的平面表示。
平面2R机械臂的第二个(也是最后一个)连杆的内窥镜摄像头必须穿过套管针(红色圆柱体)与垂直壁相交, 通过套管针中心(红点)
机械臂的两个连杆的长度都等于1。
求
P
E
P_{E}
PE点的所有容许的笛卡尔速度
解题如下
首先写出 P 1 P_{1} P1和 P 2 P_{2} P2 (即 P E P_{E} PE) 的坐标如下:
P 1 = ( cos ( q 1 ) sin ( q 1 ) ) P_{1}=\left(\begin{array}{c} \cos\left(q_{1}\right)\\ \sin\left(q_{1}\right) \end{array}\right) P1=(cos(q1)sin(q1))
P 2 = ( cos ( q 1 ) + cos ( q 2 ) sin ( q 1 ) + sin ( q 2 ) ) P_{2}=\left(\begin{array}{c} \cos\left(q_{1}\right)+\cos\left(q_{2}\right)\\ \sin\left(q_{1}\right)+\sin\left(q_{2}\right) \end{array}\right) P2=(cos(q1)+cos(q2)sin(q1)+sin(q2))
以及角度 q q q如下:
q = ( q 1 q 2 ) q = \left(\begin{array}{c} q_{1}\\ q_{2} \end{array}\right) q=(q1q2)
然后 P 1 P_{1} P1和 P 2 P_{2} P2 对 q q q 微分求 雅可比矩阵 J 1 J_{1} J1 和 J 2 J_{2} J2 如下:
J 1 = ∂ P 1 ∂ q = ( − sin ( q 1 ) 0 cos ( q 1 ) 0 ) J_{1}= \frac{\partial P_{1}}{\partial q} = \left(\begin{array}{cc} -\sin\left(q_{1}\right) & 0\\ \cos\left(q_{1}\right) & 0 \end{array}\right) J1=∂q∂P1=(−sin(q1)cos(q1)00)
J 2 = ∂ P 2 ∂ q = ( − sin ( q 1 ) − sin ( q 2 ) cos ( q 1 ) cos ( q 2 ) ) J_{2} = \frac{\partial P_{2}}{\partial q} = \left(\begin{array}{cc} -\sin\left(q_{1}\right) & -\sin\left(q_{2}\right)\\ \cos\left(q_{1}\right) & \cos\left(q_{2}\right) \end{array}\right) J2=∂q∂P2=(−sin(q1)cos(q1)−sin(q2)cos(q2))
然后根据论文提到的公式,可以求出 P R C M P_{RCM} PRCM 处的雅可比矩阵 J R C M ( q , λ ) J_{RCM}(q, \lambda) JRCM(q,λ) 如下:
J R C M ( q , λ ) = ( J 2 − λ ( J 2 − J 1 ) P 2 − P 1 ) T = ( − sin ( q 1 ) − λ sin ( q 2 ) cos ( q 2 ) cos ( q 1 ) λ cos ( q 2 ) sin ( q 2 ) ) J_{RCM}(q, \lambda) = \left(\begin{array}{c} J_{2}-\lambda(J_{2}-J_{1})\\ P2-P1 \end{array}\right)^{T} = \left(\begin{array}{ccc} -\sin\left(q_{1}\right) & -\lambda \,\sin\left(q_{2}\right) & \cos\left(q_{2}\right)\\ \cos\left(q_{1}\right) & \lambda \,\cos\left(q_{2}\right) & \sin\left(q_{2}\right) \end{array}\right) JRCM(q,λ)=(J2−λ(J2−J1)P2−P1)T=(−sin(q1)cos(q1)−λsin(q2)λcos(q2)cos(q2)sin(q2))
接着,根据下面这个公式,可以求得角速度 q ˙ \dot{q} q˙如下:
P R C M ˙ = J R C M ( q , λ ) ( q ˙ λ ˙ ) = 0 \dot{P_{RCM}} = J_{RCM}(q, \lambda) \left(\begin{array}{c} \dot{q}\\ \dot{\lambda} \end{array}\right) = 0 PRCM˙=JRCM(q,λ)(q˙λ˙)=0
q ˙ = ( λ ˙ sin ( q 1 − q 2 ) − λ ˙ cos ( q 1 − q 2 ) λ sin ( q 1 − q 2 ) ) \dot{q} = \left(\begin{array}{c} \frac{\mathrm{\dot{\lambda}}}{\sin\left(q_{1}-q_{2}\right)}\\ -\frac{\mathrm{\dot{\lambda}}\,\cos\left(q_{1}-q_{2}\right)}{\lambda \,\sin\left(q_{1}-q_{2}\right)} \end{array}\right) q˙=(sin(q1−q2)λ˙−λsin(q1−q2)λ˙cos(q1−q2))
求得角速度后,就可以计算出 P 2 ˙ = P E ˙ \dot{P_{2}}=\dot{P_{E}} P2˙=PE˙ 如下:
P E ˙ = J 2 q ˙ = ( − λ ˙ ( sin ( q 1 − 2 q 2 ) − sin ( q 1 ) + 2 λ sin ( q 1 ) ) 2 λ sin ( q 1 − q 2 ) − λ ˙ ( cos ( q 1 − 2 q 2 ) + cos ( q 1 ) − 2 λ cos ( q 1 ) ) 2 λ sin ( q 1 − q 2 ) ) \dot{P_{E}} = J_{2} \dot{q} = \left(\begin{array}{c} -\frac{\mathrm{\dot{\lambda}}\,\left(\sin\left(q_{1}-2\,q_{2}\right)-\sin\left(q_{1}\right)+2\,\lambda \,\sin\left(q_{1}\right)\right)}{2\,\lambda \,\sin\left(q_{1}-q_{2}\right)}\\ -\frac{\mathrm{\dot{\lambda}}\,\left(\cos\left(q_{1}-2\,q_{2}\right)+\cos\left(q_{1}\right)-2\,\lambda \,\cos\left(q_{1}\right)\right)}{2\,\lambda \,\sin\left(q_{1}-q_{2}\right)} \end{array}\right) PE˙=J2q˙=(−2λsin(q1−q2)λ˙(sin(q1−2q2)−sin(q1)+2λsin(q1))−2λsin(q1−q2)λ˙(cos(q1−2q2)+cos(q1)−2λcos(q1)))
Matlab代码实现如下
clear all
close all
clc
定义各种要用的符号
syms q1 q2 real %角
syms lambda lambdav
q = [q1; q2];
qv = [qv1; qv2];
P1 = [[cos(q1)]; [sin(q1)]]
P2 = [[cos(q1)+cos(q2)]; [sin(q1)+sin(q2)]];
J1 = jacobian(P1, q);
J2 = jacobian(P2, q);
Jrcm = [[J1+lambda*(J2-J1)] P2-P1]
v = [qv; lambdav];
qv = simplify((inv(Jrcm(:, 1:2)))*(Jrcm(:, 3)*(-lambdav)))
Pe = simplify(J2*qv)