Table of Contents

**geometric_relations_semantics**.

This stack consists of following packages:

**geometric_semantics**: geometric_semantics is the core of the geometric_relations_semantics stack and provides c++ code for the semantic support of geometric relations between rigid bodies (relative position, orientation, pose, translational velocity, rotational velocity, twist, force, torque, and wrench). If you want to use semantic checking for the geometric relation operations between rigid bodies in your application you can check the geometric_semantics_examples package. If you want to create support for your own geometry types on top of the geometric_semantics package, the geometric_semantics_kdl provides a good starting point.**geometric_semantics_examples**: geometric_semantics_examples groups some examples showing how the geometric_semantics can be used to provide semantic checking for the geometric relations between rigid bodies in your application.-
**geometric_semantics_orocos_typekit**: geometric_semantics_orocos_typekit provides Orocos typekit support for the geometric_semantics types, such that the geometric semantics types are visible within Orocos (in the TaskBrowser component, in Orocos script, reporting, reading and writing to files (for instance for properties), ... ). -
**geometric_semantics_orocos_typekit_kdl**: geometric_semantics_orocos_typekit_kdl provides Orocos typekit support for geometric semantics coordinate representations using KDL types. **geometric_semantics_msgs**: geometric_semantics_msgs provides ROS messages matching the C++ types defined on the geometric_semantics package, in order to support semantic support during message based communication.**geometric_semantics_msgs_conversions**: geometric_semantics_msgs_conversions provides support conversions between geometric_semantics_msgs and the C++ geometric_semantics types defined on the geometric_semantics package.**geometric_semantics_msgs_kdl**: geometric_semantics_kdl provides support for orocos_kdl types on top of the geometric_semantics package (for instance KDL::Frame to represent the relative pose of two rigid bodies). If you want to create support for your own geometry types on top of the geometric_semantics package, this package provides a good starting point.**geometric_semantics_msgs_tf**: geometric_semantics_tf provides support for tf datatypes (see http://www.ros.org/wiki/tf/Overview/Data%20Types) on top of the geometric_semantics package (for instance tf::Pose to represent the relative pose of two rigid bodies).**geometric_semantics_tf_msgs**: geometric_semantics_tf_msgs provides ROS messages matching the C++ types defined on the geometric_semantics_tf package, in order to support semantic support for tf types during message based communication.-
**geometric_semantics_tf_msgs_conversions**: geometric_semantics_tf_msgs_conversions provides support conversions between geometric_semantics_tf_msgs and the C++ geometric_semantics_tf types defined on the geometric_semantics_tf package.

Each package contains the following subdirectories:

**src/**containing the source code of the components (mainly C++ or python for the ROS msgs support).

- Boost version 1.42 or up (for ubuntu you can use the libboost1.4*-dev libraries)
- Orocos Kinematics and Dynamics Library 0.2.3 and up. For more information visit the Orocos website
- rtt_geometry stack: the Orocos typekit support for KDL types, introduces a dependency on the kdl_typekit
- ROS Electric/Fuerte/Groovy: optional unless you want to use the PR2, but highly recommended: build system and tools like rospack find are practical and are used in the example scripts
- ros_comm
- geometry
- common_msgs

- First you should get the sources from git using:

git clone https://gitlab.mech.kuleuven.be/rob-dsl/geometric-relations-semantics.git

- Go into the geometric_relations_semantics directory using:

cd geometric_relations_semantics

- Add this directory to your ROS_PACKAGE_PATH environment variable using:

export ROS_PACKAGE_PATH=$PWD:$ROS_PACKAGE_PATH

- Install the dependencies and build the library using:

rosdep install geometric_relations_semantics rosmake geometric_relations_semantics

- Everything should compile out of the box, and you are now ready to start using geometric relation semantics support.
- If you want to run the test of the packages you should use for instance (for the geometric_semantics core package):

roscd geometric_semantics make test

- To build the geometric_relations_semantics stack use:

rosmake geometric_relations_semantics

- You can also (re)build any package individually using:

rosmake PACKAGE_NAME

- If you want to run the test of the packages you should for go to the package for instance (for the geometric_semantics core package):

roscd geometric_semantics

- And next make and run the tests:

make test