# INTRODUCTION
Industrial robot systems as well as computer-aided design and manufacturing (CAD and CAM) are leading the industrial automation. [1]
The mechanical manipulator is the most important form of the industrial robot and the localization of objects in the three-dimensional space is one of the most important aspect of the mechanical manipulator. Links, parts, tools, other objects on the manipulator environment and the motion of these objects are the subjects of study of Kinematics, as well as all the geometrical and time-based properties of the motion, with no regards to the forces applied that causes it.
The two basic problems in the study of mechanical manipulation are forward and inverse kinematics, the first computes the position and orientation of the end-effector on the manipulator and the second calculates all possible sets of joint angles that could be used a given position and orientation.
Nowadays, CAD and CAM advanced software's are of easy access and used to design, simulate and calculate all that is necessary for modern robot design.
The main objective of this assessment is to design a robotic manipulator with a fixed platform and flat surface, that is able to be integrated with a robot gripper for picking an object vertical wall/shelf and placing it onto a horizontal surface.
To accomplish this objective a robot system is proposed after this introduction followed by the manipulator and other components design. The forward and inverse kinematics of the robot system are studied with manual calculations as well as computed calculations. A Model with correct dimensions and a simulation of the proposed robot are made using Solidworks and OpenModelica.
Finally, the results are discussed and the report is concluded.
# Robot System Initial Proposal
Aiming on the objective of designing a robot system, basically, capable of picking an object from a shelf and placing it onto a horizontal surface, the system proposed is a 4 (degrees of freedom, calculated using Grubler's formula) robot manipulator, consisting of a fixed base, a rotating base, two solid links and a toll, as shown in the Figure below.
Where,
= number of bodies, counting ground as one body.
= Number of joints.
= 6 for spatial bodies.
= degrees of freedom of each joint. \end{eqfloat} To control the joints four brushless AC motors are used. The motors have attached a magnetic absolute encoder and a integrated controller. At the end of the system there is a simple gripper making the robotic manipulator able to pickup an object and place it onto a horizontal surface.

# Manipulator Design
# Robot Arms
Link 1 and Link 2 constitute the "arms" of the manipulator, they are designed to maximize the joint angle reach for more flexibility. Also in the rotation base there are two cuts two maximize even further the arms reach as can be seen on Figure below. In this picture, with the Wireframe view with hidden lines visible, the fourth motor located inside the base can be seen, It is hidden on Figure below.

# Robot Gripper
A gripper capable to hold a 80 mm square object is connected to frame . In one of the gripper's claws there is a micro-motor to enable the gripper to hold. One of the claws of the gripper is attached to a threaded cylinder and then attached to a micro-motor, which will rotate the threaded cylinder and make the claw move. The Figure below shows the details of the gripper.

# Entire Model
Together with the Arms and the Gripper there is a fixed base and a rotational base. The Soliworks model shown on Figure \ref{Model} the electronics are discussed on the next topic.
# Other Components
The actuator chosen for the project is a complete system with sensors, controller and a motor. It can be used on several applications such as robots and drones, model aircrafts, conveyor belts, sorting and assembly lines, and packing equipment to name some.
# Motors
There are various types of motors and key factors need to be taken into account when selecting one for a particular application [3], in this case to control the joints of a robotic manipulator. The main factors are:
# Inertia matching
The robotic system have to be capable to achieve a required torque to give a load a moment of particular inertia and to achieve a desired angular acceleration. The moment of inertia was calculated using the Iterative Newton-Euler Dynamics Algorithm [7], and this is solved in two parts, first the links velocities and accelerations are iteratively computed across the links applying the Newton-Euler equations to each link, then the forces and torques of interaction and joint actuator torques are computed recursively from the last link to the first.
This calculation was made by simulating the system using a simulation software, OpenModelica. The values for of each joint during the time of the simulation, , are shown on the Figure below, and, as can be noted, the maximum torque required was . The simulation was made with the load attached to the system.

# Torque requirements
High torque means a mechanism is able to handle heavier loads. The motor used for the modelling is capable of and should be able to handle the with a margin.
# Power requirements
As well as the torque requirements this project don't require that the motors run at maximum velocity, therefore overheating will not be a problem, and this is one of the main aspects of power requirements for a motor. The total power required is the sum of the power needed to overcome friction and that needed to accelerate the load [4].
After analysing and taking into consideration the aspects discussed above the RDrive 85 motor with rated torque of and peak torque of and of Power was chosen to the task. [8] For the gripper a 20 mm diameter motor was used.

# Sensors
To know the angular position of the joints absolute encoders shall be the choice because they give the actual angular position, a unique identification of an angle. The incremental encoders would detect the changes but in relation to some Datum. [3]
So with the absolute encoders we can track , and and rearrange the links accordingly with the joints angles.
Also a loading cell can be used on the toll to sense the amount of pressure to set a trigger to avoid damage on the object.
# Controllers
The final printed size of an author photograph is exactly 1 inch wide by 1 1/4 inches long (6 picas~~7 1/2 picas). Please ensure that the author photographs you submit are proportioned similarly. If the author's photograph does not appear at the end of the paper, then please size it so that it is proportional to the standard size of 1 9/16 inches wide by 2 inches long (9 1/2 picas~~12 picas). JPEG files are only accepted for author photos.
# Control Methodology
IEEE accepts color graphics in the following formats: EPS, PS, TIFF, Word, PowerPoint, Excel, and PDF. The resolution of a RGB color TIFF file should be 400 dpi.
When sending color graphics, please supply a high quality hard copy or PDF proof of each image. If we cannot achieve a satisfactory color match using the electronic version of your files, we will have your hard copy scanned. Any of the files types you provide will be converted to RGB color EPS files.
# Forward Kinematic
To calculate the forward kinematics equation, a Python Class called "FowardKinematics" was created, this Class has two main methods involved on the calculations, the rotation and the translation for the and axis. The parameters for these methods are extracted from the Denavit–Hartenberg parameters at , the coordinate systems and also the basic frames , and , Base, Wrist and Tools respectively are identified on the Figure below. The size of the links are , , , .
The forward kinematics calculations were confirmed by a python programming code that can be found in the Appendix A.

The rotation method receives an argument and for the rotation on the axis and for . The argument is what makes this a method and not just a plain function, this is filled in automatically, when we call this method on the object. So we'll just provide one argument, and the fact that it's being called on the method will provide the first argument, self. It will then build a symbolic matrix and passes the argument to the method to be put in place, if no arguments are passed default values will be put in place as specified in the key word arguments (\** ) on the function. A Matrix is then returned after calling the function to evaluate.
Like in the rotation method the translation method receives a argument and to return a matrix that translates in and axis respectively. This class is also detailed in the Appendix A.
The objective of the forward kinematics is to provide a kinematics equation relating the end-effector orientation and position. This is done by finding the Denavit–Hartenberg parameters and the homogeneous transforms for each step from 0 to 5. These matrix are shown from (2) to (09). Finally, the forward kinematics equation is presented on Equation 9.
Finally, the forward kinematics equation is presented on Equation 8.
i | ||||
---|---|---|---|---|
1 | 0 | 0 | ||
2 | 0 | 0 | ||
3 | 0 | 0 | ||
4 | 0 | 0 | ||
5 | 0 | 0 | 0 |
Denavit–Hartenberg parameters (2)
# Inverse Kinematics
There are many methods to find the equations for the inverse kinematic here two methodologies are presented. First let's look at the trigonometric solution. For the trigonometric solution we can draw 2 triangles, on from frame to and the second one from frame to frame . This way we can study the relation between the angles.
If we assume we can calculate the angle relation between the triangles on Figure below as if they were on the same plane.

To find the hypotenuses of the triangles we have to find , and . This can be achieved by multiplying both sides of Equation 10 by the dependent transpose inverse , as shown below.
If we consider Equation 8:
and we multiply both sides by we have,
Which is the same as,
To find we can "go" to and "coming back" one step by computing the inverse . Then we have,
And for from the red triangle we can multiply and by . Then we have,
Computing , calculation made on Appendix A,
And ,
By using the law of cosines which states that, on a triangle , we have,
Applying to the blue triangle on the Figure below,
Therefore,
Applying the same to the red triangle and considering as from , we have,
Therefore,
For we have,
=
As a proof of the equations for the inverse kinematics a program in python was written using the a simple case where , and . The results were consistent and the program is exposed on Appendix A.
# System Simulation
OpenModelica is currently the most complete open-source Modelica and FMI based modelling, simulation, optimization, and model-based development environment. Its long-term development is supported by a non-profit organization – the Open Source Modelica Consortium (OSMC). [2]
This system was chosen, mainly, because of the open-source aspect, since Mathworks Simulink requires a paid plugin to connect the Solidworks model. Also due to the fact that Its a complete system for simulation modelling, versatile and capable of very complex tasks, much more complex than the current project.
For the modelling simulation parameters, information from the CAD simulator (SolidWorks) regarding to mass, center of mass and moments of inertia, were confronted with the Python simulation and was consistent as shown on the Figure below and at the Python programming documentation that can be found on Appendix A. More information about the model is also provided but not included necessary to the link properties at OpenModelica, like density, volume, surface area, among others. The parameters necessary for the model were the length, mass and center of mass, as well as the inertia tensors, as shown on the Figure below.


To simulate the manipulator the component was used for the joints, and was used for the links, base and tool, and also some auxiliary component blocks to simulate controllers, world conditions and a fixed base (ground). On the component for the joints the option , allow the control of the rotation and this option was used as shown on the parameters on the Figure below. A unit conversion block has to be used to convert from degrees to radians, there is a math block for that. With this control system the position can provide for by setting a value to the block. This will take the gain input and will provide it as a signal that the joint can use. This 6 blocks represent the first joint link of the system as represented on the Figure below.


The CAD modeling software chosen was SolidWorks from Dassault Systems, It is a solid modeling computer-aided design software with 2.3 million active users at over 234,800 companies in 80 countries. [5] SolidWorks goal is building 3D CAD software that was easy-to-use, affordable, and available on Windows. [6] The main reasons to use SolidWorks in this project were the easy of use, the calculations that can be used as OpenModelica parameters and the exporting features that allows easy integration between the two software.
An import aspect of exporting from Solidworks to OpenModelica is the compatibility, the exported file can be a file. Although the measurements have to be in meters. In the exporting window there is the option "Do not translate output data to positive space", this option makes exported parts maintain their original position in global space, relative to the origin [4].
There are many ways to export from one software to the other, on this project approach, at the export STL window, the coordinate system is been output, as can be seen in the import parameters for link 1 on the Figure below, by exporting the coordinate system placed on the frame position, also on the following Figure below, the vector from frame to the shape origin, resolved in is equal to 0, because the frame coordinate system exported is located at the origin.
We can use the center of mass directly from SoildWorks as well as use the exact distance between the frames at the parameter as shown on the next Figures.



The calculations for the moments of inertia were made in Python, refer to Appendix A, and confirmed in the mass evaluation at SolidWorks, also, in OpenModelica, as can be seen see on the Figure below the values for the torque for joint 1 and 2 using = .

Here the simulation modelling at OpenModelica is shown, the parameters used at the block results in an animation, that goes from all the angles been 0 to the values set.


# Solidworks simulation
A Solidworks simulation of the manipulator picking a box on a conveyor and placing it in another conveyor is shown below.
# Discussion and Conclusions
Robot manipulators are huge contributor for the robot revolution and will continue to push the industry ahead. The study of it's components and the interactions between them are very important to predict if the designed manipulator will be able to accomplish the task for what it is purposed. New tools for simulation of these robots are improving every day and with such tools, in this project, we were able to demonstrate the design of a robotic manipulator capable of picking objects as well as its forward and inverse kinematics equations. Further developments will include an interface to control the manipulator with real time calculations displayed with the aim of better understand the variables of such an interesting and important tool.
# Bibliography
- J. J. Craig, \emph{Introduction To Robotics: Mechanics And Control}, 3rd ed., Ed. New York: Pearson Education, 2009.
- P. Fritzson, et al. \emph{The OpenModelica Integrated Modeling, Simulation and Optimization Environment} (Conference paper), PROCEEDINGS OF THE 1ST AMERICAN MODELICA CONFERENCE$. $Cambridge, USA: Massechusetts, 2018.
- W. Bolton, \emph{Mechatronics - Electronic control systems in mechanical and electrical engineering}. United Kingdom: Pearson Education Limited, 2019.
- (SOLIDWORKS Online Help) Dassault Systems. (2020, May). Available: https://help.solidworks.com/.
- (The SOLIDWORKS blog) Dassault Systems. (2020, May). Available: https://blogs.solidworks.com/solidworksblog/2016/10/growing-solidworks-nation.html.
- (SolidWoks - Wikipedia)(2020, May). Available: https://en.wikipedia.org/wiki/SolidWorks.
- K.N. Frazer, School of Food and Advanced Technology, Massey University, Slides from Lecture 12, March 2019.
- \emph{RDrive Datasheet} ROZUM Robotics LLC., Mountain House, CA - USA, 2020.
- (Atan2 - Wikipedia)(2020, May). Available: https://en.wikipedia.org/wiki/Atan2
# Appendix A
To Appendix A please follow the link.