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

Normal

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.