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⤋