DH Wizard

a tool to understand and generate Denavit-Hartenberg matrices for an arbitrary kinematic structure

Student: Leland C. Thorpe

objective overview DH Wizard summary

Objective

The Denavit-Hartenberg convention is a powerful method for modeling robotic arms, as well as any other kinematic structure. Hwwever, it is difficult to learn and time-consuming to use. Therefore, I sought to build a GUI tool which could accurately represent kinematic chains both structurally and visually, allowing the user to explore a given manipulator as well as generating his own. Ideally, this will have applications both for the experienced engineer when seeking to model a new arm as well as for the student who is trying to learn the DH convention.

Overview

.kin files

Tekkotsu represents a kinematic chain in an XML-based document known as a .kin file. Kinematic chains are stored sequentially in <array> elements. Each chain is composed of <dict> elements which represent individual joints, and <array> elements which indicate branching.


<?xml version="1.0"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><array>
<dict>
	<key>JointType</key> <string>revolute</string>
	<key>theta</key>         <real>0</real>
	<key>d</key>         <real>0</real>
	<key>alpha</key>         <real>0</real>
	<key>r</key>         <real>0</real>
	<key>qOffset</key>   <real>0</real>
	<key>Min</key>       <real>0</real>
	<key>Max</key>       <real>0</real>
	<key>Mass</key>      <real>3.280</real>
	<key>CenterOfMass</key><array>
		<real>-75</real>  <real>0</real>  <real>0</real>
	</array>
	<key>Model</key>     <string>Chiara/Body</string>
	<key>Name</key>      <string>BaseFrame</string>
</dict>

<!-- HEAD / CAMERA -->
<array>
	<dict>
		<key>JointType</key> <string>revolute</string>
		<key>theta</key>         <real>0 °</real>
		<key>d</key>         <real>383.916</real>
		<key>alpha</key>         <real>0</real>
		<key>r</key>         <real>75.230</real>
		<key>qOffset</key>   <real>0 °</real>
		<key>Min</key>       <real>-150 °</real>
		<key>Max</key>       <real>150 °</real>
		<key>Mass</key>      <real>0.0775</real>
		<key>Model</key>     <string>Chiara/Pan</string>
		<key>Name</key>      <string>NECK:pan</string>
		<key>IKSolver</key>  <string>IKThreeLink</string>
	</dict>
	<dict>
		<key>JointType</key> <string>revolute</string>
		<key>theta</key>         <real>0</real>
		<key>d</key>         <real>-39</real>
		<key>alpha</key>         <real>90 °</real>
		<key>r</key>         <real>22.5</real>
		<key>qOffset</key>   <real>0</real>
		<key>Min</key>       <real>-92 °</real>
		<key>Max</key>       <real>75 °</real>
		<key>Mass</key>      <real>0.1175</real>
		<key>Model</key>     <string>Chiara/Tilt</string>
		<key>Name</key>      <string>NECK:tilt</string>
		<key>IKSolver</key>  <string>IKThreeLink</string>
	</dict>
	<dict>
		<key>JointType</key> <string>revolute</string>
		<key>theta</key>         <real>90 °</real>
		<key>d</key>         <real>0</real>
		<key>alpha</key>         <real>90 °</real>
		<key>r</key>         <real>0</real>
		<key>qOffset</key>   <real>0</real>
		<key>Min</key>       <real>0</real>
		<key>Max</key>       <real>0</real>
	</dict>
	<dict>
		<key>JointType</key> <string>prismatic</string>
		<key>theta</key>         <real>90 °</real>
		<key>d</key>         <real>41</real>
		<key>alpha</key>         <real>0</real>
		<key>r</key>         <real>0</real>
		<key>qOffset</key>   <real>0</real>
		<key>Min</key>       <real>0</real>
		<key>Max</key>       <real>0</real>
		<key>Visible</key>   <false/>
		<key>Model</key>     <string>ReferenceFrame</string>
		<key>Name</key>      <string>CameraFrame</string>
		<key>IKSolver</key>  <string>IKThreeLink</string>
		<key>Visible</key>   <false/>
	</dict>
</array>
<!-- SNIP -->
</array></plist>


click here to view the full Chiara kinematic file

Mirage and Ogre3D

Ogre3D is a 3D graphics library which Ethan Tira-Thompson has used to build Mirage, a virtual word for robots to live in. The Mirage server communicates with client programs over a network socket and speaks .kin, which allows Tekkotsu to interface with it.

The Wizard

Some mock-up shots:


Summary and Future Work

Much left to do, but should be a powerful tool.