USER MANUAL

|
|
ROSIE RObotics SImulation Environment |
Index
of contents:
![]()
1.
Introduction to ROSIE.................................... 4
1.1.
Using the Menu Bar
1.2.
Moving around the
Environment
SERIAL
MANIPULATORS
2.
Defining Forward Kinematics.......................... 8
2.1.
Adding, Editing and Removing Joints
2.2.
Viewing the Transformation Matrix
2.3.
Using
3D Models
3.
Defining
Inverse Kinematics.......................... 12
4.
The Jacobian Matrix...................................... 14
GOUGH
STEWART PLATFORM
5.
Platform
Configuration................................... 17
6.
Forward Kinematics
Solver............................ 18
SHARED TOOLS
7.
Using the Robot
Controller............................ 21
8.
Path Planning................................................ 23
8.1.
Adding, Editing and Removing Waypoints
8.2.
Adding,
Editing and Removing Path Sections
9.
Animation...................................................... 28
10. Options........................................................ 29
10.1.
Forward Kinematics
10.2.
Robot Controller
10.3.
Jacobian Matrix
10.4.
Path Planning
10.5.
Environment

1.
Introduction to
ROSIE
ROSIE is a Robotics Simulation
Environment targeted at students. The intention of the software is to provide
the student with the tools required to practice and understand the subjects
learned in different Robotics courses.
Using this software, a student can
build different Robotic Arms by adding Joints and configuring their
Denavit-Hartenberg parameters. ROSIE enables the user to insert Inverse
Kinematics equations for the Robot and verify that the solutions are correct.
ROSIE’s environment includes a Robotic Controller that emulates the
Teach-Pendants found in industrial robots. The user can then manipulate the
robot as if it was the real deal. The possibility of adding 3D models for each
joint enables the user to virtually work with any robot, without requiring a
big budget.
With a fully configured Robot, ROSIE
can build the Robot’s Jacobian Matrix and display for the user the vectors that
compose the Matrix. To further understand the Robot’s Jacobian, ROSIE can be
used to calculate its determinant and find singular points in the Robot’s
Workspace, which can later be displayed.
With its newest extension, ROSIE can
now simulate a general Gough-Stewart Platform. The Platform configuration is
defined by the user by modifying the attachment points of the prismatic joints
to the base and mobile platform. ROSIE uses an iterative algorithm to solve the
Platform’s forward kinematics in “real-time” and Polynomial Homotopy
Continuation to find all the solutions (see Section 6). The Platform can also
be controlled using the Robotic Controller.
ROSIE’s final feat is providing the
user with multiple Path Planning capabilities. Waypoints can be created
throughout the Robot’s Workspace and connected using Path Sections. Each path
section can be calculated in the Joints Space or XYZ Space. The user can select
from 3 different speed profiles for each section: Constant, Trapezoid or
Polynomial. This allows the user to gain experience on different Path Planning
methods and their pros and cons. After the Path has been calculated, it can be
animated using the Remote.
ROSIE’s user interface has been
designed to provide a quick, clean way to build, configure and work with a
robot, saving the user from drowning in the clutter of tools that most Robotics
Software provide. Even though ROSIE was designed with simplicity in mind, the
Environment can be greatly changed by tweaking the many fields in the Options
menu.
We believe ROSIE to be a great tool
for Robotics students worldwide.
ROSIE's homepage: http://robotics.technion.ac.il/
Current Version: ROSIE 1.5 – March 2nd,
2010
Acknowledgements:
·
ROSIE’s user interface uses the FLTK library: http://www.fltk.org
·
Images and Textures are loaded with SOIL – Simple OpenGL
Image Library: http://www.lonesock.net/soil.html
·
Symbolic calculations use the MTParser library:
http://www.codeproject.com/KB/recipes/MathieuMathParser.aspx
1.1. Using
the Menu Bar
At the top of ROSIE's window, the
Menu Bar can be found. It contains the usual functions found in any
Environment.
The 'File' menu is used to
Load, Save and create New files.
When creating a new robot, the New
Robot menu pops up, allowing the user to select between a new Serial
Manipulator and a new Gough-Stewart Platform:
Figure 1.1: New Robot menu
Serial Manipulators are saved as .rbt
files whereas Gough-Stewart platforms are saved as .gsp files.
The 'View' menu is used to
define the way in which Axes and Waypoints are displayed. Also, if the
Environment camera was moved and/or rotated, clicking 'Reset View' will return
to the original view. 3 additional default views are available: Front, Top and
Right. Note: Some of these options can be re-configured. For
more info go to the Options chapter.
Use the 'Tools' menu to get to
the Options menu, which is discussed in a different chapter.
Finally, the 'Help' menu
provides a link to this Guide and information about ROSIE.
1.2. Moving
around the Environment
The Simulation Environment works much
like any other 3D/CAD program. The Environment Camera can be moved around to
get a better look at the Robot. All the controls are explained in the following
Table:
|
Control |
Cursor |
Action |
|
|
|
Left
Click and move
mouse |
|
Move
Camera |
|
|
Middle
Click and move mouse |
|
Rotate
Camera |
|
|
Ctrl
+ Middle Click and move mouse (or
use scroll-wheel) |
|
Zoom
In/Out |

2.
Defining Forward
Kinematics
When the 'Forward
Kinematics' button is pressed, the window shown in figure 2.1 will pop-up. This window has three tabs:
'Modify', 'View Matrices' and 'VRML 3D Models'.
2.1. Adding,
Editing and Removing Joints
The 'Modify' tab is used to add or
remove joints, modify the Denavit-Hartenberg parameters of that joint, choose
the type of joint (prismatic, revolute or fixed), define the joint's range
(min/max) and change the joint position along the Z axis. Note: This last
parameter affects only the joint's appearance.

Figure 2.1: 'Modify' tab in the
'Forward Kinematics' button + Demo
To add or delete a
joint using the 'Forward Kinematics' window, just press
or
respectively.
A quick way to edit a specific Robot
Joint is by right-clicking on it. This will pop-up the
Joint menu that appears in figure 2.2. Use this menu to add a new joint before
or after the selected joint, change the selected joint's properties or delete
the joint.
Figure 2.2: Menu popped by right
clicking on a Joint
2.2. Viewing
the Transformation Matrix
The 'View Matrices' tab gives the
possibility to see the expressions for the Denavit-Hartenberg Transformation Matrix
of the selected joint. The complete expression for each element of the matrix
will be shown by clicking on that element's rectangle.
The parameters can be specified to be
displayed numerically instead of symbolically (e.g. in figure 2.3, α is
selected and the matrix expressions are updated to show α's value, α
= 0). Note that more than one parameter can be chosen.

Figure 2.3: 'View Matrices' tab
in the 'Forward Kinematics' button
2.3.
Using 3D Models
In the 'VRML 3D Models' tab a 3D
model can be chosen for each joint of the robot. The model can then be
translated or rotated along the X-Y-Z axes as well as scaled to make it fit.
This feature provides a richer robot simulation which looks closer to reality.

Figure 2.4: 'VRML 3D Models' tab
in the 'Forward Kinematics' button + Demo
3.
Defining
Inverse Kinematics
After calculating the Inverse
Kinematics equations for the Robot, the equation for each Joint value (Theta
for revolute and d for prismatic) can be inserted using the 'Inverse
Kinematics' window.
Equations can be written using all
the usual trigonometric functions (sin, cos, tan, asin, acos, atan and atan2).
Note: All the trigonometric functions work with degrees. If the equation is too
long, adding a "space" between term will
cause the text to wrap and create a new line. Using "enter" will
cause trouble.
The parameters that can be used in
each equation are:
·
The DH parameters for each of the Robot's joints
·
The tool's position in world coordinates: X, Y and Z
·
The tool's orientation in world coordinates:
o Yaw: Rotation
around Z
o Pitch: Rotation
around Y' (after applying yaw)
o Roll: Rotation
around X'' (after applying yaw and pitch)
Note: The tool's parameters used must
be defined using the 'Parameters used:' buttons. If one of these parameters
isn't defined but is used in the equation, an error message will appear.
Example: For a prismatic joint, the
equation calculated should be:
d=f(x,y,z,yaw,pitch,roll)
After selecting the proper joint and
the used parameters (x, y, z, yaw, pitch and/or roll), the equation to be
inserted is:
f(x,y,z,yaw,pitch,roll)
The 'Solving Order' option is used to
determine the order in which the equations are evaluated. This is useful when
an equation depends on values other than the end-effector's position and
orientation, e.g.: in a planar robot with 3 revolute joints the value for the
third joint, which provides orientation, should be calculated last (Solving
Order: 3). This is because Theta3 depends on the
values of Theta1 and Theta2.

Figure 3.1: 'Inverse Kinematics'
window
In Figure 3.1 the equation for Theta1
is shown (Joint 1 is selected and of Revolute type), its solving order is 1,
and it depends on the variables x and y.

4.
The Jacobian Matrix
When the 'Jacobian' icon is clicked,
the 'Jacobian Matrix' window will pop up (shown in figure 4.1). Using this
menu, the Robot's Jacobian Matrix can be calculated. This is done symbolically,
which means that the same matrix can be later evaluated for different values of
the Robot Joints. To generate the Matrix, press the 'CALCULATE' button.
|
Figure 4.1: 'Jacobian Matrix'
window |
Figure 4.2: Joint 2's Z and P
vector |
The Robot's Jacobian Matrix is
actually composed by 2 parts: The Angular Jacobian and the Linear Jacobian.
This means the Jacobian matrix will be 6xn, where n represents the Robot's
Degrees Of Freedom (DOF). Each column is built as follows:
|
|
Revolute
Joints |
Prismatic
Joints |
|
|
|
Where
is the Joint Axis of
and
is the vector that connects between
and the Robot's Tool,
as seen in Figure 4.3:
Figure 4.3: Robot's Z and P
vectors
The calculated Jacobian Matrix can be
copied into MATLAB from the Output Window that pops-up when all calculations
are finished (shown in figure 4.4).
Figure 4.4: Jacobian Matrix
output for MATLAB
After the Jacobian Matrix is
calculated, the vectors that compose it can be shown, e.g.: In figure 4.2, the
Z and P vectors translate the speed applied to Joint 2 into the Tool's speed.
The vectors can be shown for a specific Joint or for all Joints together.
To calculate the Robot's
Singularities (Joint values where the Jacobian Matrix becomes singular), just
press the 'FIND SINGULARITIES' button. ROSIE will start by calculating a
symbolic expression for the Jacobian Matrix's determinant. Secondly, the
generated expression will be evaluated for all the possible values of the Robot
Joints. Finally, the values where the determinant is closer to '0' will be
saved as the Robot's Singularities (Note: the whole process might take a while
in slower computers). The Singularities can be displayed by clicking the 'SHOW
SINGULARITIES' button, as seen in figure 4.3.

Figure 4.5: The Jacobian’s
singularities

5.
Platform
Configuration
The Parallel Manipulator simulated in
ROSIE is a general Gough-Stewart Platform. It consists of a Stationary Base, a
Mobile Platform and a set of six prismatic joints that connect between them.
The 'Platform Configuration' menu
displays the current coordinates of the attachment points of the prismatic
joints. The upper and lower sets of coordinates define the position of the
joints on the stationary base and mobile platform, respectively, each relative
to its own frame of coordinates.
For example:

Figure 5.1: Configuration of a
6-3 Platform

6.
Forward Kinematics
Solver
The Forward Kinematics equations for
the platform can be solved to find all possible solutions using the 'Forward
Kinematics Solver'. Click the 'Forward Kinematics' button on the dock menu to
open the window seen in figure 6.1. The target length for all joints can be
defined before calling the solver.

Figure 6.1: 'Forward Kinematics
Solver' menu
The equations are solved using the
Polynomial Homotopy Continuation (PHC) method. The idea of this method is based
on the fact that small changes on the coefficients of the polynomial system
will result in small changes to the roots. Starting at roots of a "start
system", the homotopy method traces the solution along the so-called
"homotopy paths", as the start system is continuously transformed
into the target system. The PHC method can find all solutions and is globally
convergent without an initial guess of the solutions.
To solve a system of equations F(x)=0, the PHC method uses an auxiliary system, called the
homotopy, i.e., a family of systems connecting the "start" and "target"
systems:
![]()
G(X) is the start system, has the same
number of solutions as the target system and its solutions are known. Numerical
continuation methods trace the paths that originate at the solutions of the
start system towards the solutions of the target system:
Figure
6.2: Homotopy Continuation, solutions tracking
The system of equations is solved
using an external program called PHCPack: a general-purpose solver for
polynomial systems by homotopy continuation. Webpage: http://www.math.uic.edu/~jan/PHCpack/phcpack.html
Note: The solver might take over 1
minute to find all solutions, please allow it to continue until the command
window closes.
ROSIE will automatically discard
solutions that are imaginary and keep only the real solutions of the Forward
Kinematics equations. The real solutions that the Platform can’t reach (because
of constraints on the passive joints) are also discarded. To avoid this, uncheck
the checkbox on the window (Cf. figure 6.1).
Once all the solutions are obtained,
they can be visualized using the 'Next' and 'Prev' buttons. Also, the Tool’s
position and orientation are displayed on the solver’s window.


7.
Using the Robot
Controller
The 'Controller' is used to control
the robot manually, and the 'Controller' window is showed in figure 7.1. The
Robot Controller emulates a Teach Pendant, the handheld device used to move and
program robots.
|
The Robot Controller can move the
robot in the Joint Space, X-Y-Z Space or Tool Space, just like it would be
done with a real Robot Controller. This is done by clicking on any of the
three buttons labeled 'Joints', 'XYZ' and 'Tool'. After selecting one of those 3
options, the 'Select +' and 'Select –' buttons are used to toggle between the
space elements: ·
Joints: Joint 1, Joint 2, Joint 3,
... ·
XYZ: X World, Y World, Z World ·
Tool: X Tool, Y Tool, Z Tool The '+' and '-' buttons are used to change the value
of the joint or move in the direction selected. |
Figure 7.1: 'Controller'
window |
Note: The Robot Joints can also be
controlled using the keyboard arrows.
The 'Show Values' button can be
clicked to show the values of the current Tool position and orientation,
together with the Joints' values, as seen in figure 7.2. When the 'Show Path'
button is selected, the path the tool has traversed will be shown, and the
'Clear Path' button will delete it.

Figure 7.2: Pop-up box
containing the Tool position+orientation and Joint values
The 'Save Point' button will save the
point the tool is in that moment (it creates a Waypoint that can be used later
for Path Planning).
Note 1: The XYZ and Tool spaces for a
Serial Manipulator require the inverse kinematics to be already defined.
Note 2: The Joints space for a Gough
Stewart Platform works by solving the forward kinematics in real time. This is
achieved with a numerical iterative algorithm that uses the current joint
lengths as an initial guess.

8.
Path Planning
The Path Planning menu can be used to
create, edit and delete Waypoints and Path Sections. All the Waypoints and Path
Sections are displayed in 2 detailed lists, as seen in figure 8.1. This
provides a quick overview of the Path Planned. The different ways to add, edit and delete waypoints and path sections are
explained in the next 2 sections.

Figure 8.1: 'Path Planning'
window
Once the Path has been configured as
desired, it can be calculated by clicking the 'Calculate Path' button. When all
the calculations are done, the Path can be animated by clicking 'Animate'. This
will open the 'Remote' window.
8.1. Adding,
Editing and Removing Waypoints
There are 2 ways of adding Waypoints.
The first way is to use the 'Robot Controller' to bring the Robot Tool to the
desired position and orientation, then press the 'SAVE
POINT' button. This will create a new Waypoint, as seen in figure 8.2.
Figure 8.2: Waypoint 5 created
using the 'SAVE POINT' button
The second way is by clicking on
inside the 'Path Planning' window. This will pop-up the 'New Point' window, as seen in figure 8.3.
Figure 8.3: New waypoint created
from 'Path Planning' window
Right clicking on any waypoint inside
the 'Path Planning' window pops-up a menu for editing or deleting the waypoint
(Cf. figure 8.4). Choosing 'Edit Point X' brings up a window like the one shown
in figure 8.3, which contains all the point's data.
Figure
8.4: Edit/Delete Waypoints from the 'Path Planning' window
Right clicking directly over any
waypoint inside the Environment will pop-up the same menu for editing or
deleting the point:

Figure
8.5: Edit/Delete Waypoints directly from the Environment
8.2. Adding,
Editing and Removing Path Sections
To add a new path section, click on
inside the 'Path Planning' window. This will pop-up a window to create a new path section.

Figure
8.6: New Path Section created from 'Path Planning' window
Two different Methods can be used to
calculate each Section of the Path Planned. When the JOINTS method is used, the
Section's Path is calculated using the Joint's Space. The Inverse Kinematics is
calculated twice: once for the starting point and once for the end of the
Section. The path is then calculated by interpolation between those values,
which results in a "straight line" in the Joint's Space. On the other
hand, when the XYZ method is used, the path is calculated by direct
interpolation between the start and end of the Section. Then, the Inverse
Kinematics is calculated for each point in the path, providing the required
Joint values along the path. The XYZ path is a straight line in the XYZ space.
The Speed Profile along the path can
either be Constant, Trapezoid or Polynomial, as detailed in the following
table:
|
Profile |
Minimal |
|
|
CONSTANT |
|
|
|
TRAPEZOID |
|
|
|
POLYNOMIAL First half formula: |
|
|
Right clicking on any Path Section
inside the 'Path Planning' window pops-up a menu for editing or deleting the Path
Section. Choosing 'Edit Section X' brings up a window like the one shown in
figure 8.6, which contains all the section’s data.
Figure
8.7: Edit/Delete Path Sections from the 'Path Planning'
window

9.
Animation
The 'Remote' window is used to
animate the Path calculated using the 'Path Planning' window and it emulates a
normal 'Video Remote'. Each button is explained in the following Table:

Figure 9.1: The 'Remote' window
|
Button |
Function |
|
|
Run
through the whole Path with normal speed |
|
|
Pause
the animation |
|
|
Increase
playback speed (forwards) |
|
|
Increase
playback speed (backwards) |
|
|
Go to
Path start |
|
|
Go to
Path end |
|
|
Loop
through the animation |
10.
Options
The 'Options' Menu (figure 10.1) is
used to customize the Simulation Environment. It's been divided into 5
categories: Forward Kinematics, Robot Controller, Jacobian Matrix, Path
Planning and Environment. Each category is explained in detail in the following
sections. Note: The Options Menu can be accessed from the Menu Bar, as seen in
figure 10.2.
Figure
10.1: The Options Menu
Figure 10.2: Accessing the
Options Menu
10.1.
Forward Kinematics
The fields in 'Default Base Joint'
represent the values that will be given to a new Joint created at the Robot's
base (Joint 1). The fields in 'Default Regular Joint' represent the values that
will be given to any new Joint created after the first joint.
The fields in 'Model Limits' affect
the sliders on the '3D Models' tab inside 'Forward Kinematics'. They represent
the range (Min. and Max. values) of each slider and its resolution (the size of
the step between 2 consecutive values).
10.2.
Robot Controller
The fields in 'JOINTS Step' (or in
'XYZ/TOOL Step') affect the size of the step that each joint (or the robot tool)
will take whenever the '+' or '-' buttons are pressed. These values are for the
smallest step, the biggest step and how much the step increases while the
buttons stay pressed.
10.3.
Jacobian Matrix
The fields in 'Singularities' affect
the way in which the Jacobian singular points are calculated. Respectively,
each field represents:
·
Number of steps between the Joint Min. and Max. values,
which affects the resolution of the calculated singularities
·
The algorithm runs through all Joint values starting
from this Joint. It's recommended to start from Joint 2, instead of 1, and
leave the following field checked
·
If this field is checked, the singularities calculated
will be rotated/translated along the previous Joint Z
axis. This helps shorten the algorithm runtime.
·
How many of the calculated Jacobian's determinant values
to keep. This value should be low (max. 10%) unless the intention is to see the
values of the Jacobian's determinant around the Robot's work envelope.
10.4.
Path Planning
The fields in 'PRISMATIC Joints' and
'REVOLUTE Joints' represent the maximum velocity and acceleration that a Joint
of that type can achieve. The Time Step field represents the time interval
between 2 points in the calculated path.
10.5.
Environment
The Environment and Robot fields in
'Scale' represent the size of the Environment and the Robot, respectively.
There are no units involved but there should be some relationship between the
values inserted here and the values for Joint speeds.
The fields in 'Default Camera
Configuration' define the default orientation and 'center' of the camera (also
the values applied when 'Reset View' is clicked).
The fields in 'Camera Distance'
define the default distance of the Camera from its 'center' (also applied when
'Reset View' is clicked) and the Min (Closest) and Max (Farthest) distance
allowed when Zooming.
Finally, the fields in 'Display'
represent the default display states for Axes and Waypoints. These are the
initial values whenever ROSIE is loaded and independent from what display
states where selected previously from 'View' on the Menu Bar.