Warning

## Homework 02 - Denavit-Hartenberg Convention

1. Describe the kinematics of Motoman MA1400 manipulator using its dimensions in Denavit-Hartenberg convention as explained in Lecture 03. In order for the automatic evaluation to check your solution correctly, choose the 0-th and the 6-th coordinate frames as shown here (the $x$-axis is marked in red, the $z$-axis is marked in blue).
2. Visualize DH notation of the manipulator (axes of motion and $O_i$ coordinate systems) in Python. Provide XZ plane view and side view (see below example code snippets and expected plots for the manipulator from the lecture). Please use the same view-points as in the code snippets, so it is easier to check.

For XZ plane, you can use this snippet of code:

fig = plt.figure(figsize=(10, 10))
for system in systems:
plot_system(ax, system)
ax.set_proj_type('ortho')
ax.view_init(azim=90, elev=0)
ax.set_yticklabels([])
ax.set_ylabel('')
ax.set_xlim(-0.05, 1.45)
ax.set_ylim(-0.75, 0.75)
ax.set_zlim(-0.05, 1.45)
plt.show()

For side view:

fig = plt.figure(figsize=(10, 10))
for system in systems:
plot_system(ax, system)
ax.view_init(azim=50, elev=20)
ax.set_xlim(-0.05, 1.45)
ax.set_ylim(-0.75, 0.75)
ax.set_zlim(-0.05, 1.45)
plt.show()

You will need to implement plot_system() function and use your own systems.

Upload a zip archive hw02.zip (via the course ware) containing:

1. hw02.json - json file containing DH parameters of the given manipulator (see below for the description of how to create it).
2. hw02.pdf - report file describing your solution containing
1. an illustration of all axes of motion;
2. an illustration of all DH coordinate systems ($O_i$ and $H_i$);
3. a table with DH parameters;
4. comments on the choices of DH coordinate systems;
5. visualization of DH parameters of the given manipulator.

Creating hw02.json:

Create an empty dictionary in Python:

mechanism = {}

The dictionary has 4 keys: “theta offset”, “d”, “a”, “alpha”. The values are lists of 6 float numbers. Fill in the values with DH parameters of the given manipulator. Consider the distances in meters and angles in radians.

Finally, save mechanism to hw02.json:

import json
with open("hw02.json", "w") as outfile:
json.dump(mechanism, outfile)