diff --git a/source/RobotAPI/libraries/core/Trajectory.h b/source/RobotAPI/libraries/core/Trajectory.h
index 7b42d4a9f1ff1a9372d2f95e17a0badc00367912..16678be210ede2d5bec9496d19197f4d75d83944 100644
--- a/source/RobotAPI/libraries/core/Trajectory.h
+++ b/source/RobotAPI/libraries/core/Trajectory.h
@@ -72,6 +72,10 @@ namespace armarx
      * Basic usage:
      * @snippet RobotAPI/libraries/core/test/TrajectoryTest.cpp TrajectoryDocumentation BasicUsage
      *
+     * The trajectory offers normal iterator capabilities:
+     * @snippet RobotAPI/libraries/core/test/TrajectoryTest.cpp TrajectoryDocumentation IteratorUsage
+     * @note Only const iterators are currently available.
+     *
      * With the iterators it can be used like a std container:
      * @snippet RobotAPI/libraries/core/test/TrajectoryTest.cpp TrajectoryDocumentation CopyIf
      */
@@ -194,6 +198,11 @@ namespace armarx
         void removeDerivation(size_t dimension, size_t derivation);
 
         // iterators
+        /**
+         * @brief Iterators that iterates in incremental order of the timestamps through the trajectory.
+         * @note Only const versions are available currently.
+         * @see end(), rbegin(), rend()
+         */
         typename ordered_view::const_iterator begin() const;
         typename ordered_view::const_iterator end() const;
         typename ordered_view::const_reverse_iterator rbegin() const;
diff --git a/source/RobotAPI/libraries/core/test/TrajectoryTest.cpp b/source/RobotAPI/libraries/core/test/TrajectoryTest.cpp
index 16b9c0573e6a292bbb114ee27296b81f03745f8e..64f35db4e7d0d3609127ddde3437b8abc860ab56 100644
--- a/source/RobotAPI/libraries/core/test/TrajectoryTest.cpp
+++ b/source/RobotAPI/libraries/core/test/TrajectoryTest.cpp
@@ -135,6 +135,30 @@ BOOST_AUTO_TEST_CASE(TrajectoryBasicUsage)
      //! [TrajectoryDocumentation BasicUsage]
      ARMARX_INFO_S << VAROUT(pos) << VAROUT(positions);
 }
+
+BOOST_AUTO_TEST_CASE(TrajectoryIteratorUsage)
+{
+     Ice::DoubleSeq myPositionValues{0,5,1}; // fill with your values;
+     Ice::DoubleSeq timestamps = Trajectory::GenerateTimestamps(0, 1, 1.0/(myPositionValues.size()-1)); // if you dont have timestamps
+     TrajectoryPtr trajectory(new Trajectory);
+     trajectory->addDimension(timestamps, myPositionValues, "Shoulder 1 L");
+     //! [TrajectoryDocumentation IteratorUsage]
+     Trajectory::ordered_view::iterator it; // or just auto it;
+     it = trajectory->begin();
+     for(; it != trajectory->end(); it++)
+     {
+         const Trajectory::TrajData& data = *it;
+         ARMARX_INFO_S << "Position at " << data.getTimestamp() << " :" << data.getPosition(0);
+     }
+
+     // or with c++11 for loop:
+     for(const Trajectory::TrajData& element : *trajectory)
+     {
+         ARMARX_INFO_S << "Position at " << element.getTimestamp() << " :" << element.getPosition(0);
+     }
+     //! [TrajectoryDocumentation IteratorUsage]
+}
+
 BOOST_AUTO_TEST_CASE(testInplaceDerivation2)
 {