English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
All categories

3D Transformations. The Rainbow Graphics Group has available a simple robot
arm. This robot arm has, for the purposes of this question, the following
characteristics:
• Two joints, a shoulder joint and an elbow joint. The shoulder joint is connected
by a 2-unit length upper arm to the elbow joint, which in turn is connected by a
single unit lower arm to the hand.

• The joints can only rotate in the xy-plane.
• The shoulder joint is attached to a z-axis vertical slider, which can raise or lower
the entire robot arm, but is not able to translate it in the xy-plane.
• The initial position of the arm is:
shoulder joint: position (0,0,0), rotation 0°
elbow joint: position (2,0,0), rotation 0°
hand: position (3,0,0)
There is a soft drink can located at position (1,1,1). The robot hand must touch this
can. Specify the transformation matrices of the joints needed to achieve this.

2007-04-10 16:32:53 · 2 answers · asked by LOST MAN 1 in Science & Mathematics Mathematics

hi phred, actually i self-studyed Transformation subject, and all i know is just the 4 x4 matrix of translation and rotation, so pleeeeease explain as much as you can how i can solve that with z-plane (i am wondering where is that plane you ??? how you can solve only in 2D ????).

i really appreciate your help. I am Impatiently waiting for your replay

2007-04-11 17:28:09 · update #1

2 answers

Obviously, the shoulder joint needs to translate up 1 unit. Let's leave that for last and consider the tough problem in two dimensions. The hand needs to end up at (1, 1). Where does the elbow need to be? Obviously, there will be 2 potential solutions, but we'll arbitrarily pick the one requiring less rotation.

Call the final location of the elbow (x, y). Potential locations of (x, y) are given by the intersections of the two circles
x² + y² = 4 (all possible locations of the elbow are 2 units from the shoulder) and
(x - 1)² + (y - 1)² = 1 (the locations we're interested in are 1 unit from the soda)

Solving this system and choosing the interesting point (I leave out my work here, but it's not too hard. If you substract one equation from the other, you can get a linear equation in x and y. Then you can solve the first equation for y and substitute.):
(x, y) = ([5 + √7] / 4, [5 - √7] / 4)

The shoulder joint rotation θ, can therefore be found:
sin θ = y / 2
sin θ = [5 - √7] / 8
θ = sin⁻¹([5 - √7] / 8)
θ ≈ .2987

The elbow joint is a little more complicated, but if you draw a picture, you can see that it's twice the bottom angle in the triangle given by (1, 1), (x, 1), and (x, y). Therefore,
cos (½α) = (1 - y) / 1
cos (½α) = [√7 - 1] / 4
α = 2cos⁻¹([√7 - 1] / 4)
α ≈ 2.2935

Now to build up the transformation matrices, we just remember that we still have a z-translation of 1 to attend to for the shoulder joint. I don't have any good way to write out matrices here, but this should be the easy part. If it's not, add detail to your question and I'll give more help.

The reason this can basically be solved in two dimensions is that the whole problem is moved up and down by the vertical shifter of the shoulder joint. Think about the arm lying on a table, so that it only moves on the surface. Then the table can be moved up and down, so the arm can be positioned at any given height. If you restrain your thinking to the surface of the table, and then ensure at the end that the table's been put at the right height, you can consider the problem in 2 dimensions. Another way to think of it is that the problem is still in 3d, but all the z-coordinates are 1, so you've confined yourself to the plane z = 1.

Therefore, the matrix for the elbow is just a rotation of α in the xy-plane (a fancy way of saying parallel with the ground), and the matrix for the shoulder is a rotation of θ in the xy-plane, concatenated with a translation of (0, 0, 1). Do you need me to try to write out the matrices themselves, or does this make enough sense?

BTW, I'm assuming here that what you're looking for is the transformation matrices for the joints assuming they think they're at the origin. If not, you have to translate the elbow (-2, 0, 0) to get it to the origin, then rotate θ + α, then translate (2, 0, 1) to get it where it's going.

Here, by the way, is the wikipedia article on 3d tranformation matrices:
http://en.wikipedia.org/wiki/3D_projection
Look in the section, First Step: World Transform, and bear in mind that they call xy-plane rotation "rotation about the z-axis".

2007-04-11 08:02:08 · answer #1 · answered by Phred 3 · 0 0

Phred has the right approach. Since the robot elbow and hand have to be at the same z coordinate as the shoulder, this makes it effectively a two dimensional problem. Place the shoulder at z = 1 because the soft drink is at z = 1 and then solve the remaining two dimensional problem.

Use the slider to place the shoulder at (0,0,1). The remaining problem is 2 dimensional and we can hereafter ignore z. Now we can place the elbow anywhere on a circle of radius 2 centered on the origin.

x² + y² = 4

The elbow can be anywhere on a circle of radius 1 from the soft drink at (1,1).

(x - 1)² + (y - 1)² = 1
x² - 2x + 1 + y² - 2y + 1 = 1
x² - 2x + y² - 2y = -1

Now we have two equations for the location for the elbow. Subtract the second equation from the first.

2x + 2y = 5
y = -x + 5/2

Now substitute into the first equation.

x² + y² = 4

x² + (-x + 5/2)² = 4

x² + x² - 5x + 25/4 - 4 = 0

2x² - 5x + 9/4 = 0

8x² - 20x + 9 = 0

x = { 20 ± √[(-20)² - 4*8*9] } / (2*8)

x = { 20 ± √(400 - 288) } / 16 = { 20 ± √112 } / 16

x = (20 ± 4√7) / 16 = (5 ± √7) / 4

y = -x + 5/2 = (-5 ± √7) / 4 + 5/2 = (5 ± √7) / 4

So the two possible points for the location of the elbow are:

(x,y) = [(5 + √7) / 4, (5 - √7) / 4] or [(5 - √7) / 4, (5 + √7) / 4]

In three dimensions:

The location of the shoulder is (0,0,1).

The two possible locations of the elbow are:

(x,y,z) = [(5+√7) / 4, (5-√7) / 4, 1] or [(5-√7) / 4, (5+√7) / 4, 1]
_____________________

Convert the location of the elbow to cylindrical coordinates
(r,θ,z).

z = z = 1

r = √(x² + y²) = √[((5+√7) / 4)² + ((5-√7) / 4)²]

r = √[(25 + 10√7 + 7) / 16 + (25 - 10√7 + 7) / 16] = √(64/16)

r = √4 = 2
as well it should.

y = rsinθ
sinθ = r/x

θ = arcsin(y/r) = arcsin([(5 - √7)/4 / 2] = arcsin[(5 - √7) / 8]
θ = 17.114433° = 0.2987032 radians
or
θ = arcsin(y/r) = arcsin([(5 + √7)/4 / 2] = arcsin[(5 + √7) / 8]
θ = 72.885567° = 1.2720931 radians

The two possible locations of the elbow are:

(r,θ,z) = (2, arcsin([(5 - √7) / 8], 1] ≈ (2, 0.2987032, 1]
or
(r,θ,z) = (2, arcsin([(5 + √7) / 8], 1] ≈ (2, 1.2720931, 1]
_________________

The remaining parameter to calculate is the angle of bend β at the elbow. A moment's consideration will show you that it will be the same at either possible location.

Let's choose
(r,θ,z) = (2, arcsin([(5 - √7) / 8], 1] ≈ (2, 0.2987032, 1]

The angle α (hand, shoulder, elbow) = π/4 - θ

α ≈ 0.4866949 radians

The angle β (shoulder, elbow, hand).

By the Law of Sines

1 / sinα = √2 / sinβ

sinβ = √2(sinα)

β = arcsin[√2(sinα)] ≈ 0.7227342 radians

2007-04-14 17:50:54 · answer #2 · answered by Northstar 7 · 0 0

fedest.com, questions and answers