mece 4602 - intro to robotics project group g spine needle ...xl2294/documents/a.pdf · 2. proposal...

19
MECE 4602 - Intro to Robotics Project Group G “Spine Needle Robot” Professor Aleksandra Popovic Spring 2012 Team: Xiaoming Lang, Brian Park, Jiali Wei, Hongda Zheng

Upload: doankiet

Post on 01-May-2019

220 views

Category:

Documents


0 download

TRANSCRIPT

MECE 4602 - Intro to Robotics

Project Group G

“Spine Needle Robot”

Professor Aleksandra Popovic

Spring 2012

Team: Xiaoming Lang, Brian Park, Jiali Wei, Hongda Zheng

1

Table of Contents

1. Analysis of Requirements ………………………………………………………….……………………….………… 2

a. Minimal Required Number of DOFs ………………………….…………………………………….… 2

b. Required Workspace ……………………………………………….……………………………………..… 2

c. Estimated Joint Speed ……………………………………….……………………………………………… 2

2. Proposal of Robot Kinematics ……………………….…………….…………………………………………….… 4

3. Kinematics of Robot ………………………………….…….…………………………………………………………… 7

a. Table of DH Parameters ……………………….…………………………………………………………… 7

b. Direct & Inverse Kinematics of Robot …….……………………………………………………….… 7

c. Workspace of Robot ……………………………….……………………………………………………. 10

4. Design of Robot …………………………….…………………….……………………………………………………. 11

a. Lengths & Thicknesses of Links ………………….…………………………………………………… 11

b. Materials for Links ……………………………………………………………………………………….…. 11

c. Computation of Dynamics Equations ……………………………………………………………… 12

d. Estimated Motor Requirements …………………………………………………………………….. 13

e. Types of Sensors Needed …………………………..………………………………………………….. 15

5. Appendix ……………………………………………………………………………………………………………………. 16

a. Matlab code …………………………………………………………………………………………………… 16

2

1. Analysis of Requirements

a. What is the minimal required number of DOFs to complete the task?

The minimum number of DOFs (Degrees of Freedom) is 3 for our spine needle robot. The

degrees of freedom we are dealing with are in the x-, y- and z-axis directions for the

movement of the robot and its links to successfully locate the point where the needle must

be inserted.

b. What is the required workspace?

A workspace here represents a three-dimensional volume of space in which a robot

performs its operations. In our particular case, the required workspace has the form of a

rectangular box that encompasses the spine region of a bigger-sized male (in order to

include all possible lengths and areas of a human spine). As a rough but safe estimate, we

have determined the region to be 100cm long, 25cm wide and 20cm deep.

c. What is the estimated speed of each joint?

We understand that it is quite difficult to figure out the exact values of speeds of each joint;

thus, we have to come up with reasonable estimates on how fast these joints must move.

We have looked particularly at the angular velocities and acceleration of the joints. They

should not be moving at such a high angular velocity and acceleration because doing so

would put too much torque on the joints, which would have a great chance to fail in a short

amount of time. On the other hand, the joints are not to move too slowly for the purpose of

increased time-saving and efficiency of the spine operations. Therefore, an acceptable

middle ground had to be chosen; the following table shows the values of angular velocities

and acceleration of each joint that we have determined:

Joint Angular Velocity (rad/s) Acceleration (rad/s2)

1 0.1 0.2

2 0.1 0.2

3 0.1 0.2

Table 1: Each joint’s angular velocities and acceleration of our choice

Having assumed the above values as our reasonable estimates of angular velocities and

accelerations of the joints, we have calculated the resulting torque that would be placed on

each joint. The results of the calculation is located in Section 4d.

3

The following figures show a few snapshots of the movement of our robot:

Figure 1: Snapshots of the spine needle robot movement

4

2. Proposal of Robot Kinematics

The simple kinematics of our robot is sketched below:

Figure 2: Overall kinematics of the spine needle robot

The most important element to consider when designing this robot was how to exactly find the

spot of a spine at which the needle must be inserted. It is extremely crucial to eliminate any

errors when the point of insertion is to be located because of the sheer gravity and severity of

the cases when the needle goes into the body with even a slight amount of offset, possibly

resulting in a paralysis or even death. Because the operation requires an utmost accuracy and

also since the spine of every patient is not guaranteed to be placed at the same location every

time, an imaging system such as X-ray or Ultrasound are commonly used to ensure that doctors

visually know exactly where the needle must be inserted.

Thus, we have concluded that, since locating the specific spot where the needle is to be inserted

is essential, we must ensure the accuracy with a combination of two methods: a rail on the side

of the operations table and a revolute joint attached to the rail. The rail can be either

automatically controlled by a computerized system or manually moved by a human hand or a

joystick. In either case, the rail must be programmed to have a coordinate system so, as the

robot attached to the rail moves, a computer can accurately track its movement along an axis

and display the current coordinates. That is, once the exact location of the needle insertion is

determined, a revolute joint on the rail is moved back and forth until the robot arm is

5

perpendicular to the point of insertion. If, for some reason, the revolute joint is slightly off from

where it must be or if there are multiple points of insertion, instead of always turning on the rail,

the revolute joint attached to the rail can just be rotated from being perpendicular to having a

certain amount of angle, θ0, in order to make small adjustments or refinements in finding the

exact location. A schematic of this is shown below in Figure 3.

After the robot is aligned with the insertion point, the links, L1 and L2, are used to place the

robot arm right over the insertion point. The angle between L1 and L2 needs to be either

enlarged or reduced to adjust to different distances at which the spine is located from the

revolute joint 0, and the way to do so is using the revolute joints 1 and 2. Based on small

discrepancies among the size and placement of each patient’s spine, the joints automatically

make the adjustments so that, ultimately, the revolute joint 3 will be located directly above the

spot for the needle to be inserted. Then, the needle, which is connected to a prismatic joint 4,

gets inserted vertically into the body and the spine and, after the operation is over, is taken out

perpendicularly again by controlling the movement of this prismatic joint. This is the basic

procedure that our robot follows to place its needle at a specific location on a patient’s body.

Figure 3: Top view of the spine needle robot setting

For our robot, the minimal required number of DOFs to complete an operation, as mentioned in

Part 1a, is 3. Joints 0 through 2 are the basic joints to meet this DOF requirement. However, our

proposed kinematics uses a total number of 5 DOFs, which are from four revolute joints and a

6

prismatic joint for the needle. There are a few factors to why the total number of degrees of

freedom increased from 3 to 5.

Some would think that, for the sole purpose of controlling the x, y and z coordinates of the

robot, the existence of the rail and Joints 3 and 4 are unnecessary and redundant. However,

these components are indispensible for our robot because of several reasons. First of all, the

presence of a rail can expand the workspace of our robot without requiring its arms to be too

long. With the rail, the robot arm would not need to become too horizontal, in which case the

torque would be much greater, in order to reach farther points. Also, the prismatic joint 4 is

necessary because the needle must be vertical. Without it, we cannot control both the position

and the orientation of the needle arbitrarily. The prismatic joint is also good for the robot

because, once it finds the (x, y) position for the needle to be inserted, the other joints can

remain stationary, increasing the stability of the robot (the needle will not change its orientation

due to the recalculation of the inverse kinematics). Therefore, we can control the inserting

process more precisely.

7

3. Kinematics of Robot

a. Write down a table of Denavit-Hartenberg (DH) parameters.

The following table summarizes the DH parameter results of our robot:

Link ai αi di φi

0 0 90° L0 φ1

1 L1 0 0 φ2

2 L2 0 0 φ3

3 L3 90° 0 φ4

Table 2: DH parameters of our robot

b. Compute direct and inverse kinematics of the robot.

Figure 4: x-y coordinates of Joints 1, 2 and 3

Direct Kinematics

As it can be seen from Figure 4, we have assigned each joint an x-y coordinate system. For

direct kinematics, we first find the transformation matrices between the links, which are

shown below:

8

0 0

0 0

01

0

cos 0 sin 0

sin 0 cos 0

0 1 0

0 0 0 1

TL

1 1 1 1

1 1 1 1

12

cos sin 0 cos

sin cos 0 sin

0 0 1 0

0 0 0 1

L

LT

2 2 2 2

2 2 2 2

23

cos sin 0 cos

sin cos 0 sin

0 0 1 0

0 0 0 1

L

LT

3 3 3 3

3 3 3 3

34

cos 0 sin cos

sin 0 cos cos

0 1 0 0

0 0 0 1

L

LT

Having found all of the transformation matrices, the complete matrix for the entire

transformation comes out to be:

1 2 3 0 0 1 2 3 0 0 1 1 2 1 2 3 1 2 3

1 2 3 0 0 1 2 31 2 3 0 0 0 1 1 2 1 2 3 1 2 3

04

1 2

cos( )cos sin sin( )cos cos ( cos cos( ) cos( ))

cos( ) cos( + + )cos( )sin cos sin ( cos cos( ) cos( ))

2 2

sin( +

L L L

L L LT

3 1 2 3 0 1 1 2 1 2 3 1 2 3) 0 cos( ) sin sin( ) sin( )

0 0 0 1

L L L L

Inverse Kinematics

It has been assumed that it is possible to find the exact coordinates of the needle

insertion point with respect to the origin set up on the operations table through various

methods. In other words, once Link 0 is fixed on the rail, we have information of the

exact coordinates of not only Link 0 but also where the needle has to be placed.

Figure 5: The spine needle robot system in the coordinate system view

9

For Link 0: = arctan(x/y)

For Links 1 & 2:

The inverse kinematics requires a few variables to be designated. Figure 6 below

visually displays what each variable represents in our system.

As for the calculation of inverse kinematics, we know the transformation matrix from

Link 1 to 3 is,

1 2 1 2 1 1 2 1 2

1 2 1 2 1 1 2 1 2

13

cos( ) sin( ) 0 cos cos( )

sin( ) cos( ) 0 sin sin( )

0 0 1 0

0 0 0 1

L L

L LT

1 1 2 1 2

1 1 2 1 2

cos cos( )

sin sin( )

L L r

L L z

where x2+y2=r2

So after solving these two equations, we get,

2 2 2 2

1 21

2 2

1

2 2 2 2 2 2 2 2

2 1 1 22

2 2 2 2

2 1

arctan arctan2

arctan arctan2 2

r z L L z

rL r z

r z L L r z L L

L r z L r z

Figure 6: Defining the variables of inverse kinematics

10

For Link 3:

We need to put the needle at a vertical (perpendicular) orientation, so

. Thus,

For Link 4:

The function of Link 4 is to put the needle into the body; therefore, we do not need to

solve it in the positioning process.

c. What is the workspace of this robot? Does it have a dexterous workspace?

Our robot has two types of workspace combined into one. For the first type, when Joint 0

moves along the rail without rotating, the workspace of the robot would be a cylinder.

When the rail stops and Joint 0 is fixed on the rail, however, the robot would have a

spherical workspace in which the robot is allowed to rotate due to Joint 0. These two cases

may take place simultaneously for our robot.

Our robot has a dexterous workspace, it is part of the central line of link 0 being symmetric

to the center of link 1. The half length of this line is L1+L2-L3. The needle can reach points on

this line from every direction.

Figure 7: Workspace of the rpbot

11

4. Design of Robot

a. Propose lengths and thicknesses of all links.

We assume that the distance the robot should cover safely to reach the spine area is about

70cm, having determined proper dimensions of the operations table to be 2m long and 1m

wide. As a side note, the arc or the semicircular area of the robot arm is ignored in our

project due to the presence of a rail with which we can have a close-to-perfect alignment of

Joint 1 and the needle insertion point.

Next, we chose L1 = L2 = 45cm and this value ensures two things: 1) the robot arm can cover

all regions of the operations table, and 2) the angle between the two links is not too large

for the torque to be over an allowable limit, which can lead to a possible failure or fracture

of the links.

For Link 0, we choose L0 to be 25cm. Compared to the other values, this length does not

take on too much of an importance because we have the prismatic joint (Joint 4), which

enables us to adjust the vertical position of the needle, if necessary. But in order to not

make the link reasonable, we finally chose 25cm as its length.

On top of lengths of links, we also looked at the possible cross-sections of them. After some

investigation, we decided that the cross sections of our links would be annulus, which

means that the links are basically hollow cylinders. With such a shape, the links would be

lighter in weight and able to endure and withstand more force. Considering their lengths,

we concluded that the outsider diameter of 10cm and the insider diameter of 7cm to be

safe estimates for the links.

Figure 8: Simple schematic of the links and their masses

12

b. Propose a material you want to use for the links.

We chose aluminum as the material of our robot. As mentioned above, the main goals of

the manufacturing of our robot is to build a light but strong product. Using aluminum would

result in a product that is not be too heavy to put much unnecessary pressure and force on

the operations table and the motors and also can provide a sufficient amount of strength to

avoid any fracture or breakdown.

c. Compute all dynamic equations (force propagation) for the robot.

Velocity Propagation:

1

1

0

0

,

2 21 1

2 1 2

0 0

0 0R

,

3 32 2

3 1 2 3

0 0

0 0R

So the velocity of each joint is:

1

0

0

0

v

,

2 1

2 21 1 1 12 1 1

0

( )

0

v R v t L

,

1 1 1

0 2

2 12 2 1 1 1

sin

cos

0

L

v R v L

1 1 2

3 2

3 32 2 2 23 2 1 2 2 1 1 2

sin

( ) cos

0

L

v R v t L L L

2 1 1 2 2 2 1 2 1 1 1

0 3

3 12 23 3 2 1 1 2 2 2 1 2 1 1 1

sin( ) sin( ) sin( )

cos( ) cos( ) cos( )

0

L L L

v R R v L L L

The velocities of Link 1 and 2 are,

13

1 1 1

0

2 1 1 1

sin

2

cos1

2 2

0

L

v Lvc

1 1 1 2

0 3

2 3 2 1 2 2 1 1 1 1 1 2

(sin sin )

2

cos cos2

2 2

0

L

v v L L L Lvc

With these velocities known, we could then obtain the kinetic energy and potential energy

using the following formulas:

Kinetic Energy:

0 0 0 0

1 2 2 2 3 3 1 2

1( ( ) ( ) ( 1) 1 ( 2) 2)

2

T T T TK m v v m v v g vc vc g vc vc

Potential Energy:

21 1 1 1 2 2 1 2 1 1 2 1 2 1 1

1( ) sin ( sin( ) sin ) ( sin( ) sin )2 2

LP G M L M L L G L

Since Lagrange Equation is known,

L K P

Torques for Motor 1 and 2 can be acquired using the following equations:

1

1 1

d L L

dx

,

2

2 2

d L L

dx

After we calculated and obtained all of the parameters, we then used Matlab to find the

values of the torque (a complete Matlab code can be found in the Appendix).

d. Estimate the requirements for motors. Find appropriate motors for this task.

14

Though our robot is a fairly small-sized one with only a handful of joints, the motors

attached to each joint would vary based on the torque required, weight of the links and

several other factors. Thus, according to their different situations and requirements, we

have researched and determined the most suitable motors for each of our robot’s joints.

Motor 0:

Motor 0 will not encounter too much torque and its weight is also not very important

because it is fixed on the rail. Thus, we selected 2642 012CXR.

Motors 1 & 2:

In order to specify which motors to use on Joints 1 and 2, we first look at their

parameters determined previously:

Link 1 Link 2

Length (m) 0.45 0.45

Outside Diameter (m) 0.10 0.10

Inside Diameter (m) 0.07 0.07

MaterialAluminum (density, ρ

= 2700 kg/m3)

Aluminum (density, ρ

= 2700 kg/m3)

Table 3: Parameters previously determined

Also, we calculated a few unknown parameters shown below:

Link 1 Link 2

Mass (kg) 1.549 1.549

Largest Angle (deg) 30 -60

Max Angular Velocity (rad/s) 0.1 0.1

Max Angular Acceleration (rad/s2) 0.2 0.2

Table 4: Calculated parameters

In addition to the calculated values above, another parameter needed to be determined:

torque of motors. However, since we had not specified which motors to use for each joint,

we decided to assume reasonable weight values for the motors such as 0.4 kg for Motor 2

and 0.3 kg for Motors 3 and 4. Having the knowledge of how heavy a typical motor to be

attached to a revolute or prismatic joint is, we chose a slightly higher value for Motor 2

because we believed that the possible torque that Joint 2 would experience is the greatest

out of all joints. Joint 2 connects L1 and L2 and, in case the angle between the two links

becomes large, there will be a great amount of torque applied to the joint. This is why we

have assigned a higher weight value to Motor 2, which will be attached to Joint 2.

15

With the assumed weights of motors, we can acquire the torques of Motors 1 & 2,

Torque1 = 21.22 Nm

Torque2 = 6.85 Nm

Since the moving speed of the robot is pretty slow, the stall torque and weight are the most

important factors in motor selection. We initially considered brushless DC motors; however,

we did not find any suitable ones that provide enough torque. So, we finally chose DC

motors from www.micromo.com.

Among more than 30 different DC motors on the website, we chose 3 candidates, whose

essential specifications are shown below, of our robot. The online links of these motors are

provided as well.

Motor Stall Torque (mNm) Weight (g)

3863 012C 1200 400

3272 012CR 1192 312

3257 048CR 547 242

Table 5: Specifications of motors considered for Joints 1 and 2

3863 012C: http://www.micromo.com/Micromo/DCMicroMotors/3863_C_DFF.pdf

3863 012CR: http://www.micromo.com/Micromo/DCMicroMotors/3272_cr_dff.pdf

3257 048CR: http://www.micromo.com/Micromo/DCMicroMotors/3257_CR_DFF.pdf

Actually, all of them have met the torque requirements with suitable gearhead. However,

3272 012CR motor has the largest torque/weight ratio, which is an important criterion for

our application. Therefore, after much consideration, we have chosen this particular motor

to be used for our robot.

Along with this motor, we chose 38A as the gearhead in order to increase the total torque.

For Motor 1, we use 3 gear stages and the reduction ratio of 36:1 while, for Motor 2, we use

2 gear stages and the reduction ratio of 12:1. Therefore, they can both provide enough stall

torque without exceeding the assumed weight above.

Motor 3:

The torque of Motor 3 can be smaller than others so 2657 012CR motor and 26A

gearhead will be sufficient.

Motor Stall Torque (mNm) Weight (g)

2657 012CR 278 156

Table 6: Specifications of the motor considered for Joint 3

16

2657 012CR: http://www.micromo.com/Micromo/DCMicroMotors/2657_CR_DFF.pdf

Motor 4:

Motor 4 is a linear motor and its peak force should be at least 10N to effectively insert

the needle into the spine according to the project requirements. It also must be quite

light in weight not to put too much force and weight on the joint to which the needle is

attached. A further research has shown us that LM 1247 060 01 motor meets the criteria

very well. The specifications and the online link of the motor is shown below:

Motor Peak Force (N) Weight (g)

LM 1247 060 01 10.7 67

Table 7: Specifications of the motor considered for Joint 4

LM 1247 060 01: http://www.micromo.com/Micromo/DCMicroMotors/2657_CR_DFF.pdf

e. What kind of sensors would you add to your robot? Where? Why?

The two most important factor we need to control are the position and the inserting force

and speed. The linear motor controller can tell us the inserting force and speed, so we do

not need some other sensors. And the X-ray device can be our sensor to some extend

because our need to get feedback from it to know what the precise position of the needle is

in real time to avoid dangerous circumstance cause by the control error or some other

reasons.

17

5. Appendix

a. Matlab code

function [ output_args ] = SpineNeedle( input_args )

syms th0 th1 th2 th3; syms d1 d2 d3; syms a1 a2 a3; syms L0 L1 L2 L3 D1 D2; syms m1 m2 g1 g2; syms M1 M2 G1 G2;

%Transformation Matrix T01=[cos(th0) 0 sin(th0) 0; sin(th0) 0 -cos(th0) 0; 0 1 0 L0; 0 0 0

1] T12=[cos(th1) -sin(th1) 0 L1*cos(th1); sin(th1) cos(th1) 0

L1*sin(th1); 0 0 1 0; 0 0 0 1] T23=[cos(th2) -sin(th2) 0 L2*cos(th2); sin(th2) cos(th2) 0

L2*sin(th2); 0 0 1 0; 0 0 0 1] T34=[cos(th3) 0 sin(th3) L3*cos(th3); sin(th3) 0 -cos(th3)

L3*sin(th3); 0 1 0 0; 0 0 0 1]

T21=inv(T12); T32=inv(T23);

R12=[cos(th1) -sin(th1) 0; sin(th1) cos(th1) 0; 0 0 1]; R23=[cos(th2) -sin(th2) 0; sin(th2) cos(th2) 0; 0 0 1]; t12=[L1*cos(th1);L1*sin(th1);0]; t23=[L2*cos(th2);L2*sin(th2);0];

R21=inv(R12); R32=inv(R23);

%Direct Kinematics: T13*[position in frame 3]=[position in frame 1] T13=(T12*T23) T04=simplify(T01*T12*T23*T34)

T31=(T32*T21); T13*[-L2/2;0;0;1]; T12*[0;0;0;1];

%Velocity Propagation w1=[0;0;d1]; w2=R21*w1+[0;0;d2]; w3=R32*w2+[0;0;d3];

v1=[0;0;0]; v2=simplify(R21*(v1+cross(w1,t12))) v3=(R32*(v2+cross(w2,t23))); %in their own frame

v2x=(R12*v2);

18

v3x=(R12*R23*v3); vc1=(1/2*v2x); vc2=simplify(1/2*(v2x+v3));

%Dynamics

K=1/2*(m1*transpose(v2x)*v2x+m2*transpose(v3x)*v3x+g1*transpose(vc1)

*vc1+g2*transpose(vc2)*vc2); P=(0.5*G1+M1)*L1*sin(th1)+M2*(L2*sin(th1 + th2) +

L1*sin(th1))+G2*( (L2*sin(th1 + th2))/2 + L1*sin(th1)); L=K-P;

%Motor 1 A=simplify(diff(L,d1)); B=simplify(diff(L,th1));

Torque1=(diff(A,d1)*a1+diff(A,d2)*a2+diff(A,th1)*d1+diff(A,th2)*d2)-

simplify(diff(L,th1));

%Motor 2 E=simplify(diff(L,d2)); F=simplify(diff(L,th2));

Torque2=(diff(E,d1)*a1+diff(E,d2)*a2+diff(E,th1)*d1+diff(E,th2)*d2)-

simplify(diff(L,th2));

L1=0.45; L2=0.45; D1=0.1; D2=0.07; p=2700; m1=(D1^2-D2^2)/4*p*L1; m2=(D1^2-D2^2)/4*p*L1; g1=0.4; g2=0.6; M1=m1*9.8; M2=m2*9.8; G1=g1*9.8; G2=g1*9.8;

th1=30/180*pi; th2=-60/180*pi; d1=0.1; d2=0.1; a1=0.2; a2=0.2;

subs(Torque1) subs(Torque2)

end