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 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.

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)