IEEE Robotics & Automation Magazine - June 2013 - 102

check whether the provided inputs and outputs are as
expected during integration.
Common Errors in Geometric Rigid-Body
Relations Calculations in Robotics
In [3], we identified five common errors that could be
prevented by making the semantics underlying the geometric rigid-body relations explicit. In addition to teaser
presented at the beginning of the tutorial (see "Common
Error 1"), "Common Error 2" through "Common Error 5"
show how the other four common errors can be prevented
using the software presented in this tutorial.
Extending Geometry Library
withSemantic Checking
If a programmer wants to perform actual geometric relation
calculations using his own geometry library that does not offer
semantic support, he can easily build semantic support on top
of this library. Due to the software design (see the "General
Software Design" section), which is based on composition,
extending a geometry
library with semantic support boils down to impleThe actual numerical
menting a limited number
of functions, which make
calculations with the
the connection between
semantic operations (e.g.,
particular coordinate
composition) and actual
coordinate representation
representation are
calculations (e.g., multiplication of homogeneous
performed on top of the
transformation matrices).
Due to the compositionsemantic checks.
based design, there is no
need to change the original class libraries. A tutorial explaining how to extend your
geometry library with semantic checking is available [2].
Conclusion
This tutorial presented a software design founded on the
semantics underlying the rigid-body geometric relations of
position, orientation, pose, linear velocity, angular velocity, and
twist (presented in [3]), and shows how this software prevents
common errors, and hence reduces application (and, especially, system integration) development time considerably.
This tutorial is supplementary to the software Web
page [2], containing a more detailed explanation on the
C++ libraries implementing the geometric semantics for
rigid-body calculations. This software is publicly and freely

102

*

IEEE ROBOTICS & AUTOMATION MAGAZINE

*

jUNE 2013

available under the dual LGPLv2.1/BSD open-source license.
The design explained in this tutorial is, however, more generally applicable and can be used as a basis for libraries in other
languages. Furthermore, we believe it is particularly suitable
as a programming language-independent domain-specific
language (DSL) for geometric relations. Therefore, future
work aims at developing a DSL founded on the semantics
proposed in [3] and the software design presented in this
tutorial along with tools to do the actual checking, generate
verified code (model-to-text conversion), and transform
between different coordinate representations (model-tomodel conversion).
Acknowledgments
The authors would like to acknowledge the financial support by KU Leuven's Concerted Research Action
G0A/2010/011 Global realtime optimal control of autonomous robots and mechatronic systems, the FWO Project
G040410N Autonomous manipulation using a flying robot,
the KU Leuven-BOF PFV/10/002 Center-of- Excellence
Optimization in Engineering (OPTEC), and the European
FP7 projects 2008-ICT-230902-ROSETTA 2008-ICT231940-BRICS and FP7-ICT-288533 RoboHow.Cog.
References
[1] (2011). Robotics Library. [Online]. Available: http://sourceforge.net/apps/
mediawiki/roblib
[2] T. De Laet and S. Bellens. (2012, May). Geometric Semantics Software. [Online].
Avaliable: http://www.orocos.org/wiki/geometric-relations-semantics-wiki
[3] T. De Laet, S. Bellens, R. Smits, E. Aertbelien, H. Bruyninckx, and J. De
Schutter, "Geometric relations between rigid bodies: Semantics for standardization," IEEE Robot. Autom. Mag., vol. 20, no. 1, pp. 84-93.
[4] T. Foote. (2012). Robot Operating System (ROS) Geometry Stack. [Online].
Avaliable: http://ros.org/wiki/geometry
[5] R. Smits. (2011). KDL: Kinematics and Dynamics Library. [Online]. Avaliable: http://www.orocos.org/kdl
[6] K. Waldron and J. Schmiedler. "Kinematics," in Handbook of Robotics. Berlin, Germany: Springer-Verlag, 2008, pp. 9-33.

Tinne De Laet, KU Leuven, Belgium. E-mail: Tinne.DeLaet@
mech.kuleuven.be.
Steven Bellens, KU Leuven Leuven, Belgium. E-mail: Steven.
Bellens@mech.kuleuven.be.
Herman Bruyninckx, KU Leuven Leuven, Belgium. E-mail:
Herman.Bruyninckx@mech.kuleuven.be.
Joris De Schutter, KU Leuven Leuven, Belgium. E-mail: Joris.
DeSchutter@mech.kuleuven.be.


http://www.sourceforge.net/apps/ http://www.orocos.org/wiki/geometric-relations-semantics-wiki http://www.ros.org/wiki/geometry http://www.orocos.org/kdl

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