============ Data Types ============ This page shall give a short summary of the stable RST Types and their semantic structuring into distinct namespaces. As such, it shall give component developers a brief overview of the overall library and describe the rationale behind the different namespaces. Namespaces ========== **Geometry** Geometry is a branch of mathematics concerned with questions of shape, size, relative position of figures, and the properties of space. See also: http://www.ros.org/wiki/geometry_msgs **Kinematics** Kinematics is the branch of classical mechanics that describes the motion of bodies (objects) and systems (groups of objects) without consideration of the forces that cause the motion. **Dynamics** In the field of physics, the study of the causes of motion and changes in motion is dynamics. In other words the study of forces and why objects are in motion. Dynamics includes the study of the effect of torques on motion. **Vision** In electrical engineering and computer science, image processing is any form of signal processing for which the input is an image. **Audition** Audio signal processing, sometimes referred to as audio processing, is the intentional alteration of auditory signals, or sound. **Stochastics** The use of the term stochastic to mean based on the theory of probability. **Communication Patterns** Refers to additional prototypes for advanced communication patterns at the integration level such as the Task-State pattern. Adding new Data Types ===================== |project| is meant to be a repository of stable type specifications to enable compatibility across applications. To enable this, new data types start in experimentation and undergo a review process to be included into the stable core. The process to experiment with own new data types is: 1. Creating **local git branch** for experimentation To experiment with a new data type, create a branch of the rst sources. Have a look at `git `_ and do the following: .. code-block:: sh git clone -b 0.7 https://code.cor-lab.org/git/rst.git.proto rst-proto git checkout -b 0.7-YOURPROJECT where :samp:`{YOURPROJECT}` is your project name. 2. **From source build** for testing Add proto files for your own data types and test it by building your local branch from source as documented in :ref:`installation-from-source`. 3. **Pull request** Once your data type is tested and became stable in your local setup, add new files, commit your changes to your local branch and create a patch: .. code-block:: sh git format-patch origin/0.7 This will create at least one `{.patch}` file with your local changes. To incorporate the new data type in the public rst repository, write a feature request at |redmine| with the title "Add {your new type} to the sandbox". Attaching the `{.patch}` file(s). **Note:** By default new data type(s) will only be committed to master. If you want the new data type(s) also to be added to the |version| branch, you have to note that in the issue description. This will then only allow *adding* new data type(s), modifications of existing types are only allowed for the master branch. 4. **Stable data type** After a data type has been stable for one release cycle of |project|, it will be reviewed and becomes a candidate for being moved from :term:`sandbox` to :term:`stable`.