Homework 03 - Denavit-Hartenberg Convention

Task

  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))
ax = fig.add_subplot(111, projection='3d')
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))
ax = fig.add_subplot(111, projection='3d')
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

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

  1. hw03.json - json file containing DH parameters of the given manipulator (see below for the description of how to create it).
  2. hw03.pdf - report file describing your solution containing
    1. an illustration of DH coordinate systems (two views as described above);
    2. a table with DH parameters.

Creating hw03.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 hw03.json:

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