Introduction

     Since OSCAR has become an integral part of system level research in the Robotics Research Group, most students should be familiar with its organization as well as how to develop applications and expand its functionality.  The first section of this brief guide is a set of policies that ensure OSCAR is in working condition with a minimal amount of formality and intrusion.  The second section contains a set of examples that introduce OSCAR and the environments in which it is demonstrated.  The third section contains a list of OSCAR references and their locations.

Training Exercises

Although a working knowledge of C++ and a fundamental knowledge of the operation of robots are ideal,  these exercises can also be used as a vehicle to learn C++ and gain a better understanding of manipulator control.  Any data file referred to in these experiments is located in the appendix of this document.  RoboWorks files are located in the Samples directory of the application.

These 10 exercises cover a large portion of OSCAR’s functionality and the use of applications necessary to demonstrate it.  They do cover all the necessary components to simulate a manipulator.  For example, the Information Class that maintains criteria for Multi-Criteria Redundancy Resolution is skipped as well as the real-time interface classes.  Also much of the functionality used when developing robust, demonstration-ready applications is also ignored in order to spend more time on the fundamental components of OSCAR.

Lesson 1-  Introduction to Vector, Matrix, and Tensor Support Classes

Write a program that creates two 2x2 matrices and multiplies them together.  Transpose the result and find the inverse of the matrix.  Create a matrix using the RRMatrixData Class from a data file (which you write).  Also create a tensor object, and populate its elements such that each element contains the product of its row, column, and layer.  Finally, create a vector and populate it with the row of a matrix taken from the tensor that was just created.

solution

Lesson 2 - Extending OSCAR Support Classes

 Write a class called RRVector4 that is derived from RRVector class.  Develop a few but important methods for use with RRVector4 including the necessary constructor, copy constructor, and destructor.  Use the proper header files and follow OSCAR guidelines.  Test your methods with a simple application.

solution

Lesson 3 - Transformations with OSCAR

 Create a transformation matrix (and demonstrate how to access the individual elements.  Create a transformation matrix for when a rotation matrix (RRRot3by3) is given as well as translation point (RRVector3).  Have the transformed frame be rotated around the z-axis by 30° and translated {10, 5, 2}.  Convert this transformation matrix into RRHandPoses for both ‘Fixed XYZ’ and ‘Euler ZYZ’ angles respectively.  Finally, given the transformation matrices for frames  T01 and T12, determine the pose of point 2 in the global frame.

solution

Lesson 4 - Introduction To RoboWorks

Use RoboWorks to create a rendition of 6 DOF Schilling Titan III.  This robot will be used in later experiments so be sure to use the DH parameters in the appendix.  Be sure to name each joint with an appropriate tag that can later be used for remote operation. (below data was found on the Schilling website)

 

Lesson 5 - Forward Kinematics

 Create a RRFKPosition object for the Schilling Titan III.  Compute the hand position based on a set of initial joint angles.  Change the tool point, and determine how this changes the hand position.  Access the local transformation matrices and global transformation matrices for each link and output them to a file.  Demonstrate the local transformation matrices may be used to generate the global transformations.

solution

Lesson 6 - Input, TCP/IP Communications and OSCAR Portability

Use the RRGeneralKeyboard to move the Titan III joints in RoboWorks with TCP/IP protocol of RoboTalk.  Output the hand pose to the console window at every command.

Now change your RRFKPosition object to use the DH parameters for the 7DOF Robotics Research Arm.  Determine what other portions of your program need to change in order to run the RoboWorks 7DOF Robotics Research Arm found in the Samples Directory of the RoboWorks application and make the necessary adjustments.

solution

Lesson 7 - Other OSCAR Forward Functionality

Create RRFKJacobian, RRFKVelocity and RRFKAcceleration objects for the RR’s 7 DOF Arm and demonstrate how to output the Jacobian, G-influence coefficients, and H function tensor array.  See Thomas & Tesar [1982] for details of these model components.

solution

Lesson 8 - Solving the Inverse Problem with OSCAR

 Create a program that calculates the inverse for Titan III.  Notice that there are different inverse objects within OSCAR for manipulators and classifications of manipulators (planar, 6DOF, redundant, Puma, etc.)  Add Control for the EEF Position and some error checking to ensure that manipulator will work for a reasonable amount of time, and demonstrate your application on the RoboWorks Model.

solution

Lesson 9 - Solving the Redundant Inverse Problem with OSCAR

 Write a program that calculates the inverse for the 7 DOF Robotics Research Arm.  You may resolve the redundancy in any of the ways that OSCAR allows you to (InfoBasedCriteria, RRIKJPartial, RRIKJAvoidLimits, RRIKGradProj, etc.)  Familiarize yourself with the differences between these inverses.  Add Control for the EEF Position and some error checking to ensure that manipulator will work for a reasonable amount of time, and demonstrate your application on the RoboWorks Model.

solution

Lesson 10 - Advanced OSCAR functionality

Expand the previous program in the following ways.

a)  Include the computation of the joint torques by using the Newton-Euler Dynamics.  Familiarize yourself with the functionality and differences between RRIDNewtonEuler and RRIDLagrange.

b) Implement Spaceball control for defining the hand position.

solution