# WidowX Arm Controller

This project has been created during the Robotics course at the University of Roma Tre.
In this work will be shown a Matlab script which can be used to control the 5-DOF manipulator WidowX through the publication of data in a ROS node.

### Manipulator Description

The robot is a 5 revolute joints manipulator, as shown in the following figure.

To make a mathematical model of the robot it was necessary to estimate the Denavit-Hartenberg parameters. In the following figure are reported, for each joint, the parameters θ, d, a, α, where:

• θ is the rotation angle of the joint;
• d is the offset along previous rotation axis to the common normal;
• a is the minimum distance between the rotation axis of joint i, respect to joint i-1;
• α is the twist angle.

### Software Description

The software is structured as a Matlab GUI, built in those simple section:

– ROS connection
– Manipulator Model
– Inverse Kinematic
– Forward Kinematic
– Alarm

The whole script has been implemented using Robotics Toolbox and Peter Corke libraries.
The base Idea of this work is to create a tool which can offers the opportunity to let the manipulator to reach a wished goal. It can be done through the setting of a desired point in the carthesian space, or through the setting of a particular configuration of the joints.

In the Inverse Kinematic section is possible to set a desired point in the carthesian space and the software will calculate the right trajectory needed to reach the goal. The user has the possibilty to choose among three different options. Plot a static chart of the manipulator in the point setted, Plan a dynamic chart which simulate the trajectory calculated or Execute it.

By inserting the coordinates in the first three boxes, it’s possible to plan or execute a trajectory form the Zero pose to the desired goal. Otherwise by inserting the coordinates in the second three boxes, it’s possible to plan or execute a trajectory from the previous goal the current goal. The precision is of the millimeter order.

In the Forward Kinematic section is possible to set a desired configuration of the manipulator by inserting, for each joint, an angular value in degrees. The user has the chance to choose to Plot inserted configuration or Execute it.

To avoid the manipulator from reaching critical configurations, a series of conditions has been set. In the alarm section is possible to notice if an error occours on a joint, in those cases the software will be able to guarantee the manipulator safety by not executing the critical trajectory.
In the following table there are the limits set in degrees.

All the Matlab files can be found at this link.
For the installation you can consult the User Guide.
An Italian version of the Matlab GUI guide can be found HERE.

This project has been made by:
Davide Bianchini
Pasquale Peluso