Engineering Postgraduate Project B (ENGG7803)
One Sweet Robot:
A Compliant 3D-Printed Robotic Hand
Thesis – Final Report
Alexandre CAYLA
(44004712)
Supervisor: Dr Surya Singh
7th November 2016
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
2 / 58
Abstract
This thesis report presents the design process, construction and testing of an underactuated
compliant robotic grasper. It then explains how this robotic hand was used to investigate
compliant grasping: experiments were lead to analyse the adaptability of the grasp by
constructing experimental grasp maps.
The design of the hand is derived from Northeastern's Baxter Easyhand [1] (for the fingers)
and on Yale's OpenHand Model T [2] (for the actuation system). Most of the components are
3D-printed, and the flexible parts are formed using Shape Deposition Manufacturing (SDM).
The robotic grasper has three fingers, each containing two flexible urethane joints and
compliant pads. They are actuated by a single servomotor; the motion is transmitted through a
pulley/tendons structure. All of this conception choices result in a low-cost and easy to control
compliant robotic hand, which can conform to variations of shapes in the grasped object.
The grasp is commanded using force control: the hand closes until the load sensor in the
motor reaches a certain threshold value. This procedure is implemented in the motor through a
Matlab script. Using this basic algorithm, an experiment is lead to quantify the probability of
successfully grasping an object depending on the relative distance between the grasper and the
object. The results are displayed graphically in grasp probability maps. We can conclude that
compliance effectively improves the adaptability of the grasp, as the grasper is able to
compensate substantial positioning errors. Other observations can be made from this analysis,
notably the presence of a probability gradient zone (about 10mm wide) or the influence of the
asymmetry of the finger layout.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
3 / 58
Contents
Abstract ...................................................................................................................................... 2
Introduction ................................................................................................................................ 4
1. Background ......................................................................................................................... 5
1.1. Grasp Mechanics ......................................................................................................... 5
1.2. Underactuation ........................................................................................................... 11
1.3. Compliance ................................................................................................................ 16
1.4. Existing Robotic Hands ............................................................................................. 17
2. Creation of the Robotic Hand ........................................................................................... 20
2.1. Detailed design .......................................................................................................... 20
2.2. List of Components ................................................................................................... 26
2.3. Construction Process ................................................................................................. 27
2.4. Power Supply and Control ......................................................................................... 32
3. Characterisation of a Compliant Grasp ............................................................................. 34
3.1. Prerequisite: Programming the Hand for Grasping ................................................... 34
3.2. Building Experimental Grasp Probability Maps ....................................................... 38
3.3. Results and Analysis .................................................................................................. 40
4. Critical Review of the Project ........................................................................................... 46
4.1. Respect of the Schedule ............................................................................................. 46
4.2. Project Goals .............................................................................................................. 46
4.3. Evaluation and Suggestions for Further Projects ...................................................... 46
Conclusion ................................................................................................................................ 47
Acknowledgement .................................................................................................................... 48
References ................................................................................................................................ 49
Appendices ............................................................................................................................... 51
Appendix A: Exploded View of the Robotic Hand .............................................................. 51
Appendix B: Control Table of the Dynamixel MX-64T ...................................................... 52
Appendix C: Matlab Grasp Script ........................................................................................ 54
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
4 / 58
Introduction
Robotic graspers can broadly be divided into two categories. The first ones are factory-type
robots, powerful and stiff, with very simple design, easy to control and relatively cheap;
however, their range of action is very limited. In contrast, the second ones are sophisticated
human-like hands, capable of complex and precise manipulations; they are nonetheless very
costly and hard to control.
For the past decade, researchers have created new robotic hand designs using rapid
prototyping techniques, underactuation and, most importantly, compliance. The resulting
graspers are inexpensive, easy to control and yet adaptive. We can hence wonder: what are the
characteristics of such compliant grasps, and to what extent does compliance improve grasp
performances? The approach followed in this project to answer this question is to design and
build a compliant robotic hand and characterize experimentally its soft grasp.
In a first section, the relevant bibliographical background is reviewed, giving solid bases
about grasp mechanics, underactuation systems and compliance, and presenting a short review
of the robotic hands that are the most adapted for our application. Secondly, the design of the
robotic hand is presented, with a systematic justification of the conception choices, and the
construction process is detailed. Then, the experiment investigating the compliant grasp of the
hand is described, followed by the obtained results and possible interpretations. The report ends
with a small analysis of the project execution, notably from the angle of the schedule and the
objectives.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
5 / 58
1. Background
This first section introduces several notions and some context necessary to a good
understanding of this thesis report. It does not cover in depth theory – see the referenced
documents for more advanced information – but should give a good overview of the
fundamental concepts involved in the project
1.1. Grasp Mechanics
As the robotic hand's main purpose is to efficiently grasp various objects, knowing how the
grasping process occurs mechanically and under what conditions it succeeds may guide us in
the design.
This part presents some basic elements about grasp mechanics; only rigid bodies will be
considered here (no deformations). It echoes and complement the "Dynamics and Grasping"
paragraph in [3].
1.1.1. Introduction to Wrenches
1.1.1.1. Forces
A force is a mechanical linear action exerted on a body. It may either result from a contact
on a specific point, or from the effect on a field (electric, magnetic, gravitational) on the whole
volume of the body.
Forces' main characteristics are their axis, direction and magnitude (in Newtons). They
hence are represented by vectors, noted 𝐹 ⃗⃗ ⃗, which carry all this information. If we want to
change the coordinates of a force vector 𝐹 ⃗⃗ ⃗ from a frame ℛ2 to a frame ℛ1, we only need to
multiply it by the rotation matrix 𝑅12:
𝑭𝟏⃗⃗ ⃗⃗ = 𝑹𝟏𝟐 𝑭𝟐⃗⃗ ⃗⃗
1.1.1.2. Moments
The moment (or torque) of a force with respect to a point represents the rotational effect
induced by the force on the body around this point. The moment of a force 𝐹 ⃗⃗ ⃗ applied on a
point M with respect to O is the vector 𝑇𝑜(𝐹 ⃗⃗ ⃗) ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗
defined by the cross product:
𝑇𝑜(𝐹 ⃗⃗ ⃗) ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ = 𝑂𝑀⃗⃗ ⃗⃗ ⃗⃗ × 𝐹 ⃗⃗ ⃗
Due to the cross product, 𝑇𝑜(𝐹 ⃗⃗ ⃗) ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗
is normal to both 𝑂𝑀⃗⃗ ⃗⃗ ⃗⃗ and 𝐹 ⃗⃗ ⃗, and is collinear to the axis
of rotation. Its intensity (in Newton-meters) could be understood as a "rotational force".
Lenarcic et al. propose in [4] a generalisation of the concept of vectorial cross product to
matrices. For a vector 𝑂𝑀⃗⃗ ⃗⃗ ⃗⃗ = (𝑥𝑀, 𝑦𝑀 , 𝑧𝑀)𝑇, the matrix counterpart to the operator 𝑂𝑀⃗⃗ ⃗⃗ ⃗⃗ × is
defined by:
𝑃𝑀 = (
0 −𝑧𝑀 𝑦𝑀𝑧𝑀 0 −𝑥𝑀− 𝑦𝑀 𝑥𝑀 0
)
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
6 / 58
For any vector �⃗� ∈ ℝ3, we effectively have 𝑂𝑀⃗⃗ ⃗⃗ ⃗⃗ × �⃗� = 𝑃𝑀�⃗� .
The change of coordinates of a moment 𝑇𝑂′(𝐹2 ⃗⃗⃗⃗ ⃗) ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗
from a frame ℛ2 centred in 𝑂′ to a
frame ℛ1 centred in 𝑂 requires more operations than the change of frame for a force. In
addition to changing the orientation with the rotation matrix 𝑅12, the centre of rotation must be
switched from 𝑂′ to 𝑂, which generates an additional term:
𝑇𝑂(𝐹1 ⃗⃗ ⃗⃗ ) ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ = 𝑂𝑀⃗⃗ ⃗⃗ ⃗⃗ × 𝐹1⃗⃗ ⃗
= 𝑂𝑂′⃗⃗ ⃗⃗ ⃗⃗ ⃗ × 𝐹1⃗⃗ ⃗ + 𝑂′𝑀⃗⃗⃗⃗⃗⃗ ⃗⃗ × 𝐹1⃗⃗ ⃗
= 𝑂𝑂′⃗⃗ ⃗⃗ ⃗⃗ ⃗ × 𝑅12𝐹2⃗⃗ ⃗ + 𝑂′𝑀⃗⃗⃗⃗⃗⃗ ⃗⃗ × 𝑅12𝐹2⃗⃗ ⃗
𝑻𝑶(𝑭𝟏 ⃗⃗ ⃗⃗ ⃗) ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗ = 𝑷𝑶′𝑹𝟏𝟐𝑭𝟐⃗⃗ ⃗⃗ + 𝑹𝟏𝟐𝑻𝑶′(𝑭𝟐 ⃗⃗ ⃗⃗ ⃗) ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗
1.1.1.3. Wrenches
As proven in [4] and [5], both a force 𝐹 ⃗⃗ ⃗ and the moment it generates 𝑇𝑜(𝐹 ⃗⃗ ⃗) ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗
can be
described by a single mechanical object 𝑊 called wrench which gathers all six coordinates:
𝑊 = (𝐹 ⃗⃗ ⃗
𝑇𝑜(𝐹 ⃗⃗ ⃗)⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ) =
(
𝑓𝑥𝑓𝑦𝑓𝑧𝑡𝑥𝑓𝑦𝑡𝑧)
The results from the previous two paragraphs can be used to deduce how to change the
coordinates of a wrench W from a frame ℛ2 centred in 𝑂′ to a frame ℛ1 centred in 𝑂:
𝑊1 = (𝐹1 ⃗⃗ ⃗⃗
𝑇𝑜(𝐹1 ⃗⃗ ⃗⃗ )⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ) = (
𝑅12 𝐹2⃗⃗ ⃗
𝑃𝑂′𝑅12𝐹2⃗⃗ ⃗ + 𝑅12𝑇𝑂′(𝐹2 ⃗⃗⃗⃗ ⃗) ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗
) = (𝑅12 0
𝑃𝑂′𝑅12 𝑅12
)(𝐹2 ⃗⃗⃗⃗ ⃗
𝑇𝑜′(𝐹2 ⃗⃗⃗⃗ ⃗)⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗)
𝑾𝟏 = (𝑹𝟏𝟐 𝟎
𝑷𝑶′𝑹𝟏𝟐 𝑹𝟏𝟐
)𝑾𝟐
1.1.2. Contact Types
When a rigid body contacts another one (for instance, a finger touching an object we want
to grasp), the first one can apply a force and a moment on the second, which can be summarized
into a wrench W. However, due to the frictional effects (or rather to the possible lack of
frictional effects), not all types of mechanical efforts can be transmitted. To take this limitation
into account, [4], [5] and [6] introduce the idea of contact types.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
7 / 58
B
B
B
Depending on the situation, specific wrench components will be equal to zero, traducing the
impossibility to transmit some types of actions. Below are detailed three contact models, with
different sets of constraints. The wrench expression is systematically divided as 𝑊 = 𝐵𝐹,
where 𝐵 is the wrench basis and 𝐹 a column vector.
1.1.2.1. Frictionless Contact Point
In this first and simplest model, the first object can only apply a force normal to the contact
surface on the second. Besides, moments cannot be transmitted. Therefore, as explained in [4],
[5] and [6], the wrench exerted will be:
𝑊𝐹𝑟𝑖𝑐𝑙𝑒𝑠𝑠 =
(
00𝑓000)
=
(
001000)
𝑓 with 𝑓 = ‖𝐹 ⃗⃗ ⃗‖ ≥ 0
1.1.2.2. Coulomb Friction Point
In this second model, the force exerted on the object can have a tangential component, which
will be due to friction (moments still cannot be transmitted). However, as stated in the
Coulomb's dry friction model, the tangential force to normal force ratio cannot exceed a
factor 𝝁, called friction coefficient (its value depends on the two materials in contact).
Geometrically speaking, the force has to stay inside a cone – which axis is normal to the contact
surface and that has an aperture angle of 𝛼 = arctan (𝜇). The wrench for a Coulomb friction
point hence is:
𝑊𝐶𝑜𝑢𝑙 =
(
𝑓𝑥𝑓𝑦𝑓𝑧000)
=
(
1 0 00 1 00 0 10 0 00 0 00 0 0)
𝐹 ⃗⃗ ⃗ with 𝐹 ⃗⃗ ⃗ = (
𝑓𝑥𝑓𝑦𝑓𝑧
) and
{
𝑓𝑧 ≥ 0
√𝑓𝑥2+𝑓𝑦
2
|𝑓𝑧| ≤ 𝜇
1.1.2.3. Soft Finger Contact
In this last model, besides a force with some potential friction components, it is possible to
apply a moment normal to the contact surface. Similarly to the previous case, the ratio moment
to normal force cannot exceed a particular torsional coefficient, noted 𝜸. This results in the
following expression of the wrench:
𝑊𝑆𝑜𝑓𝑡 =
(
𝑓𝑥𝑓𝑦𝑓𝑧00𝑡𝑧)
=
(
1 0 0 00 1 0 00 0 1 00 0 0 00 0 0 00 0 0 1)
(𝐹 ⃗⃗ ⃗
𝑡𝑧) with 𝐹 ⃗⃗ ⃗ = (
𝑓𝑥𝑓𝑦𝑓𝑧
) and
{
𝑓𝑧 ≥ 0
√𝑓𝑥2+𝑓𝑦
2
|𝑓𝑧| ≤ 𝜇
|𝑡𝑧|
|𝑓𝑧| ≤ 𝛾
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
8 / 58
Figure 1: Frictionless, Coulomb and Soft Finger contacts
1.1.3. Application to Grasping
As detailed in [4] and [5], the previous notions can be applied to grasping.
1.1.3.1. Change of frame for a single contact point
Grasping an object is the result of simultaneous contacts exerted on different locations of
this object. However, to be able to consider the contribution of each contact action, we must
first express them in the object frame.
Let us consider a finger exerting at the point 𝐶1 a contact action on an object attached to the
frame ℛ𝑂 defined by (𝑂, 𝑥𝑂 , 𝑦𝑂 , 𝑧𝑂). The finger frame ℛ1 is defined by (𝐶1, 𝑥1, 𝑦1, 𝑧1).
Figure 2: Frames during a Contact Action (inspired by [4])
The finger applies on 𝐶1 a wrench 𝑊1 = 𝐵 𝐹𝐶1 to the object (where 𝐵 is the wrench basis,
depending on the type of contact, and 𝐹𝐶1 the column vector with the components of the contact
action). The wrench applied on 𝑂 in the object frame is:
𝑊𝑂 = (𝑅𝑂1 0
𝑃1𝑅𝑂1 𝑅𝑂1
)𝑊1 = (𝑅𝑂1 0
𝑃1𝑅𝑂1 𝑅𝑂1
)𝐵 𝐹𝐶1
𝑾𝑶 = 𝑮 𝑭𝑪𝟏 with G = (𝑅𝑂1 0
𝑃1𝑅𝑂1 𝑅𝑂1
)𝐵
This 𝐺 matrix introduced in [4] and [5] is called grasp, grasp matrix or grasp map. It gives
the wrench basis in the object frame.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
9 / 58
G
1.1.3.2. Grasp matrix and Friction cone
If several wrenches 𝑊1,𝑊2,𝑊3, … ,𝑊𝑛 are simultaneously exerted on the same object, the
total wrench applied will be, as stated in [5]:
𝑊𝑂 = 𝐺1 𝐹𝐶1 + 𝐺2 𝐹𝐶2 + 𝐺3 𝐹𝐶3 +⋯+ 𝐺𝑛 𝐹𝐶𝑛
𝑊𝑂 = (𝐺1 𝐺2 𝐺3 ⋯ 𝐺𝑛)
(
𝐹𝐶1𝐹𝐶2𝐹𝐶3⋮𝐹𝐶𝑛)
The global grasp matrix G describes here all the elementary contact actions in the object
coordinate frame. The 𝐹𝐶𝑖 vector defines a subset of ℝ𝑝 (p being the dimension of the vector)
which is called friction cone, and noted FC. It is the Cartesian product of the individual friction
cones generated for each contact. The boundaries of this subset are defined by the constraints
on each contact force (cf 1.1.2.):
for a friction less contact point 𝐹𝑐𝑖 = 𝑓 ≥ 0;
for a Coulomb friction point 𝐹𝑐𝑖 = (𝑓𝑥, 𝑓𝑦, 𝑓𝑧)𝑇, 𝑓𝑧 ≥ 0,
√𝑓𝑥2+𝑓𝑦
2
|𝑓𝑧|≤ 𝜇;
for a soft finger contact 𝐹𝑐𝑖 = (𝑓𝑥, 𝑓𝑦, 𝑓𝑧 , 𝑡𝑧)𝑇, 𝑓𝑧 ≥ 0,
√𝑓𝑥2+𝑓𝑦
2
|𝑓𝑧|≤ 𝜇,
|𝑡𝑧|
|𝑓𝑧|≤ 𝛾.
As explained in [5], knowing the grasp map G and the friction cone FC completely
characterises the grasp.
1.1.3.3. Force Closure
Let us consider a robotic hand grasping an object. The grasp is characterized by the grasp
map G and the friction cone FC.
The subset of ℝ6 defined by G(FC) determines the range of wrenches W= (𝐹 ⃗⃗ ⃗
𝑇 ⃗⃗ ⃗) which can
be exerted by the hand on the object. In other words, if the exterior actions applied on the object
can be compensated by a wrench included in G(FC), then the grasp will be successful.
Therefore, the ideal grasp should be able to resist any type of exterior wrench. This desirable
property is called force closure. A formal characterisation given in [4] (and backed by [6] and
[7]) is that "a grasp is force-closure grasp if and only if G(FC) = ℝ6". A simpler (yet
equivalent) definition would be:
(𝑮, 𝑭𝑪) is force closure ⟺ for all 𝑾𝒆𝒙𝒕 ∈ ℝ𝟔, there is a 𝑭 ̃ ∈ 𝑭𝑪 such as 𝑮 𝑭 ̃ = −𝑾𝒆𝒙𝒕
However, finding a force closure grasp for a given couple grasper / grasped object can be
very complicated. The existence and configuration of the force closure grasp will mainly
depend on:
The shape of the object,
The number of contact points,
The type of the contact points (frictionless, Coulomb, or soft).
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
10 / 58
As demonstrated in [7] and [8], stable force closure grasp of polyhedrons is possible when
you have at least:
Two independent soft finger contacts, or
Three independent Coulomb friction points, or
Seven independent frictionless points.
Besides, Lenarcic et al. state in chapter 9.2 of [4] that "a gripper with four fingers can grasp
99 % of the objects that can be manipulated by a gripper with five fingers" and that "a gripper
with three fingers can successfully grasp 90 % of all objects, while a gripper with two fingers
only 40 % of the objects".
When possible, the goal is to find where to exert the contact actions on the object so that the
resulting grasp is force closure. This purely geometrical problem can be solved using various
methods or algorithms; some of these calculation techniques are presented in [7] and [8]. Below
are illustrated several configurations of force closure grasp for the 3 Coulomb friction points
scenario:
Figure 3: Examples of force closure configurations for 3 Coulomb friction points [8]
1.1.4. Conclusion on Grasp dynamics
Grasp analysis is a challenging mechanical problem. A grasp consists of several contacts,
which are themselves made of elementary actions (depending on the contact type); its effect,
stability and robustness can be deduced from its grasp matrix and friction cone. We are
interested in the inverse problem: find the force closure grasps for a given object and grasper.
This problem is purely geometrical and can require precise calculations.
Consequently, precise grasp planning is too complex to be used in this project. Finding one
of the optimal force-closure grasps requires detecting precisely the shape and position of the
object, and then computing the adequate positioning of fingers with some algorithm – which
would need to be very sophisticated to handle various object shapes. Besides, once the ideal
grasp determined, the device would need precise control over the fingers to place them at the
desired spots. All of this would generate too much complexity, which is not part of the scope
of the project and cannot be handled with the allocated time and budget. Nevertheless, the
results from 1.1.3.3 about the link between number/type of contacts and existence of force
closure grasps will be used as guidelines to design the robotic hand.
A solution to obtain satisfactory grasps without such planning is to implement in the robot
the concepts detailed in the next two parts: underactuation and compliance.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
11 / 58
1.2. Underactuation
1.2.1. Definition
As explained in [6], [9] and [10], underactuation is a specific category of actuation
architecture used in robotics. The idea is to have less actuators ("sources of motion", which are
mostly motors) than degrees of freedom (noted DOF) in the system. The "missing" actuators
are compensated by adapted transmission systems, along with some passive elements (springs,
damper, flexible part) to constrain the structure [11].
Reducing the number of actuators has two main consequences. On the one hand, it narrows
down the robot's possibilities in the sense that not all of the states are reachable. Some
specific sets of positions of the effectors, which should be obtainable regarding the original
degrees of freedom, are impossible to achieve with the action of the actuators alone. On the
other, the robot becomes much easier to control – which is the key reason why underactuation
is widely used in robotics. While fully actuated (or even overactuated) mechanisms require the
user to precisely choose and coordinate the action of all the motors, part of this complex
synchronization is relieved by the transmission system in the underactuated apparatuses. In the
particular case of grasping devices, underactuation also grants the hand some adaptability (cf
part 1.3 about compliance), as contact with the grasped object determines the ending position
of the fingers.
Figure 4: Underactuated adaptive grasp [2]
A secondary – yet crucial – consequence of having less actuators than DOF is the limitation
of the cost and weight of the robot. Actuators are very often some the heaviest and most
expensive components; therefore, minimising their number can be a smart choice in terms of
price and efficiency.
We do not consider the volume gain obtained by removing the actuators as an advantage,
as this room is likely to be filled with the transmission system – nevertheless, removing the
electric connections reduces the system's overall complexity. Similarly, the fact that the
actuator's power will be divided among the several effectors it operates (and the subsequent
losses in the transmission) are not pertinent, as this additional power requirement must be taken
into account by selecting a suitable motor.
For robotics hands, underactuation can be applied on two levels: to couple the movement of
the different phalanges in a single finger, and to link the motion of several fingers together.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
12 / 58
1.2.2. Underactuated Grasping Mechanisms
Below are some examples of transmission systems used to achieve underactuation for
robotic graspers.
1.2.2.1. Underactuated fingers
As evoked in paragraph 1.2.1, the concept of underactuation can be used to drive the two or
three phalanges (or more) of a finger with a single actuator. As motion is transmitted to
successive parts attached to each other, this relies on serial mechanisms. Calculations of force
transmission are detailed in [10]. Here are some of the technological solutions for finger
underactuation:
Linkage-driven fingers: as studied in [10] and [11], fingers can be actuated through a
cascade of rigid elements and linkages. Several stiff parts are connected by pivoting
and/or sliding links according to a specific architecture, and due to this mechanism,
pulling or pushing on the first element will make the whole finger follow – there is a
huge range of possible architectures, as detailed in [11]. Due to the stiffness of the parts,
this type of fingers is able to transmit large grasping forces [12]. However, their complex
structural design involves numerous parts, which complicates the assembly, and can
create critical configurations where the motion is stuck (for instance if all of the
phalanges are aligned).
Figure 5: (a) Example of linkage-driven finger architecture [10]; (b) Example of complete mechanism [13]
Pulley-tendon systems: this second type of transmission uses pulleys fixed along the
finger phalanges or joints connected by tendons. In this type of structures, pulling on
the bottom end of the final tendon will actuate the whole finger. The wheels should be
able to rotate freely, so that only the variation of length of the tendons controls the
movement (and not rotation at the joints induced by the pulleys wheels). As stated in
[11], tendon-driven mechanisms are generally less robust and more limited in
transmitting high forces, due to the friction generated by the wires and the elasticity they
develop for high loads. Nevertheless, they are much simpler to design, more flexible
and less likely to encounter any singular configurations.
A variation of this transmission system consists in only using tendons, routing them
through a specific path along the finger. This accentuates friction, but simplifies the
overall layout.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
13 / 58
Figure 6: (a) Example of pulley-tendon finger architecture [10]; (b) Tendon-only mechanism [14]
Gear transmission: gears can be used instead of linkage or tendons for finger motion.
For each junction, a rigidly attached gear transmits the movement to the next phalange;
the ratios between teeth numbers of these junction gears allows to control the relative
closing speeds of the different phalanges. Inside the phalanges themselves, a gear train
transmits the motion between the two extreme gearwheels (the number of gears in this
intermediate gear train must be odd, so that the two extreme wheels spin in the same
direction); alternatively, a belt can be used. This mechanism is even stiffer than the
linkage architecture, and can possibly convey high forces; besides, using the gear ratios,
it is possible to precisely plan the complete motion of the finger. Yet it is very complex,
and requires highly customized and resistant gear train to work properly. We also lose
the adaptability granted by the previous two configurations, as the motion is here fully
determined by the gear setup.
Figure 7: Example of gear actuated finger architecture [10]
It is also possible to combine those mechanisms: phalanges can have different types of
transmission depending on the requirement of each
When high forces are not involved, pulley-tendon are generally favoured, due to the
simplicity and adaptability they offer.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
14 / 58
1.2.2.2. Underactuation between the fingers
The same concept can be applied to drive several fingers with only one actuator, making
them open or close collectively. It grants additional adaptability and distribute the force
adequately among the fingers. Despite a similar principle, there is nonetheless a significant
structural difference with the finger transmission from paragraph 1.2.2.1: the mechanisms are
now differential – the fingers are somewhat independent, they do not form a chain as the
phalanges previously did. [9], [10] and [2] present a review of the most common differential
technological solutions for robotic hands:
Movable pulleys: a first solution (used in [15]) to drive two fingers at once is to
implement movable pulleys, or sliding pulleys. The two fingers are controlled by a
single cable, which goes around a pulley wheel; by pulling this pulley we can actuate
both fingers. This configuration allows to divide the efforts appropriately; for instance,
if one finger is blocked, pulling the pulley will only drive the second finger. However,
the pulley assembly and design can be challenging, and measures shall be taken to avoid
the rope sliding out of the pulley wheel path.
Seesaw mechanism: another possibility is to use a seesaw mechanism (or whippletree).
The two cables driving the fingers are attached to the opposite ends of a rigid
longitudinal bar – the seesaw; by pulling on a third cable fixed in the middle of the
seesaw, we can control both fingers. Similarly to the previous system, this architecture
adaptively distribute the force; but here this differential distribution is limited by the
size of the pivoting bar (which can be either a drawback or an advantage, depending on
what we want). And although a little simpler to implement, they may require a bigger
volume to move freely.
Gear differential: as reminded in [2], gear differential is a robust transmission
technology mainly used for automobiles. This compact gear assembly outputs two
adaptive torques with only one input. Their main advantages are their robustness and
their capacity to transmit large efforts; however, they are much more complex and
expensive than the previous two solutions.
Figure 8: Common differential systems: (a) Movable pulley; (b) Seesaw mechanism; (c) Gear differential [2]
Other systems (less common than the ones above) can also be used. For instance, a
fluidic stage is proposed in [9] to distribute the force between the fingers, which can be
a great solution, but requires to manage issues raised by fluids, notably sealing. It is also
possible to combine different solutions for enhanced performances, as in [2] with the
"hybrid pulley/whiffletree differential".
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
15 / 58
Figure 9: Other differential systems: (d) fluidic stage [9]; (e) Hybrid pulley/seesaw [2]
These mechanisms are mostly used to actuate two fingers at once. To control more fingers,
it is theoretically possible to design more advanced structures with additional outputs by
customising the previous ones – we could imagine replacing the rod of the seesaw by a
polygonal or star-shaped part.
Nevertheless, the most straightforward solution to drive more fingers is to cascade two or
more of the basic configurations above. Depending on the requirements, we can use multiple
copies of the same mechanism, or different ones if some stages require more robustness, power,
or flexibility. The architecture can include parallel or serial routings; [9] gives an example of a
transmission system using several movable pulleys:
Figure 10: Multiple pulleys transmission system [9]
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
16 / 58
1.3. Compliance
1.3.1. Definition
The compliance of a robot can be defined as its ability adapt and get deformed reversibly
under actions of its environment. In that sense, this concept is similar to the flexibility of the
device and opposed to its stiffness.
Odhner et al. show in [16] that compliance is, to some extent, a highly desirable property
for robotic hands. First, it enables the grasp to automatically conform to the shape of the object,
making it possible to achieve firm and stable grasps (with multiple contacts) without advanced
control. Secondly, it can be used to put the system back into its initial position: the actuation
only needs to handle the flexion of the fingers, while the extension is handled by compliance
(or conversely). Finally, compliance is a way to absorb energy, making the robot more resistant
to shocks or disturbances, and protecting it from damage due to an excessive grasping force.
On the other hand, this limitation of the maximal force exerted can be a drawback when large
power is required.
As suggested in chapter 7 of [6], compliance can be active or passive (or both).
Active compliance consists in controlling the inputs to reduce the overall stiffness of the
system. Concretely, it requires a good sensing of the environment (in particular of the forces
and torques applied by/on the device) and some control implementation (microcontroller and
feedback loop) to respond to environmental stimuli. This can prove to be costly and
complicated; besides the response time needs to be small enough for active compliance become
operative when needed.
Passive compliance gives flexibility through the structure of the robot itself – cf. paragraph
1.3.2. This is a much cheaper and simpler approach, as the adaptability is directly integrated to
the system and no dynamic computing is required. It however limits the controllability and
precision of the device, as well as the range of configurations it can reach. Passive compliance
also implies that the compliance shall be fully included in the early design of the robot, and
cannot be changed afterwards.
1.3.2. Passive Elements for Compliance in Robotic Hands
Due to the simplicity of their design, most of the compliance in robotic hands is provided
by passive elements. Here are a few examples of technological solutions granting passive
compliance:
Flexible joints (as used in [16], [17] and [1]) linking the fingers' phalanges complement
nicely the underactuation in adapting the grasp to the object geometry.
Compliant springs are another option for compliance at the joints. Torsion springs can
be installed on the rotation points between the phalanges to achieve similar compliance.
Soft pads on the finger tips (studied extensively in [18]) and/or on the phalanges increase
friction with the object, generating a more robust grip.
The underactuation system can be considered as a part of the passive compliance of the
system, as the automatic coordination between the fingers (and also between the
phalanges of the fingers) contributes to the device adaptability.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
17 / 58
1.4. Existing Robotic Hands
1.4.1. Generalities
As explained in [19], robotic hands, graspers or grippers were originally designed to help
or replace humans by performing repetitive or hazardous work. Today, in addition to this, they
are used in various domains where they outclass humans either in strength, precision or stamina.
Due to their multiple fields of application, these robotic manipulators come in many shapes
(each having properties and performances relevant to their function); it is nonetheless possible
to divide them into two broad categories.
The first and oldest type of robotic hands is mainly used for industrial applications. These
grippers are stiff and robust, and may be able to handle high loads. They principally handle dull
simple tasks in a constrained environment. For instance, on an assembly line, they would
regularly pick up items of the same shape with a predetermined orientation to place them
somewhere else. A typical example of these basic graspers would be the parallel jaws grippers.
The main advantages of this sort of robotic hands are their robustness, their simplicity (which
makes them predictable and easy to control), and consequently their affordable cost. The range
of possible actions is however quite limited, they may lack precision and have low adaptability.
At the other end of the spectrum, some more recent robotic graspers have been designed to
mimic the actual human hand's capabilities. These sophisticated devices contain advanced
electronics and mechanisms, enabling them to perform a wide range of gestures and actions.
Their complex actuation structure grants them precision, while their advanced sensing and
control systems adapts the motion to the environment (or object to grasp). There are notable
applications of these hands for prosthetics (human-like hands with multiple possibilities), or
for areas requiring precision such as surgery. Due to their design complexity, these devices are
generally very expensive and can be hard to pilot; besides, they are not able to lift heavy items.
In the past decades, the study and development of compliant (or soft) graspers lead to new
designs and made it possible to reconcile low cost and simplicity with adaptability. In particular,
recent studies have been applying rapid prototyping techniques to build efficient and simple
robotic hands. This is the approach followed in this thesis.
1.4.2. Two Compliant Underactuated Robotic Hands
This paragraph describes with more details two particular underactuated compliant robotic
graspers from the literature. The robotic grasper built for this thesis project is heavily inspired
from their design.
1.4.2.1. Yale's OpenHand Model T [2]
The Model T presented in [2] is a 3D-printed robotic grasper which is part of Yale's
OpenHand project (which consists in proposing several open-source designs of low-cost 3D-
printed hands for the research community).
This hand contains four 3D-printed ABS fingers (2 facing 2, with an offset). A remarkable
feature about them is that they include polymer flexible parts, embedded by Shape
Deposition Manufacturing (SDM). This technique, first used for robotic hands in [20], allows
the integration of compliant joints and pads to the hand very easily and efficiently. To do so,
the fingers are 3D printed in one block with cavities at the location of the future flexible parts;
these gaps are then filled with liquid polymer resin (urethanes), which once cured will form the
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
18 / 58
compliant parts. The thin walls delimiting the former cavity can then be cut out. The stiffness
of the polyurethanes is chosen according to their function: the pads are made of relatively
smooth polymer (30A hardness) to optimise the contact and friction with the object, while the
joints are much stiffer (80A hardness), to obtain a firm grasp. The compliance given by these
flexible elements is also controlled through their thickness. In some alternate versions of this
hand, the flexure joints are replaced by pivots with springs.
These four fingers are actuated by a single Dynamixel motor (the MX-64) and a specific
pulley differential system. This tendon-based underactuation uses several mobile pulleys and
hybrid pulley/seesaw blocks; it is depicted below:
Figure 11: Model T Underactuation Pulley System [2]
The top ends of the cables are routed through the fingers and attached to their tips, causing
them to close adequately – thanks to their joints.
Most of the component constituting the hand (such as the top and bottom bases, or the
various small parts involved in the pulley system) are 3D-printed. The acetal pulleys are
maintained with press-fitted metallic pins, and the whole system is held together thanks to four
standoffs and a few screws and bolts.
Figure 12: CAD model and photograph of the Model T [21]
According to [2], this 400g hand achieves good grasping capabilities: it can exert a grip
force up to 10N and is able to grasp a wide range object (varying by size and shape) with simple
force control.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
19 / 58
1.4.2.2. Northeastern's Baxter EasyHand [1]
This second robotic hand introduced in [1] is specifically designed to be mounted on the
Baxter robotic arm (from Rethink Robotics). As it uses the existing actuator of the robotic
arms, this device stands out by its simplicity and reduced cost. It is a variation of the model
T42, one of Yale's OpenHand other designs.
This device only has two wide fingers facing each other. Once again, they are 3D-printed
and include some SDM flexible parts on the joints and pads. The polyurethane resins are
the same grade as the ones in the Model T (cf paragraph 1.4.2.1). The finger design is however,
as depicted below, noticeably different. In particular:
there are no hollow part or pin for tendon routing at the back,
a capstan on the last phalange facilitates and consolidates the tendon fixation,
the aperture angle at the rest position is narrower – close to 90° instead of 180°, which
prevents from grasping large object but reduces the closing time and efforts, and the
maximal diameter of the hand.
Figure 13: CAD model and photograph of the Model T [1]
Past the fingers, the actuation system is straightforward: the tendons from each of the two
fingers are directly connected to the sliders of the Baxter actuator. Therefore, the only other
parts needed are two 3D-printed plates to host the actuator, four standoffs and a few screws and
nuts to hold the robot together.
Figure 14: Actuation system and Finished EasyHand [1]
This design offers good grasp performances, especially for cylindrical object. Grasps forces
up to 7N were measured.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
20 / 58
2. Creation of the Robotic Hand
The notions and applications from the literature studied in the previous section give a solid
theoretical and practical background about grasping in robotics. In this section, we apply this
knowledge to address our problem: design and build a low-cost and easy to control robotic hand
with good grasping capabilities.
2.1. Detailed design
This part comprehensively describes the final design of the robotic hand, highlighting its
most important features and justifying the selected technological solutions.
2.1.1. General guidelines
From the knowledge base acquired in section 1, the robotic hand was designed according
to the following design principles:
CAD and 3D-printing: Most of the components are designed with a CAD software,
namely Autodesk Inventor, and 3D-printed. Thanks to this rapid prototyping
technique, highly customized parts can be produced without any complex, long and
expensive machining process (this advantage also applies if a replacement part is
needed). Besides, the polymer 3D-printed parts are made of (ABS, or Acrylonitrile
Butadiene Styrene) has satisfactory mechanical properties, and is much lighter than
metallic materials.
Three fingers: The robotic hand has three fingers. According to part 1.1, multiplying the
number of contacts improves the stability of the grasp; however, a good practice is to
limit the number of fingers as each additional one requires power to be actuated,
increases the cost, weight and volume of the hand, and complicates the control and
transmission systems. Consequently, a three-fingered grasper seems to be the best
trade-off: its grasping capabilities and stability are far superior to a two-fingered
grasper, while the gains from a fourth finger are not substantial. It is important to note
that this odd number may, depending on the configuration, induce asymmetry, which
effect shall be taken into account.
Finger design (cf. paragraph 2.1.2): The fingers include compliant joints and pads,
which facilitate their actuation and enhance the adaptability of the grasp. However, as
compliant behaviours are hard to plan and model, it is much safer to follow one of the
designs from the literature. The fingers used here are therefore very similar to the ones
from Northeastern's Baxter Easyhand [1] described in 1.4.2.2, which performances
have been tested.
One motor and a pulley/tendons transmission system (cf. paragraph 2.1.3): To limit the
costs and make the control easier, the grasp will be operated by the action of a single
motor. This effort is transmitted through a pulley/tendon underactuation, as
paragraph 1.2 tends to show this structure is the most advantageous when high forces
are not required. Once again, this system is heavily inspired from the literature: it is
analogous to the proven actuation design from Yale's Model T [2]. Nonetheless,
several changes have been performed, notably to accommodate the different type and
number of fingers (three instead of four).
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
21 / 58
2.1.2. Finger design
As stated in the previous paragraph, the fingers of the robotic
hand are very similar to those from Northeastern's Baxter Easyhand
[1] (described in 1.4.2.2).
They are divided in three solid parts, linked together with flexible
joints: the base, which is to be fixed on the rest of the hand (with
two screws), and two phalanges. The inner side of each phalange is
covered with a compliant polymer pad. The base has a vertical slot
and holes to host two pulley wheels and the pins holding them. Thin
holes are drilled through the phalanges to allow proper tendon
routing; a capstan-shaped terminator at the back of the second
phalange enables a solid and easy tendon fixation and tuning. Their
tendon routing is represented in paragraph 1.4.2.2.
Although the final fingers consist of separate elements, they are designed as single blocks
with cavities at the flexible parts locations. As explained in paragraph 1.4.2, this allows to use
Shape Deposition Manufacturing (SDM) to embed directly the compliant polymers. Once the
polymers are set, sacrificial walls can be removed – see part 2.2 for the building process. To
prevent the flexible elements from "popping out" of the finger during the hand functioning, two
distinct strategies are used:
The joint cavities are bone-shaped, so that they can transmit the flexion and extension
motions (not breaking down or escaping the slot).
Each pad hole contains four small longitudinal solid T-shaped elements attached to the
body of the phalange. When the polymer is poured, it goes around these T extrusions
and traps them; and once set, this embedding keeps the pad in place.
Figure 16: CAD model of the finger mould
The polymers are the same as the ones used for the EasyHand's fingers: a smooth grade
(30A hardness) for the pads, and a stiffer grade for the joints (80A hardness) – respectively the
Vytaflex ® 30A and the PMC-780 from Smooth-On Inc.
Figure 15: CAD
model of the finger
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
22 / 58
The fingers are 20mm wide and have a maximal longitudinal dimension of 110 mm. The
joints are both approximately 10 mm long and 4 mm thick (and 20 mm wide, like the rest of
the finger). He pads are designed to have a 1-millimeter thick trapezoidal pattern on their
surface to further improve their grip; this pattern is partially replaced by a thin slot on the last
phalange (which could host a small force-resisting sensor). At rest, the finger make an angle
comprised between 20° and 45° with the vertical axis, which could be averaged to around 35°.
Figure 17: Diagram of the finger – Dimensions in mm, Width = 20mm
2.1.3. Actuation and Transmission
As evoked in paragraph 2.1.1, the actuation architecture is derived from the one in Yale's
OpenHand model T [2] (described in 1.4.2.1). This part first describes the actuator, i.e. the
Dynamixel MX-64T, and then the pulley/tendon underactuation mechanism.
2.1.3.1. The Motor: Dynamixel MX-64T
The motor needs to actuate the three fingers at once, and for each of
those, it has to balance the elastic force generated by the compliant joints.
Therefore, a considerable torque is required (the order of magnitude of the
maximum being estimated around 1 Newton-meter).
The Dynamixel MX-64T servomotor matches all of our requirements.
It integrates efficient reduction, which enables its torque to go up to 6N.m
(1.2 in normal functioning). It is robust, compact (around 60x40x40mm)
and its mass (135g) is acceptable. More information can be found on [22].
In addition to great mechanical reduction, the electronics embedded
in the device allow to control it easily and precisely. With a few cables, a
power source and specific adapters (cf part 2.4), it can be programmed
from a computer by controlling either its rotation speed or its position. It
also includes several sensors which can be used for its programming, such
as speed, temperature or load sensors (cf. part 3.1).
Figure 18: Dynamixel MX64-T
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
23 / 58
2.1.3.2. The Underactuation System: Pulley/Tendon Architecture
The underactuation system is an adapted version of the one in Yale's OpenHand model T
[2] – briefly mentioned in paragraph 1.4.2.1. It uses a set of small 3D-printed elements used to
form several mobile pulley blocks (see 1.2.2.2).
The first element of this pulley/tendon structure is a custom wheel which complements the
one originally attached to the Dynamixel motor. It contains a hole to attach the extremity of the
first tendon; its inner radius is 6.5mm. A first block, made of a couple of 3D-printed pieces (and
two pulleys), is screwed at the top of the motor to redirect the tendon along the vertical axis.
Figure 19: Motor with the first pulleys
The rest of the transmission system is composed of four other pulley blocks: two fixed with
a single pulley, and two mobile hybrid pulley-seesaw elements (see 1.2.2.2) with two pulleys
each. They contain one or two 3D-printed components and are held together by press-fitted
pins. Below is represented the complete pulley system (except from the motor and the fingers
for clarity):
Figure 20: Underactuation pulley/tendon system, with fixed and mobile pulley blocks
Then, the three tendon terminations are routed through the three fingers and attached to the
capstans at the top. This routing is depicted on figure 13 (paragraph 1.4.2.2).
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
24 / 58
The pulleys wheels are not 3D-printed (except from the motor one which needs to be
customised), as the result would not be precise enough and the material not adapted. Instead,
nylon (or acetal) pulley wheel were bought, with an outside diameter of 9.5mm; their size and
resistance match our requirements. A total of 14 pulleys is required for the whole system (the
8 represented on the previous diagram + 2 for each finger).
For the tendons, a very strong braided fishing line ("Power Pro Spectra 100lbs") is used.
This line is able to withstand loads up to 45kg, and extremely resistant to fraying.
2.1.4. Base Structure
The cylindrical body of the hand which contains the
motor and the pulley/tendon system consists of three 3D-
printed disk-shaped plates attached together with four
metallic standoffs and eight countersunk screws (cf.
exploded view on the right). The length of the standoffs
(around 62mm) was chosen to match the height of the motor,
so that tightening the base screws would hold the motor
inside without additional fixation. The total height of the
base is 80mm; its diameter is 100m
The top plate includes, in addition to the holes for the
standoffs, three sets of three holes for the fingers. In each
set, the two circular holes host the screws to fix the finger,
while the third rectangular one lets the tendon circulate from
the underactuation system below to the finger. The finger
holes are placed so that two fingers face the third one. This
configuration was selected to simplify the structure of the
pulley system, but also because it seems to be the most
versatile – dispositions where all the fingers face the centre
may be more efficient to grasp spherical object, but are quite
limited for items with a large longitudinal dimension (such
as cylinders) or a small thickness. Extrusions are added on
the bottom side of the plate to fit the motor shape.
Figure 22: Top plate of the hand base (2 views)
Figure 21: Exploded view of
the robotic hand's base
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
25 / 58
The bottom plate is divided into two parts; this allow to keep in place the fixed pulleys
(presented in paragraph 2.1.3.2) without any screw, by simply sandwiching their "feet" between
the two disks. The uppermost plate has thin extrusions to host the motor; they both have holes
for the standoff screws.
Figure 23: Two bottom plates (right = uppermost)
2.1.5. Complete Model
Below is depicted the CAD model of the assembled hand, as well as a drawing with several
important dimensions. The total height of the hand is 176mm, and its maximum aperture is
111mm – the aperture angle is around 70°.
Figure 24: CAD model of the complete robotic hand and diagrams with key dimensions (in mm)
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
26 / 58
2.2. List of Components
Once the hand design is complete, the components must be ordered before building a
prototype. This part gives the exhaustive list of components and materials which are required,
and presents a brief cost analysis.
Qty Component Description Reference Vendor
1 Servomotor Dynamixel MX-64T Robot Actuator RO-902-0060-000 trossenrobotics.com
14 Pulley Wheels Pulley for Wire Rope, Acetal, for 1/32" Rope Diameter, 3/8" OD
PUI008-0095-033-A smallparts.com.au
6 Pins for finger
pulleys Type 303 SS Dowel Pin, 1/8" Diameter, 3/4" Length
DP032-019-303-1 smallparts.com.au
10 Pins for under-
actuation system Type 303 SS Dowel Pin, 3mm Diameter, 10mm Length
DP030-010-303-2 smallparts.com.au
8 Countersunk screws
for standoffs 18-8 SS Countersunk Screw, 6-32 Thread, 5/8" Long
SK035C-016-SL-S4 smallparts.com.au
8 Nuts Type 18-8 SS Hex Nut, 2-56 Thread Size, 3/16" Wide, 1/16" High
NT0218C-HX-S4 smallparts.com.au
6 Screws for the
fingers 18-8 SS Pan Head Screw, 2-56 Thread, 5/8" Length
SC022C-016-P-PH-S4
smallparts.com.au
2 Screws for the Motor 18-8 SS Pan Head Screw, 2-56 Thread, 3/4" Length
SC022C-019-P-PH-S4
smallparts.com.au
4 Standoffs Female ThreadedStandoff, 1/4" OD, 2-1/2" Length, 6-32 Thread
2142927 au.elements14.com
1 Polyurethane for the joints
PMC ® - 780 - Trial Unit / rowetrading.com.au
1 Polyurethane for the pads
Vytaflex 30 Urethane Mold Making Rubber - Trial Unit
/ rowetrading.com.au
1 Fishing line for
tendons PowerPro Braided Spectra Fishing Line 100LB 150 Yds
/ tackledirect.com
Table 1: List of Components of the Robotic Hand
In addition to these components, we also need to 3D-print a total of 15 parts modelled with
CAD (3 finger moulds, 3 plates and 9 small elements for the pulley system); these 3D printed
elements are listed further in part 2.3.
The cost calculation depends on the availability of the components. The total price of the
robotic hand is evaluated here for a minimum and a maximum scenario:
The maximum price includes shipping costs to Brisbane and considers that the price of
the whole packs, in particular for the urethane resins (even though only a small fraction
of them is used for the hand). An additional $30 is added for the 3D-printing of the parts.
It is close to the price for building one hand (if more are built, money can be saved by
using the remaining polymers and buying components in large quantities – scale effect)
with no previously available elements in the laboratory.
The minimum price does not include shipping costs and only counts the price of the
components effectively used. It supposes a free access to a 3D-printer. This value
represents the "raw" cost of the materials and components made to use the hand.
For each scenario, the price is given with and without the motor. The basic hardware and
tools (such as screwdrivers, duct tape and plastic cups) involved in the building process of the
hand is considered available – and thus their price is not included.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
27 / 58
Total Price ($AUD)
Without Motor With Motor
Minimum $151 $541
Maximum $409 $828
Table 2: Price Range of the Robotic Hand
The robotic hand can be built with 151A$ worth of materials and components, motor
excluded. In both scenarii, the motor represents more than half of the total price; having one
already available dramatically limits the expenses. In this project, the motor was available, but
all of the other components had to be ordered, resulting in a prototype costing around 400A$.
The "real" price of the hand hence ranges between 400A$ and 800A$, which is very low
for an effective robotic grasper, as of the most commercially available ones cost several
thousands of dollars.
2.3. Construction Process
2.3.1. 3D-Printing
The very first step of the building process is to print all of the custom elements previously
designed and modelled with CAD. There are in total 15 3D-printed parts in the robotic hand
design:
3 identical fingers moulds described in paragraph 2.1.2;
The three plates used to make the hand base showed in paragraph 2.1.4;
9 small elements constituting the underactuation system (cf. 2.1.3) depicted below:
Figure 25: 3D-printed parts for the puley system: (a) motor wheel; (b) and (c) two elements of the motor block;
(d) fixed pulley; (e) half of the first mobile pulley; (f) half of the second mobile pulley.
The 3D printer used for the project was a MakerBot. Although the level of detail was not
optimal (approximately ±0.5mm), that was sufficient for our application.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
28 / 58
Nevertheless, the parts could not be used as printed; some post-treatment was necessary.
First, the support material had to be removed from the cavities and slots, with a long metallic
item such as a screwdriver, and/or a cutter. Special care had to be taken for the finger moulds
to remove the support structure from the joints and pad cavities without damaging the thin
sacrificial walls. Second, most of the parts had to be extensively filed to remove the last bits of
support material, and to make up for the dimensional errors due to the printer relative
inaccuracy.
Last step in the preparation of the 3D-printed components: redrilling the circular holes. The
holes hosting the pins and screws are likely to lack precision; redrilling them facilitates the
further assembly. The holes for press-fitting should not be too wide so that the pins do not slide
freely inside them. The three thin holes for tendon routing evoked in 2.1.2 shall be drilled in
each of the fingers (they are not included in the finger mould CAD design, as they are too small
to be printed correctly, but small slots indicate where to drill); this can be done before or after
the Shape Deposition Manufacturing step.
2.3.2. Compliant parts: Shape Deposition Manufacturing
As explained in paragraph 2.1.2 and 2.3.1, the 3D-printed fingers contain cavities at the
joints and pads locations. The compliant joints and pads are formed through Shape
Deposition Manufacturing (SDM): liquid polymers are poured inside the cavities, and once
cured, the walls are removed, forming the fingers with the embedded flexible elements. This
paragraph details this process. The indications provided in [23] were particularly useful.
First, we seal the finger moulds with duct tape (on the bottom and on the sides) to avoid
spillage and leaks of the liquid urethanes. Additional sealing was provided by using Blu-Tack
on some small breaches in the walls.
Figure 26: Sealed Finger Moulds
Then, we prepare the liquid polyurethanes. They are sold as two separate chemical
compounds which must be mixed with a precise 1:1 or 2:1 ratio.
We mix the compounds for the first urethane (the PMC-780 for the joints, the stiffest and
longest to cure) in a plastic cup with a wooden rod. But as the air bubbles – formed during the
mixing process – could drastically deteriorate the compliant parts quality and resistance, we
eliminate them by degassing the mixture in a vacuum chamber. Then, we pour the degassed
liquid resin into the joint cavities – for more precision, a small syringe was used.
We then repeat the process for the second polyurethane (Vytaflex 30A) and pour it into the
pad cavities.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
29 / 58
Figure 27: (a) Mixed PMC-780; (b) Pouring of the Vitaflex 30A: (c) Filled finger moulds
The curing time of the polyurethanes are 48h for the PMC-780 and 16h for the Vytaflex
30A. Past this delay, the formerly liquid resins are fully set and have formed the flexible parts.
The last step of the SDM process consists in get rid of the unnecessary bits, to finally have
"clean" and functional compliant fingers. After removing the sealing duct tape and Blu-tack,
we can cut the surplus urethanes on the sides with a sharp blade (type cutter or scalpel). Then,
the sacrificial walls (which purpose was to contain the polymers while liquid) can be cut away
to obtain the desired compliance. The joint walls can be cracked and removed by hand by
flexing the fingers, while cutting is really necessary for the pads (the blade shall not damage
the flexible elements, or else it could lead to crack propagation and tearing after repeated use).
Figure 28: (a) Cured Fingers; (b) Polymer surplus removed; (c) Final finger (sacrificial walls removed)
2.3.3. Assembly
Once the SDM performed to fabricate the fingers, all parts are ready to be assembled.
2.3.3.1. Sub-blocks
First, we build the sub-assemblies such as the pulley or motor blocks.
The pulley blocks are obtained by press-fitting the stainless steel pins. We use a vice bench
to force the pins through the holes: the ABS material having some elasticity, it deforms to let
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
30 / 58
the pin go through the purposely too narrow hole, and after the pressing, the pin stays in place
without further fixation (the friction is enough to retain it). In the case of the two mobile pulleys,
the pins are pressed through the first half, then the pulley wheels are placed, and then the second
half is pressed on top of the structure:
Figure 29: Press-fitting assembly of a mobile pulley
A similar procedure is used for the press fitting of the pins / pulley wheels inside the others
parts. However, the pulley must be in place since the beginning of the pressing, else the slot
becomes too narrow to insert them. In the end, all of our pulley sub-blocks are assembled:
Figure 30: (a) Pulley sub-blocks of the underactuation system; (b) Fingers with pulleys
Finally, we can mount the custom pulley wheel and the elements of the motor block on the
motor itself before proceeding with the general assembly. The motor is put upside-down, and
the two elements are directly screwed on it:
Figure 31: Motor assembly
The motor side of the first tendon can be attached to the motor wheel and routed through
the motor block at that point.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
31 / 58
2.3.3.2. Hand assembly
Starting with the bottom plate, we place the two fixed pullies in their slots, and maintain
them in place by putting the second bottom plate on top of it. The standoffs can be screwed to
fix this assembly, and the motor block can be placed in its slot. The free end of the motor tendon
can already be attached to the first moving pulley (red tendon on figure 20 paragraph 2.1.3.2).
Figure 32: Assembly – Bottom part (Process)
In parallel, the fingers are screwed to the top plate. The tendon linking the two adjacent
fingers (blue tendon on figure 20, paragraph 2.1.3.2) and going through the second moving
pulley shall be installed at this point. As both ends are fixed to finger capstans, the tension can
easily be tuned (even after the completion of the assembly). The tendon going through the third
finger can be placed, be must be loose.
Figure 33: Assembly – Top part (2 views)
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
32 / 58
Finally, the bottom and the top part are attached together by screwing the top part of the
assembly to the four standoffs. The last tendon (green tendon on figure 20, paragraph 2.1.3.2)
shall be attached to the second moving pulley, routed through all the underactuation system,
and fixed to the capstan of the remaining finger. The three tendon ends attached to the capstans
(especially the one on the individual finger) can be used to tune the tension at rest of the whole
transmission system.
Figure 34: Complete Robotic Hand
The final hand weights less than 400g. Its dimensions are close to those measured on the
CAD model: 180mm high, a base diameter of 100mm and a maximal grasp aperture of 100mm.
2.4. Power Supply and Control
All of the actuation comes from the Dynamixel servomotor; hence it is the only element
which needs power supply and which can be controlled. Thanks the electronics integrated in
the Dynamixel servomotor, the architecture of for control and power supply is simple, and very
few components and connections are required.
The Dynamixel MX-64T communicates with a TTL protocol (3-pin port) and requires a
12V power supply. Four elements are involved in this powering and controlling process:
A computer sends and receives data to control the robotic hand (it sends commands,
receives feedback and measurements from the sensors). It is connected through USB to
a device called "USB2Dynamixel".
The USB2Dynamixel device links the computer to the rest of the system. One side is
connected through USB to the computer, while the other exchanges data with the
"SMPS2Dynamixel" adapter with a 3-pin connector.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
33 / 58
The SMPS2Dynamixel adapter receives power from a 12V power supply, and is linked
to the USB2Dynamixel and to the motor with two 3-pin connectors. It has a double
purpose: feed the electrical power it receives to the motor, and transmit the data between
the USB2Dynamixel device and the motor.
The Dynamixel MX-64T motor (the robotic hand) receives both power and instructions
from the SMPS2Dynamixel adapter through a 3-pin connector. It also sends back the
signals from its sensors. As it includes a built-in microcontroller, all of this processing
is handled internally.
The diagram below depicts the connections and data/power exchanges in the system:
Figure 35: Diagram of the electrical connections of the system
Figure 36: Picture of the Connected Robotic Hand
The software and programming used to control the robotic hand are detailed in part 3.1.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
34 / 58
3. Characterisation of a Compliant Grasp
Now that the functional robotic grasper is built and functional, it can be used to characterise
soft grasp. A series of experiments were conducted to try and evaluate the grasping abilities of
this compliant hand. This section details the principle, design and outcome of these
experiments, as well as analyses and possible interpretations of the results.
3.1. Prerequisite: Programming the Hand for Grasping
Before considering testing the grasp capabilities of the robotic hand, we need to program
the actual grasp action. This part presents the control structure of the motor electronics, and the
software and scripts used to automate the grasp.
3.1.1. Functioning of the Dynamixel MX-64T Servomotor
Most of the information in this paragraph are drawn from the motor specifications [22].
The protocol used by the Dynamixel MX-64T servomotor is a "Half duplex Asynchronous
Serial Communication (8bit,1stop, No Parity)" [22]. This means that it can send and receive
data in 8-bit packets; but due to the half-duplex communication system, information cannot
be sent and received simultaneously.
The motor is controlled by reading and assigning hexadecimal values to specific
addresses in its embedded microcontroller. Each of these values is 8-bit long and contains data
about the current motor status or operation. These 8-bit data blocks (or bytes) have the
following properties:
EEPROM or in RAM: the data contained in the EEPROM area is kept after the power
is turned off, while the data in the RAM is only saved until the device is shut down (and
reset to the initial value after turning it on again).
Access: Some bytes can only be read (model number of the motor, sensor values, etc.)
while others can be both read and written, allowing to command the motor (mode of
functioning, rotation speed, LED on/off, etc.)
Size: Although all addresses can only contain 8-bit values (one byte), data with more
than 256 possible values requires more space. In this case, the data is split into two bytes
on two adjacent addresses: the first one contains the lowest 8 bits, and the second the
highest 8 bits.
The meaning of the bytes at the different addresses is detailed in the control table provided
by Robotis and present in appendix B. All the values are hexadecimal 8-bit numbers, and it is
necessary to refer to the documentation to convert them into understandable quantities.
Controlling the robotic hand will mostly consist in reading the data from the sensor bytes,
and command the appropriate reaction by assigning values to the speed or position bytes of the
servomotor. Due to this architecture, if a value is assigned to an address, the motor will keep
following this order until the value is replaced by another or the power is turned off. In
particular, if the connection with the computer breaks, the motor will maintain the behaviour
corresponding to the last given orders (last assigned values) until the connection is restored
or the device is shut down.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
35 / 58
We can finally note that the motor has three modes of functioning: wheel mode, joint mode,
and multi-turn mode:
In the wheel mode, the user assigns a constant rotation speed and the motor spins
infinitely (until the speed is changed).
In the joint mode, the movement is limited between two maximal angles (the span is
inferior to 360°). The user inputs a goal angle; the motor then spins until it reaches the
angle, and then stops.
The multi-turn mode is similar to the joint mode, as the user decides a goal position and
the motor reaches it, but the movement is no longer limited to a range of 360°. The
reachable positions extend to several turns in both directions.
As explained in paragraph 3.1.3, only the wheel mode was used to control the robot.
3.1.2. Basic Operations with the RoboPlus Software
Once the robotic hand connected to the power source and to the computer according to the
diagram on part 2.4, the easiest way to control it is to use the "Dynamixel Wizard" of software
RoboPlus provided by Robotis.
After detecting and connecting to the motor, a window showing the instantaneous values of
all the bytes appears. In this interface, we see the address number and its meaning next to each
byte; it is possible to manually change the values of the writable bytes by selecting it and using
the commands appearing on the side.
Figure 37: RoboPlus interface (this example does not match our motor or control table) [24]
(1) Connected devices; (2) List of all the addresses/bytes; (3) Commands for the selected byte
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
36 / 58
Although relatively clear, this interface is not very practical (even for simple uses). Besides,
it is not possible to program a sequence of actions with loops and conditions (if we do not have
an external controller), and we cannot retrieve the measured values over time (only the
instantaneous values are visible) to analyse the behaviour of the robot.
Consequently, we need another way to control the robot. This software was only used to
check whether the motor is correctly connected, and if we want to assign some values manually.
3.1.3. Matlab Grasp Script
Thanks to the Dynamixel Software Development Kit (SDK) provided by Robotis, it is
possible to control the servomotor with various programing languages (such as C, python or
Matlab). It is therefore possible to use one of these – instead of the basic software described in
the previous paragraph – to create sequences of grasp motions, handling feedback from the
sensors and saving data during the whole experiment. Matlab was chosen for its simplicity,
convenience, and ability to efficiently draw graphical representations of the data.
3.1.3.1. Matlab Configuration and SDK Specificities
Matlab R2016b was used on a Windows 10 laptop (with Visual Studio 2015 installed).
The first step is to download the last version of the Dynamixel-SDK-master on Github, and
follow the configuration instructions provided by Robotis on [25] and/or the more recent ones
on [26]. Two protocols were available in the SDK, 1.0 and 2.0; the protocol 1.0 shall be used
(2.0 provides more functionalities, but is only handled by the Dynamixel "Pro" servomotors).
The script written to grasp objects is based on the "read_write.m" file provided in the SDK.
The main specificities of the script are:
The configuration code at the beginning and at the end to load/unload the libraries and
connect / disconnect the computer to the motor.
It frequently uses the read1ByteTxRx function provided in the SDK, which "reads" the
value of a byte at a specific address. This function takes as inputs the information to
identify the motor and the address we want to read, and returns the instantaneous value
of this byte. An alternate version, called read2ByteTxRx¸ reads the value of variables
coded on two bytes.
It also uses the write1ByteTxRx function provided in the SDK, which "writes" / "assigns"
a specific value at a specific address. This function takes as inputs the information to
identify the motor, the address where we want to write and the value we want to assign,
and implements this value inside the motor's microcontroller. An alternate version,
called write2ByteTxRx¸ assigns a value to variables coded on two bytes.
Verifications are systematically performed to check if the "read" or "write" function
worked as intended.
Except from these features, the script only uses general Matlab syntax and functions.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
37 / 58
3.1.3.2. Principle of the Grasp Script
The full Matlab grasp script is presented in Appendix C; this paragraph only explains its
general principle. The general idea is to use force control, or in other words to close the hand
until a load threshold is reached.
We first set a limit load. Once the script started, the hand closes at a constant speed; the
computer reads the intensity measured by the load sensor periodically during this phase. Once
the measured load rises above the limit (which either means that the object has been grasped or
that the hand is fully closed with the fingers touching each other), the motor stops, keeping the
hand closed. After a few seconds, the hand releases the grasp and opens again until the initial
position is reached.
The closing speed, time interval between the load checks and grasp duration can be set
inside the script. Also, by tuning the limit load, it is possible to achieve softer or firmer grasps
(by respectively lowering or increasing the limit). This limit should however not be too high,
as not reaching it would keep the closing motion going and potentially damage the object, the
hand or the motor.
Apart from the load, the script also reads multiple other values provided by the sensors
embedded in the motor, in particular the position, speed, voltage and temperature of the motor.
These measurements are printed directly in the Matlab command window during the grasping
(allowing the user to check that everything is working fine) but also saved in matrices – and
can then be plotted afterwards.
3.1.3.3. Basic Testing
Preliminary tests were run to make sure the script (and the robotic hand) produces a good
grasp. The idea was simple: hold the robotic device upside down on top of an object, run the
script, and see whether the object is grasped or not.
Six objects (varying in size, shape, mass and stiffness) were used for this test: a paper roll,
a marker, a plastic cup, a duct tape roll, a clothespin and a cream filled cookie. For all of them,
the speed of the motor was set to approximately 4.5 RPM and the limit load to 10% of the
maximum torque of the motor. The robotic hand attempted to grasp the items from several
orientations, and succeeded every time, except when the cookie and the clothespin were laid
flat on the table (too thin to be reached).
Figure 38: (a) Objects grasped for the test; (b) Speed and load over time for one of the grasping tests
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
38 / 58
We can deduce that the grasp provided by this script is satisfactory (for objects at least
1cm-thick); it can be used for the characterisation of the hand that follows.
3.2. Building Experimental Grasp Probability Maps
3.2.1. Purpose and Principle
Due to its compliance, the robotic hand built for this project can supposedly conform to the
shape of the grasped object and compensate for the variability of an unknown environment.
The purpose of this characterization is to quantify the extent of this adaptability. During this
experiment, we are mapping the probability of successfully grasping an object depending on
the relative position between the grasper and the object.
If the object (which size and shape are chosen to be optimal for the grasper) is placed at the
centre of the hand, the grasp will succeed every time – it would even if the hand was not
compliant. However, if the object is now translated from the previous location, the grasp may
or may not be successful, depending on how big the shift is and on how much the grasper is
able to adapt.
By changing this relative distance between the centre of grasp and the centre of the object,
and attempting a grasp for each location, we can draw a map showing where the grasp is
successful and where it fails. If we symbolize a successful grasp by a 1 and a failure by a 0,
reproduce the experiment several times, and average the results, we obtain a map of the grasp
probability. Analysing the shape, size, and gradient of these probability maps will show how
robust the grasp is, but also give information about the influence of compliance and other design
choices on the robotic hand performances.
3.2.2. Experimental Setup and Procedure
The grasped object chosen for the experiment is a tennis ball (mass ≈56g, diameter ≈65mm).
Its size is particularly adapted for the hand aperture, its spherical shape remove the influence
of the angles / orientation, and its rough surface improves the grip.
As stated in the previous paragraph, we are making the relative distance between the ball
and the hand vary. The most practical and accurate way to do so is to keep one at a static
position and move the other one around it. We hence hung the ball to a rigid structure at a
fixed location (x=0, y=0, z=H in our frame), and displaced the robotic hand below it.
Figure 39: (a) Complete setup with rigid structure; (b) Hand positioning from above
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
39 / 58
With (x = 0 ; y = 0) being the centre position, grasps were attempted every 5mm from
–30mm to +40mm (15 values) along the x axis and from –20mm to +20mm along the y axis (9
values), which makes a total of 15*9 = 135 measurements per mapping. As explained in
paragraph 3.2.1, a successful grasp is recorded as a 1 and a failure as a 0 (occasionally, 0.5
scores were given for successful but very unstable grasps). These measurement were repeated
six times and averaged to obtain a grasp probability map.
Figure 40: (a) Example of one-time grasp recording for H = 155mm; (b) Average map for H = 155mm
The limits ±20mm along the y axis were chosen as the fingers started to touch the ball for
further y values, losing the significance of "relative position between the hand and the ball".
Nevertheless, additional measurements were performed up to y = ± 100mm to try and complete
the grasp zone shape (which added 14 new y values).
Grasp maps were measured for three ball heights:
H = 155mm, which placed the centre of gravity of the ball below the centre of the grasp
and allowed contact with the pads on both fingers phalanges;
H = 175mm, which placed the centre of gravity of the ball approximately at the same
height as the centre of the grasp;
H = 190mm, which placed the centre of gravity of the ball above the centre of the grasp,
and only allowed contact with the top pads.
As a result, we hence have a three-dimensional mapping on the grasp probability of the
robotic hand.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
40 / 58
3.3. Results and Analysis
3.3.1. Grasp Probability Maps
The grasp probability maps obtained through the experiments described above are
represented below. The orientation of the robotic hand was identical for all of them: fingers
along the y axis, with the adjacent ones at the top and the single one at the bottom (as depicted
on the maps).
Figure 41: Grasp probability maps (colour maps) for y between -20mm and +20mm
Figure 42: 3D grasp probability map (contour plot) for y between -20mm and +20mm
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
41 / 58
Figure 43: Full grasp probability map (H=155mm)
with diagrams showing whether the ball is in (0;0) or pushed by the hand
Figure 44: Full grasp probability maps (H = 175mm and H =190mm)
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
42 / 58
Figure 45: Full 3D grasp probability map (contour plot)
3.3.2. Analysis and Interpretation
This analysis will focus more on the grasp probability maps comprised between y = –20mm
and +20mm, as they are more meaningful (the x and y really represent the relative distance
between the centre of grasp and the centre of gravity of the object).
3.3.2.1. General Shape of the Maps
From the general shape of the grasp probability maps, we can notice that:
The successful grasp area is relatively big (in yellow, where p = 1): ±10 to 25mm
along x and ±20mm along y. Compared to the diameter of the ball (65mm), it is the
equivalent of a 30% shift in both directions. This really proves that thanks to its
compliance, the hand can adapt and compensate substantial positioning errors.
Figure 46: Successful grasp despite a substantial positioning error
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
43 / 58
The geometrical shape formed by the successful grasp zone reflects the asymmetry of
the finger layout (2 opposed to 1), forming a trapezoid. The direction is inverted: the
robotic hand is oriented with the two adjacent fingers at the top whereas the trapezoid
largest size is at the bottom. This inversion is logical, because if we move the hand
towards the negative values of y, the two adjacent fingers will be closer to the ball and
will contact it first during the grasping – providing more contact points / surfaces, hence
improving the grasp. Conversely, if we move the hand towards the negative values of y,
the single finger will be closer to the ball and will contact it first – having a single contact
point decreases the stability.
The transition between grasp success and failure is not sharp: there is a probability
gradient zone all around the successful grasp zone where the probability progressively
decreases from 1 to 0. This gradient zone is 5 to 15mm wide.
3.3.2.2. Specific Comparisons
More advanced analyses can be led by focusing on specific samples of the data to study the
influence of certain factors.
In particular, we can analyse the effect of the ball altitude H. Logically, grasp
performances should be optimal for H = 155mm, where the ball is in contact with all of the
finger pads (power grasp), and should decline when H increases (progressively diminishing the
contact surface during the grasp). This expected behaviour can already be seen by comparing
the aspect of the grasp maps (the surface area of the successful grasp zone decreases for higher
values of H). The two graphs below compare the grasp probabilities along one axis (either x or
y, the other one being fixed) for the three heights:
Figure 47: Effect of H on the grasp probability (Left: x = +30mm, y varies; Right = y=0, x varies)
Besides confirming that grasp adaptability decrease with H, these graphs show that the loss
is much more important from H = 155mm to 175mm than from 175mm to 190mm – the last
two have somewhat similar performances, even though H = 175mm remains superior.
Finally, we can also notice that, in this two cases, the probabilities at the boundaries seem
to be relatively independent of the height. For x = +30mm, p(-20) = 0.4 and p(10) = 0 for every
H; for y=0, the probability reaches zero for x =-30 and +35 (except for H=155m which has a
5mm offset).
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
44 / 58
A second analysis we can perform is the evaluation of the difference between both sides
of the grasp zone (i.e. compare the grasp probability for y = +20mm and y = -20mm). The idea
is to quantify the effect of the hand asymmetry:
Figure 48: Variation of the grasp zone width between y = +20 and -20mm
For H = 155mm and 175mm, the grasp zone at y = +20 is 43% less wide than at y = -20.
For H = 190mm, it is even a little more, with a 50% width reduction. These values are a little
lower than the physical difference of width between the sides of the grasper (1-fingered side:
w=20mm; 2-fingered side: w = 20 + 20 + 8 (spacing) = 48mm), corresponding to a width
reduction of 58%.
We can finally notice on the curves than the slopes are quite similar: the asymmetry does
not seem to affect the probability gradient. An explanation of this observation could be that the
ball is generally caught by two fingers only at the limit of the grasp zone, negating the additional
stability provided by the third one around the border.
3.3.3. Synthesis and Further Studies
Through this experiment and the subsequent analysis, we were able to graphically represent
the adaptability of the robotic hand with grasp probability maps.
Thanks to its compliance, the prototype can compensate relatively big positioning errors
and produce stable grasps. The structural asymmetry is reflected in the performances, and shall
be taken into account if the hand were to be used in real conditions (for instance by trying to
position closer to the side with the two adjacent fingers). Finally, the flexibility – and the control
loss that comes with it – generates some uncertainty, which appears in the gradient zone where
the grasp probability is neither 1 nor 0.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
45 / 58
Using the same experimental procedure, other deeper analyses can be conducted, such as:
Reproducing the experiments with smaller length intervals and/or more grasp iterations
for the probability calculation in order to achieve a better resolution and precision.
Building and testing a similar hand with less (or even no) compliance, to determine
by comparison what real impact compliance has on the grasping capabilities.
Repeating the experiment with different parameters to analyse their influence, for
instance:
o With a different ball: smaller/bigger, lighter/heavier, smoother/rougher or
stiffer/more flexible;
o With a slightly different robotic hand: similar structure, but different stiffness
for the pads and/or joints, or different finger configuration and/or number;
o With a different object shape: polyhedron, cylinder, or asymmetric solid (this
would however require to consider the relative orientation between the object
and the hand as a parameter).
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
46 / 58
4. Critical Review of the Project
This section is a brief reflection about the performance on this thesis project. It compares
the actual progress with the initial planning, analyses the evolution of the thesis objectives and
check if they all have been met in the end.
4.1. Respect of the Schedule
The original planning developed in the project proposal [3] divided the project as follows:
Semester 1: Bibliography review (March), Design of the robotic hand (April – May),
ordering and printing of the components (June).
Semester 2: Construction of the hand (July – August), Testing and Experiments
(September – October), Thesis Writing (September to November).
Everything went on schedule during semester 1; the design of the hand was complete and
the orders placed by mid-June. Then, a huge delay in the ordering process (which took three
months in total) retarded the rest of the execution: the component only arrived in late
September, leaving only one month for building and testing the robot – and completing the
thesis. Nevertheless, despite a heavy workload, the hand was built, several experiments were
led and all the deadlines were met on time.
In sum, the schedule have been followed for the first semester and squeezed during the
second, imposing a hectic rhythm during the last few weeks. More experiments and analyses
could have been done with more time.
4.2. Project Goals
The core of the project have always been to design and build a compliant robotic hand using
rapid prototyping techniques. However, the secondary goal evolved throughout the year.
Originally, the idea was to mount the hand on a robotic arm and program it (using computer
vision) to detect and move several cookies from one box to another. As the interface with the
arm added a lot of complexity to the design, the idea of connecting the hand was slowly
abandoned, as well as the detection and programming that went with it. The interest shifted
from computer vision to grasp analysis, and the objective became to analyse and evaluate how
compliance could improve the grasp abilities of a grasper.
All the final goals were met: the hand was fully designed and build (and worked!), and could
be used for the expected compliant grasp analysis.
4.3. Evaluation and Suggestions for Further Projects
Overall, I feel that the project was correctly handled as all the objectives were met. Although
the ordering delay retarded the progress, additional work during the late phases could make up
for it. Because of this, my biggest recommandation for future project would be to plan well in
advance any task or order requiring a third party, leaving as much buffer time as possible to
compensate any trouble.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
47 / 58
Conclusion
During this project, an efficient and adaptive robotic grasper was successfully designed,
built, and used to investigate and quantify the adaptability of a soft (compliant) grasp.
On the basis of previous works on low-cost compliant graspers (in particular [1] and [2]), a
CAD model was elaborated and the corresponding prototype was built. Thanks to judicious
conception choices, such as the use of 3D-printing, underactuation and compliant joints, the
resulting hand ends up being inexpensive and easy to command, but still robust and capable to
grasp a wide range of objects with a simple force control algorithm. The capabilities and limits
of the robotic hand were tested during a grasp experiment, which purpose was to map the
probability of successfully grasping a given object depending on positioning errors. The
resulting grasp probability maps showed that the compliant grasp could compensate relatively
big variations in the object position (up to ±20mm in both directions). They also highlighted
several properties of the grasp, such as its asymmetry (reflecting the hand's asymmetry), the
presence of an uncertainty zone (with the probability gradient between the success and failure
zones) or the decline of its performances with the altitude.
This study can be continued in many directions. As stated in paragraph 3.3.3, the
experimental procedure can be reproduced with some variations to obtain new results and
analyse how specific properties – of the hand, such as the joint stiffness or the number of
fingers; or of the grasped object, such as its shape, roughness and size – can influence the
compliant grasp. The experimental setup can be improved to make the measurements more
efficient, for example by automating he grasp attempts with an X-Y level. Finally, a more
advanced project could explore the inverse problem: creating methods and algorithms which,
given an objective grasp probability map, would generate a robotic hand design achieving such
performances (or at least would give some guidelines and recommendations for designing this
hand).
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
48 / 58
Acknowledgement
I would like to thank my supervisor Dr Surya P. N. Singh for his involvement all over the
year. The weekly meetings he hosted were a great way to work regularly and have constructive
feedback on my progress. I really appreciated his kindness and motivation, and the insights he
regularly provided guided me efficiently throughout the year.
I would also like to thank the whole team from the Robotic Design Lab (in 47-311), who
welcomed me for the experimental side of the project (hand building and testing), and in
particular Edwin and Will, for their precious help during the hand fabrication.
I would finally like to thank my family who followed every step of this thesis project and
supported me day after day from the other side of the planet.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
49 / 58
References
[1] G. Franchi, A. ten Pas, R. Platt, and S. Panzieri, ‘The Baxter Easyhand: A Robot Hand that
Costs $150 US in Parts’, in International Conference on Intelligent Robots and Systems,
2015, pp. 2917–2922.
[2] R. R. Ma, L. U. Odhner, and A. M. Dollar, ‘A Modular, Open-Source 3D Printed
Underactuated Hand’, in International Conference on Robotics and Automation (ICRA),
2013, pp. 2737–2743.
[3] Alexandre Cayla, ‘One Sweet Robot - Project Proposal’. The University of Queensland,
2016.
[4] J. Lenarcic, T. Bajd, and M. M. Stanišić, Robot Mechanisms, vol. 60. Springer Science &
Business Media, 2012.
[5] R. M. Murray, Z. Li, and S. S. Sastry, A Mathematical Introduction to Robotic
Manipulation. CRC press, 1994.
[6] B. Siciliano and O. Khatib, Springer handbook of robotics. Springer Science & Business
Media, 2008.
[7] V.-D. Nguyen, ‘Constructing Force-Closure Grasps’, Int. J. Robot. Res., vol. 7, no. 3, pp.
3–16, 1988.
[8] V.-D. Nguyen, ‘The Synthesis of Stable Force-Closure Grasps.’, DTIC Document, 1986.
[9] L. Birglen and C. M. Gosselin, ‘Force Analysis of Connected Differential Mechanisms:
Application to Grasping’, Int. J. Robot. Res., vol. 25, no. 10, pp. 1033–1046, 2006.
[10] L. Birglen, T. Laliberté, and C. M. Gosselin, Underactuated robotic hands, vol. 40.
Springer, 2007.
[11] L. Birglen, ‘Type synthesis of linkage-driven self-adaptive fingers’, J. Mech. Robot.,
vol. 1, no. 2, p. 21010, 2009.
[12] T. Laliberté, L. Birglen, and C. Gosselin, ‘Underactuation in robotic grasping hands’,
Mach. Intell. Robot. Control, vol. 4, no. 3, pp. 1–11, 2002.
[13] T. Moyer, E. L. Faulring, and J. J. Santos-Munne, ‘One motor finger mechanism’, Jun-
2013.
[14] C. Ishii, Recognition of Finger Motions for Myoelectric Prosthetic Hand Via Surface
EMG. INTECH Open Access Publisher, 2011.
[15] C. Gosselin, F. Pelletier, and T. Laliberte, ‘An anthropomorphic underactuated robotic
hand with 15 dofs and a single actuator’, in Robotics and Automation, 2008. ICRA 2008.
IEEE International Conference on, 2008, pp. 749–754.
[16] L. U. Odhner et al., ‘A compliant, underactuated hand for robust manipulation’, Int. J.
Robot. Res., vol. 33, no. 5, pp. 736–752, 2014.
[17] A. M. Dollar and R. D. Howe, ‘A Robust Compliant Grasper via Shape Deposition
Manufacturing’, IEEEASME Trans. Mechatron., vol. 11, no. 2, pp. 154–161, 2006.
[18] L. Biagiotti, P. Tiezzi, G. Vassura, and C. Melchiorri, ‘Modelling and Controlling the
Compliance of a Robotic Hand with Soft Finger-pads’, in Multi-point interaction with real
and virtual objects, Springer, 2005, pp. 55–73.
[19] K. Tai, A.-R. El-Sayed, M. Shahriari, M. Biglarbegian, and S. Mahmud, ‘State of the
Art Robotic Grippers and Applications’, Robotics, vol. 5, no. 2, p. 11, Jun. 2016.
[20] A. M. Dollar and R. D. Howe, ‘The Highly Adaptive SDM Hand: Design and
Performance Evaluation’, Int. J. Robot. Res., vol. 29, no. 5, pp. 585–597, 2010.
[21] ‘Yale OpenHand Project - Model T’. [Online]. Available:
https://www.eng.yale.edu/grablab/openhand/model_t.html.
[22] ‘Dynamixel MX-64 Servomotor Specifications’. [Online]. Available:
http://support.robotis.com/en/product/dynamixel/mx_series/mx-64.htm.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
50 / 58
[23] ‘Baxter EasyHand Assembly Instructions’, 2015. [Online]. Available:
http://www.ccs.neu.edu/research/helpinghands/easyhand/easyhand_assy_instructions.html
.
[24] ‘RoboPlus - Dynamixel Wizard Documentation’. [Online]. Available:
http://support.robotis.com/en/software/roboplus/dynamixel_monitor.htm.
[25] ‘Dynamixel SDK with Matlab (Robotis)’. [Online]. Available:
http://support.robotis.com/en/software/dynamixel_sdk/usb2dynamixel/windows/matlab.ht
m.
[26] ‘Dynamixel SDK with Matlab (Github)’, GitHub. [Online]. Available:
https://github.com/ROBOTIS-GIT/DynamixelSDK.
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
51 / 58
Appendices
Appendix A: Exploded View of the Robotic Hand
The sub-blocks are not exploded for clarity purposes. Also, the two movable pulleys are not
represented.
The blue legends indicate components / hardware; the red designate 3D-printed parts / sub-
blocks.
Figure 49: Exploded View of the Robotic Hand
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
52 / 58
Appendix B: Control Table of the Dynamixel MX-64T
This table is drawn from Robotis's specifications [22].
Area Address
(Hexa) Name Description Access*
Initial Value
(Hexa)
E
E
P
R
O
M
0 (0X00) Model Number(L) Lowest byte of model number R 54 (0X36)
1 (0X01) Model Number(H) Highest byte of model number R 1 (0X01)
2 (0X02) Version of Firmware Information on the version of firmware R -
3 (0X03) ID ID of Dynamixel RW 1 (0X01)
4 (0X04) Baud Rate Baud Rate of Dynamixel RW 34 (0X22)
5 (0X05) Return Delay Time Return Delay Time RW 250 (0XFA)
6 (0X06) CW Angle Limit(L) Lowest byte of clockwise Angle Limit RW 0 (0X00)
7 (0X07) CW Angle Limit(H) Highest byte of clockwise Angle Limit RW 0 (0X00)
8 (0X08) CCW Angle Limit(L) Lowest byte of counterclockwise Angle Limit RW 255 (0XFF)
9 (0X09) CCW Angle Limit(H) Highest byte of counterclockwise Angle Limit RW 15 (0X0F)
11 (0X0B) the Highest Limit Temperature Internal Limit Temperature RW 80 (0X50)
12 (0X0C) the Lowest Limit Voltage Lowest Limit Voltage RW 60 (0X3C)
13 (0X0D) the Highest Limit Voltage Highest Limit Voltage RW 160 (0XA0)
14 (0X0E) Max Torque(L) Lowest byte of Max. Torque RW 255 (0XFF)
15 (0X0F) Max Torque(H) Highest byte of Max. Torque RW 3 (0X03)
16 (0X10) Status Return Level Status Return Level RW 2 (0X02)
17 (0X11) Alarm LED LED for Alarm RW 36 (0X24)
18 (0X12) Alarm Shutdown Shutdown for Alarm RW 36 (0X24)
20 (0X14) Multi Turn Offset(L) multi-turn offset least significant byte (LSB) RW 0 (0X00)
21 (0X15) Multi Turn Offset(H) multi-turn offset most significant byte (MSB) RW 0 (0X00)
22 (0X16) Resolution Divider Resolution divider RW 1 (0X01)
R
A
M
24 (0X18) Torque Enable Torque On/Off RW 0 (0X00)
25 (0X19) LED LED On/Off RW 0 (0X00)
26 (0X1A) D Gain Derivative Gain RW 0 (0X00)
27 (0X1B) I Gain Integral Gain RW 0 (0X00)
28 (0X1C) P Gain Proportional Gain RW 32 (0X20)
30 (0X1E) Goal Position(L) Lowest byte of Goal Position RW -
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
53 / 58
R
A
M
31 (0X1F) Goal Position(H) Highest byte of Goal Position RW -
32 (0X20) Moving Speed(L) Lowest byte of Moving Speed (Moving Velocity) RW -
33 (0X21) Moving Speed(H) Highest byte of Moving Speed (Moving Velocity) RW -
34 (0X22) Torque Limit(L) Lowest byte of Torque Limit (Goal Torque) RW ADD14
35 (0X23) Torque Limit(H) Highest byte of Torque Limit (Goal Torque) RW ADD15
36 (0X24) Present Position(L) Lowest byte of Current Position (Present Velocity) R -
37 (0X25) Present Position(H) Highest byte of Current Position (Present Velocity) R -
38 (0X26) Present Speed(L) Lowest byte of Current Speed R -
39 (0X27) Present Speed(H) Highest byte of Current Speed R -
40 (0X28) Present Load(L) Lowest byte of Current Load R -
41 (0X29) Present Load(H) Highest byte of Current Load R -
42 (0X2A) Present Voltage Current Voltage R -
43 (0X2B) Present Temperature Current Temperature R -
44 (0X2C) Registered Means if Instruction is registered R 0 (0X00)
46 (0X2E) Moving Means if there is any movement R 0 (0X00)
47 (0X2F) Lock Locking EEPROM RW 0 (0X00)
48 (0X30) Punch(L) Lowest byte of Punch RW 0 (0X00)
49 (0X31) Punch(H) Highest byte of Punch RW 0 (0X00)
68 (0X44) Current(L) Lowest byte of Consuming Current RW 0 (0X00)
69 (0X45) Current(H) Highest byte of Consuming Current RW 0 (0X00)
70 (0X46) Torque Control Mode Enable Torque control mode on/off RW 0 (0X00)
71 (0X47) Goal Torque(L) Lowest byte of goal torque value RW 0 (0X00)
72 (0X48) Goal Torque(H) Highest byte of goal torque value RW 0 (0X00)
73 (0X49) Goal Acceleration Goal Acceleration RW 0 (0X00)
*In the Access column, "R" corresponds to read-only (data that only be collected, such as
sensor values) and "RW" corresponds to read-and-write (possibility to assign values).
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
54 / 58
Appendix C: Matlab Grasp Script
This is the Matlab script used to trigger the grasp routine described in paragraph 3.1.3. It is
based on the "read_write.m" script provided in the Dynamixel SDK.
It uses several functions and libraries from the SDK and the custom function "Check_error"
(the script for this function is provided after).
Grasp.m
%% Settings
clc;
clear all;
lib_name = '';
if strcmp(computer, 'PCWIN')
lib_name = 'dxl_x86_c';
elseif strcmp(computer, 'PCWIN64')
lib_name = 'dxl_x64_c';
elseif strcmp(computer, 'GLNX86')
lib_name = 'libdxl_x86_c';
elseif strcmp(computer, 'GLNXA64')
lib_name = 'libdxl_x64_c';
end
% Load Libraries
if ~libisloaded(lib_name)
[notfound, warnings] = loadlibrary(lib_name, 'dynamixel_sdk.h',
'addheader', 'port_handler.h', 'addheader', 'packet_handler.h');
end
% Control table address
ADDR_MX_CW_LIMIT = 6;
ADDR_MX_CCW_LIMIT = 8;
ADDR_MX_TORQUE_ENABLE = 24;
ADDR_MX_GOAL_POSITION = 30;
ADDR_MX_MOVING_SPEED = 32;
ADDR_MX_PRESENT_POSITION = 36;
ADDR_MX_PRESENT_SPEED = 38;
ADDR_MX_PRESENT_LOAD = 40;
% Protocol version
PROTOCOL_VERSION = 1.0;
% Default setting
DXL_ID = 1; % Dynamixel ID: 1
BAUDRATE = 57142.9;
DEVICENAME = 'COM4'; % Port used
TORQUE_ENABLE = 1;
TORQUE_DISABLE = 0;
DXL_MINIMUM_POSITION_VALUE = 0;
DXL_MAXIMUM_POSITION_VALUE = 0;
DXL_STATUS_THRESHOLD = 10;
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
55 / 58
ESC_CHARACTER = 'e'; % Key for escaping loop
COMM_SUCCESS = 0; % Communication Success Value
COMM_TX_FAIL = -1001; % Communication Tx Failed
%% Connection to the motor
port_num = portHandler(DEVICENAME);
% Initialize PacketHandler Structs
packetHandler();
index = 1;
dxl_comm_result = COMM_TX_FAIL; % Communication result
dxl_goal_speed = 0; % Goal speed
dxl_error = 0; % Dynamixel error
dxl_present_position = 0; % Present position
% Open port
if (openPort(port_num))
fprintf('Succeeded to open the port!\n');
else
unloadlibrary(lib_name);
fprintf('Failed to open the port!\n');
input('Press any key to terminate...\n');
return;
end
% Set port baudrate
if (setBaudRate(port_num, BAUDRATE))
fprintf('Succeeded to change the baudrate!\n');
else
unloadlibrary(lib_name);
fprintf('Failed to change the baudrate!\n');
input('Press any key to terminate...\n');
return;
end
%% Initial value assignments
% Enable Dynamixel Torque
write1ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID, ADDR_MX_TORQUE_ENABLE,
TORQUE_ENABLE);
Error = Check_error(port_num, PROTOCOL_VERSION);
if Error
fprintf('Dynamixel has been successfully connected \n');
end
% Put in wheel mode (speed control)
write2ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID, ADDR_MX_CW_LIMIT, 0);
Error = Check_error(port_num, PROTOCOL_VERSION);
write2ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID, ADDR_MX_CW_LIMIT, 0);
Error = or(Error,Check_error(port_num, PROTOCOL_VERSION));
if Error
fprintf('Dynamixel has been successfully connected \n');
end
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
56 / 58
%% Important variables for the routine
Test_time = 40; % Maximum duration of the grasp experiment
dt = 0.05 % Time interval between sensor readings
load_limit = 100; % Load limit value (1023 = 100%)
i = 1;
speed = 50; % Rotation speed (max 1023 = 117.07 RPM)
if or(speed < 0, speed > 100)
speed = 0;
end
tgrab = 100000;
stop = false;
%% Grasp routine
% Start the timer
tic
% Loop until the end of the grasp or until the time limit is reached
while and(toc <= Test_time,stop == false)
% Read the timer value
TIME(i) = toc;
% Assign the speed value to the motor
write2ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID,
ADDR_MX_MOVING_SPEED, speed);
Check_error(port_num, PROTOCOL_VERSION);
% Read the value various sensors
POSITION(i) = read2ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID,
ADDR_MX_PRESENT_POSITION);
Check_error(port_num, PROTOCOL_VERSION);
SPEED(i) = read2ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID,
ADDR_MX_PRESENT_SPEED);
Check_error(port_num, PROTOCOL_VERSION);
LOAD(i) = read2ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID,
ADDR_MX_PRESENT_LOAD);
Check_error(port_num, PROTOCOL_VERSION);
VOLT(i) = read2ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID, 42);
Check_error(port_num, PROTOCOL_VERSION);
TEMP(i) = read2ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID, 43);
Check_error(port_num, PROTOCOL_VERSION);
% Print in the command window the values of the sensors
clc
fprintf('[ID:%03d] Time:%f Load:%03d Volt:%03d Temp:%03d\n', DXL_ID,
TIME(i), LOAD(i), VOLT(i), TEMP(i));
% If load limit reached, stop
if tgrab==100000 && mod(LOAD(i),1024)>load_limit && i>10
old_speed = speed;
speed = 0;
tgrab = toc;
end
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
57 / 58
% If has stopped for 2s, then open the hand (spin in other direction)
if toc > tgrab + 2
speed = old_speed + 1024;
end
% If hand open, stop and signal the grasp is finished
if toc > 2*tgrab + 2
speed = 0;
write2ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID,
ADDR_MX_MOVING_SPEED, speed);
Check_error(port_num, PROTOCOL_VERSION);
stop = true;
end
while toc < TIME(i) + dt
end
i = i+1;
end
% Make sure the hand stops moving
write2ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID, ADDR_MX_MOVING_SPEED,
0);
Check_error(port_num, PROTOCOL_VERSION);
%% Disconnection and final settings
% Disable Dynamixel Torque
write1ByteTxRx(port_num, PROTOCOL_VERSION, DXL_ID, ADDR_MX_TORQUE_ENABLE,
TORQUE_DISABLE);
Check_error(port_num, PROTOCOL_VERSION);
% Close port
closePort(port_num);
% Unload Library
unloadlibrary(lib_name);
%% Optional bit of code to write the measured values in an Excel file
% DATA = [{'Input Speed:'}, {old_speed}, {''}, {'Load Limit:'},
{load_limit}, {''};
% {''}, {''}, {''}, {''}, {''}, {''};
% {'Time (s)'}, {'Position'}, {'Speed'}, {'Load'}, {'Voltage
(mV)'}, {'Temperature (°C)'};
% num2cell([TIME', POSITION', SPEED', LOAD', VOLT', TEMP'])];
%
% filename = strcat('Results\Data ', datestr(datetime, 'yyyy-mm-dd_HH-MM-
SS'), '.xlsx');
%
% xlswrite(filename, DATA);
close all;
Alexandre Cayla ENGG7803
Thesis – Final Report The University of Queensland
58 / 58
Here is the function "Check_error". Using this function considerably reduces the size of the
previous script (as error checks are performed at every reading of writing step).
Check_error.m
function Error = Check_error(port_num, PROTOCOL_VERSION)
%Checking for error.
Error = false;
if getLastTxRxResult(port_num, PROTOCOL_VERSION) ~= 0
printTxRxResult(PROTOCOL_VERSION, getLastTxRxResult(port_num,
PROTOCOL_VERSION));
Error = true;
elseif getLastRxPacketError(port_num, PROTOCOL_VERSION) ~= 0
printRxPacketError(PROTOCOL_VERSION, getLastRxPacketError(port_num,
PROTOCOL_VERSION));
Error = true;
end
end