Robotic Manipulators
Robotic Manipulators
SPHERES is a project that is based around small satellites(8 inches in diameter) that use
CO2 thrusters and sensors to maneuver with other satellites. SPHERES are used to explore
acronym for Synchronized Position Hold, Engage, Reorient Experimental Satellites. These
satellites, aboard the International Space Station, provide a low risk experimental platform
to test out different algorithms and techniques that would otherwise be difficult/expensive
to test. On the ISS, these experiments can be carried out in microgravity in full six degrees of
freedom. These experiments are used to explore experimental space technologies and algo-
rithms, such as spacecraft flight formation and, in this case, robotic arms.
Having a robotic arm attached to satellites/spacecraft can be very useful, but can in-
troduce new problems. The application of these arms can range from helping astronauts
1
when the arm is moved, the entire satellite moves in response.
to our need to iterate rapidly. Currently, there is not a testbed for testing algorithms for space-
craft with robotic arms, and this project aimed to create one. For this project, a team of three
UROPs1 worked to develop and refine the robotic arm, develop the hardware and software
involved in communicating between the arm and SPHERES, and to develop simulations of
2 L ITERARY R ESEARCH
At the start of this project, we looked at what had been done before so that we could
build off of that and create a project that would contribute to the field of space robotics.
The information we compounded is located in the appendix of this report, which contains
a matrix of what has and has not been done as well as a list of academic papers pertaining
to the subject matter. The essence of what we learned from this was that there is quite a bit
of theoretical research done but little experimentation has occurred. With that, we figured
it would be best if we made an arm that it could move in 3D space and be able to simulate
the system (SPHERES, Halo and the Arm) dynamics. We also thought the final, end-all be-all
goal would include using Vertigo2 to track a moving object, then using the arm to grab it, and
finally using thrusters to bring to system to a stop. We never got to this though.
Our first step was to simulate the dynamics that would be experienced when the arm was
manipulated, and to be able to know what positions to put each joint of the arm in order to
2
3.1 I NVERSE K INEMATICS
Inverse Kinematics is used to determine how a structure moves and rotates to reach a
desired point. For the arm specifically, we needed to know how much to rotate each motor
to reach a desired location. In 2D, the most efficient way of doing this was with circles. With
a two-joint arm, all that is needed to do is draw one circle with a radius of the length of the
first arm segment centered at where the arm begins and draw another circle with a radius of
the length of the second arm segment centered at the desired location. Where these circles
intersect is the location that the second joint (beginning of the second arm segment) needs
The same method can be used for greater degrees of freedom(more arm segments). There
will be infinite solutions, however, as opposed to two, due to the nature of two dimensional
space. Figure 3.2, showing one possible solution, illustrates this concept. A limited amount
of circles are shown in the figure for simplicity, but in actuality there are an infinite amount
To implement the Circle Method in software, we used Matlab. To do this, we used fsolve,
a system of equations solver. The two equations were the two equations of the circles, which
held their radius and center point. The variables we solved for were x 1 and y 1 , the location of
the second joint. From there, we did simple trigonometry to solve for the angle the first arm
3
Figure 3.2: Circle Method for 3 DOF
made with respect to the x-axis and the angle the second arm made with respect to the first
segment. This can be expanded in two ways: 3D and more arm segments.
For more arm segments, we just need to have more circles, one for every segment. The
thinking here is that you the first segment draws out one circle. The start of the second seg-
ment has to be located some point on that circle, so it is assigned an arbitrary point (x 2 , y 2 )
on the first circle. Centered on that point, it draws out a circle with a radius of its length.
a point on the rim of the circle. The third segment has to begin somewhere on the second
circle, so it is given an arbitrary point (x 2 , y 2 ) and draws a circle centered at that position. It’s
centered at (x n−1 , y n−1 ) draws a circle of its own. We want the desired location to be on that
location. From there, you let fsolve do the rest of the work.
(x + y)3 = (x + y)2 (x + y)
= (x 2 + 2x y + y 2 )(x + y)
(3.1)
3 2 2 2 2 3
= (x + 2x y + x y ) + (x y + 2x y + y )
= x 3 + 3x 2 y + 3x y 2 + y 3
With 3D, it gets a bit more complicated. Currently the motors we are using only have
4
one degree of rotational freedom, which greatly limits them. If they had three degrees of
rotational freedom, it would be simple: we would use spheres instead of circles in the method
described above. But alas, life is not that easy. This is because in our design all of the arm
segments lie on the same plane, which would not be considered when using spheres. That
being so, we have not come up with an exact solution but we an idea on how to approach
In order to predict the dynamics of the system, we came up with a formula resulting
from Newton’s 2nd Law. This formula describes how a two-segment system will move given
the moments of inertia of both segments about the pivot point and at least one displacement
angle is known.
θ1 θ2
= (3.2)
I2 I1
Where I 1 and I 2 are the moments of inertia of each of the respective segments, and θ1
We created a graphical simulation in C++ using the SFML graphics library in order to vi-
sualize the method we came up with to predict arm dynamics. We created a class to represent
an arm-SPHERES system. This class in turn contained three "arm segment" class objects(one
for the SPHERE, two for each joint of the arm). It then became easy to manipulate the joints of
the arm and find out information of the system. Because of this, we were able to implement a
brute force search method to find the motor positions that would result in the arm reaching a
certain spot. This is independent of graphics, which allows us to run it on, for example, Halo.
Using SFML, we took this information and drew basic shapes to represent each of the arm
5
3.3 H EADING ON LEVEL 2 ( SUBSECTION )
A 11 A 21
A= (3.3)
A 21 A 22
Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis
dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque
Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tris-
tique, libero. Vivamus viverra fermentum felis. Donec nonummy pellentesque ante. Phasel-
lus adipiscing semper elit. Proin fermentum massa ac quam. Sed diam turpis, molestie vitae,
placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend at, accumsan
nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem.
Sed lacinia nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim.
Praesent euismod nunc eu purus. Donec bibendum quam in tellus. Nullam cursus pulvinar
lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum pellentesque felis eu massa.
H EADING ON LEVEL 4 ( PARAGRAPH ) Suspendisse vel felis. Ut lorem lorem, interdum eu, tin-
cidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent enim elit, rutrum
at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fermentum eu, so-
dales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede
lorem egestas dui, et convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam
dolor odio, commodo pretium, ultricies non, pharetra in, velit. Integer arcu est, nonummy
4 L ISTS
6
– First item in a list