IEEE Robotics & Automation Magazine - June 2013 - 92

Common Error 1: Logic Errors in Geometric Relation Calculations
Many logic errors can occur during geometric relation
calculations. For instance, the inverse of Position ^e C, f D h is
Position ^f D, e C h (point and reference point switch) while
the inverse of LinearVelocity ^e C, D h is LinearVelocity ^e D, C h
(point does not change). A second example appears when
composing the relations involving three rigid bodies: in order
to get the geometric relation of body C with respect to body
D, one can compose the geometric relation between C and a
third body E with the geometric relation between body E and
body D (and not the geometric relation between body D and
body E for instance).
The C++ code in Algorithm S1 and the program output in
Algorithm S2 show how the software proposed in this tutorial
prevents each of the above two logic errors.

Algorithm S1. Logic Errors in Geometric
Calculations-C++
// Inversion
PositionSemantics pos("e","C","f","D");
PositionSemantics pos_inverse = pos.inverse();
LinearVelocitySemantics linVel("e","C","D");
LinearVelocitySemantics linVel_inverse = 9
linVel.inverse();
// Composition
PoseSemantics pose1("g","g","C","h","h","D");
PoseSemantics pose2("i","i","E","h","h","D");

calculations with the geometric relations between rigid bodies on the top of existing geometric libraries, which only
work on specific coordinate representations. To our knowledge, the proposed software is the first to offer a semantic
interface for geometric operation software libraries.
It is assumed that the readers are familiar with the notation
and basic concepts of the semantic representation of the geometric relations and the corresponding semantic operations
introduced in [3].

{b}

{o1}

{o2}

{e}

Figure 1. The running example of a robot performing a spraypainting operation.

92

*

IEEE ROBOTICS & AUTOMATION MAGAZINE

*

jUNE 2013

PoseSemantics pose_composition = compose 9
(pose1, pose2);

Algorithm S2. Logic Errors in Geometric
Calculations-Output
// Inversion
Result: Inverse of Position(e|C,f|D) is 9
Position(f|D,e|C)
Result: Inverse of LinearVelocity(e|C,D) is 9
LinearVelocity(e|D,C)
// Composition
Semantic output: Composition of 9
Pose((g,[g])|C,(h,[h])|D) and 9
Pose((i,[i])|E,(h,[h])|D) is NOK since:
* Either the reference point, reference 9
orientation frame, and reference body of 9
Pose((g,[g])|C,(h,[h])|D) have to be equal to 9
the point, orientation frame, and body of 9
Pose((i,[i])|E,(h,[h])|D) respectively
OR
the point, orientation frame, and body of 9
Pose((g,[g])|C,(h,[h])|D) have to be 9
equal to the reference point, reference 9
orientation frame, and reference body of 9
Pose((i,[i])|E,(h,[h])|D) respectively.

Running Example
In this tutorial, we use a running example from robotics to
illustrate how the software helps to perform the semantic
checking for the geometric relations between rigid bodies.
The running example involves a robot that spray paints a
cylindrical object, as illustrated in Figure 1. The cylindrical
object is fixed in the environment, while the robot holds
the spray gun.
The running example does not attempt to show all the
possible errors the geometric semantics software can prevent, but rather to give a robotics showcase of the software.
See "Common Errors in Geometric Rigid-Body Relations
Calculations in Robotics" for more examples of how the
presented software can prevent common errors in geometric calculations.
To complete the painting task, the robot program has to
determine the joint angles of the robot holding the spray gun
such that a predefined relative pose between the spray gun
and cylindrical object is obtained.
The first step for solving the geometry problems is identifying the rigid bodies and the frames attached to them. In the
running example, we have: " b , attached to the base B of
the robot, " e , attached to the end-effector E of the robot,
" o 2 , attached to the spray gun O 2, and " o 1 , attached to
cylindrical object O 1 . In the example, the following poses are



Table of Contents for the Digital Edition of IEEE Robotics & Automation Magazine - June 2013

IEEE Robotics & Automation Magazine - June 2013 - Cover1
IEEE Robotics & Automation Magazine - June 2013 - Cover2
IEEE Robotics & Automation Magazine - June 2013 - 1
IEEE Robotics & Automation Magazine - June 2013 - 2
IEEE Robotics & Automation Magazine - June 2013 - 3
IEEE Robotics & Automation Magazine - June 2013 - 4
IEEE Robotics & Automation Magazine - June 2013 - 5
IEEE Robotics & Automation Magazine - June 2013 - 6
IEEE Robotics & Automation Magazine - June 2013 - 7
IEEE Robotics & Automation Magazine - June 2013 - 8
IEEE Robotics & Automation Magazine - June 2013 - 9
IEEE Robotics & Automation Magazine - June 2013 - 10
IEEE Robotics & Automation Magazine - June 2013 - 11
IEEE Robotics & Automation Magazine - June 2013 - 12
IEEE Robotics & Automation Magazine - June 2013 - 13
IEEE Robotics & Automation Magazine - June 2013 - 14
IEEE Robotics & Automation Magazine - June 2013 - 15
IEEE Robotics & Automation Magazine - June 2013 - 16
IEEE Robotics & Automation Magazine - June 2013 - 17
IEEE Robotics & Automation Magazine - June 2013 - 18
IEEE Robotics & Automation Magazine - June 2013 - 19
IEEE Robotics & Automation Magazine - June 2013 - 20
IEEE Robotics & Automation Magazine - June 2013 - 21
IEEE Robotics & Automation Magazine - June 2013 - 22
IEEE Robotics & Automation Magazine - June 2013 - 23
IEEE Robotics & Automation Magazine - June 2013 - 24
IEEE Robotics & Automation Magazine - June 2013 - 25
IEEE Robotics & Automation Magazine - June 2013 - 26
IEEE Robotics & Automation Magazine - June 2013 - 27
IEEE Robotics & Automation Magazine - June 2013 - 28
IEEE Robotics & Automation Magazine - June 2013 - 29
IEEE Robotics & Automation Magazine - June 2013 - 30
IEEE Robotics & Automation Magazine - June 2013 - 31
IEEE Robotics & Automation Magazine - June 2013 - 32
IEEE Robotics & Automation Magazine - June 2013 - 33
IEEE Robotics & Automation Magazine - June 2013 - 34
IEEE Robotics & Automation Magazine - June 2013 - 35
IEEE Robotics & Automation Magazine - June 2013 - 36
IEEE Robotics & Automation Magazine - June 2013 - 37
IEEE Robotics & Automation Magazine - June 2013 - 38
IEEE Robotics & Automation Magazine - June 2013 - 39
IEEE Robotics & Automation Magazine - June 2013 - 40
IEEE Robotics & Automation Magazine - June 2013 - 41
IEEE Robotics & Automation Magazine - June 2013 - 42
IEEE Robotics & Automation Magazine - June 2013 - 43
IEEE Robotics & Automation Magazine - June 2013 - 44
IEEE Robotics & Automation Magazine - June 2013 - 45
IEEE Robotics & Automation Magazine - June 2013 - 46
IEEE Robotics & Automation Magazine - June 2013 - 47
IEEE Robotics & Automation Magazine - June 2013 - 48
IEEE Robotics & Automation Magazine - June 2013 - 49
IEEE Robotics & Automation Magazine - June 2013 - 50
IEEE Robotics & Automation Magazine - June 2013 - 51
IEEE Robotics & Automation Magazine - June 2013 - 52
IEEE Robotics & Automation Magazine - June 2013 - 53
IEEE Robotics & Automation Magazine - June 2013 - 54
IEEE Robotics & Automation Magazine - June 2013 - 55
IEEE Robotics & Automation Magazine - June 2013 - 56
IEEE Robotics & Automation Magazine - June 2013 - 57
IEEE Robotics & Automation Magazine - June 2013 - 58
IEEE Robotics & Automation Magazine - June 2013 - 59
IEEE Robotics & Automation Magazine - June 2013 - 60
IEEE Robotics & Automation Magazine - June 2013 - 61
IEEE Robotics & Automation Magazine - June 2013 - 62
IEEE Robotics & Automation Magazine - June 2013 - 63
IEEE Robotics & Automation Magazine - June 2013 - 64
IEEE Robotics & Automation Magazine - June 2013 - 65
IEEE Robotics & Automation Magazine - June 2013 - 66
IEEE Robotics & Automation Magazine - June 2013 - 67
IEEE Robotics & Automation Magazine - June 2013 - 68
IEEE Robotics & Automation Magazine - June 2013 - 69
IEEE Robotics & Automation Magazine - June 2013 - 70
IEEE Robotics & Automation Magazine - June 2013 - 71
IEEE Robotics & Automation Magazine - June 2013 - 72
IEEE Robotics & Automation Magazine - June 2013 - 73
IEEE Robotics & Automation Magazine - June 2013 - 74
IEEE Robotics & Automation Magazine - June 2013 - 75
IEEE Robotics & Automation Magazine - June 2013 - 76
IEEE Robotics & Automation Magazine - June 2013 - 77
IEEE Robotics & Automation Magazine - June 2013 - 78
IEEE Robotics & Automation Magazine - June 2013 - 79
IEEE Robotics & Automation Magazine - June 2013 - 80
IEEE Robotics & Automation Magazine - June 2013 - 81
IEEE Robotics & Automation Magazine - June 2013 - 82
IEEE Robotics & Automation Magazine - June 2013 - 83
IEEE Robotics & Automation Magazine - June 2013 - 84
IEEE Robotics & Automation Magazine - June 2013 - 85
IEEE Robotics & Automation Magazine - June 2013 - 86
IEEE Robotics & Automation Magazine - June 2013 - 87
IEEE Robotics & Automation Magazine - June 2013 - 88
IEEE Robotics & Automation Magazine - June 2013 - 89
IEEE Robotics & Automation Magazine - June 2013 - 90
IEEE Robotics & Automation Magazine - June 2013 - 91
IEEE Robotics & Automation Magazine - June 2013 - 92
IEEE Robotics & Automation Magazine - June 2013 - 93
IEEE Robotics & Automation Magazine - June 2013 - 94
IEEE Robotics & Automation Magazine - June 2013 - 95
IEEE Robotics & Automation Magazine - June 2013 - 96
IEEE Robotics & Automation Magazine - June 2013 - 97
IEEE Robotics & Automation Magazine - June 2013 - 98
IEEE Robotics & Automation Magazine - June 2013 - 99
IEEE Robotics & Automation Magazine - June 2013 - 100
IEEE Robotics & Automation Magazine - June 2013 - 101
IEEE Robotics & Automation Magazine - June 2013 - 102
IEEE Robotics & Automation Magazine - June 2013 - 103
IEEE Robotics & Automation Magazine - June 2013 - 104
IEEE Robotics & Automation Magazine - June 2013 - 105
IEEE Robotics & Automation Magazine - June 2013 - 106
IEEE Robotics & Automation Magazine - June 2013 - 107
IEEE Robotics & Automation Magazine - June 2013 - 108
IEEE Robotics & Automation Magazine - June 2013 - 109
IEEE Robotics & Automation Magazine - June 2013 - 110
IEEE Robotics & Automation Magazine - June 2013 - 111
IEEE Robotics & Automation Magazine - June 2013 - 112
IEEE Robotics & Automation Magazine - June 2013 - 113
IEEE Robotics & Automation Magazine - June 2013 - 114
IEEE Robotics & Automation Magazine - June 2013 - 115
IEEE Robotics & Automation Magazine - June 2013 - 116
IEEE Robotics & Automation Magazine - June 2013 - 117
IEEE Robotics & Automation Magazine - June 2013 - 118
IEEE Robotics & Automation Magazine - June 2013 - 119
IEEE Robotics & Automation Magazine - June 2013 - 120
IEEE Robotics & Automation Magazine - June 2013 - 121
IEEE Robotics & Automation Magazine - June 2013 - 122
IEEE Robotics & Automation Magazine - June 2013 - 123
IEEE Robotics & Automation Magazine - June 2013 - 124
IEEE Robotics & Automation Magazine - June 2013 - 125
IEEE Robotics & Automation Magazine - June 2013 - 126
IEEE Robotics & Automation Magazine - June 2013 - 127
IEEE Robotics & Automation Magazine - June 2013 - 128
IEEE Robotics & Automation Magazine - June 2013 - Cover3
IEEE Robotics & Automation Magazine - June 2013 - Cover4
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2010
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2010
https://www.nxtbookmedia.com