.. _mode_joint_pos: Trajectory: Joint Position ========================== .. note:: The Streaming Mode ID for this mode is `1`. .. dropdown:: Streaming Message Format .. figure:: /_static/streaming_messages/streaming_message_joint_pos.drawio.svg :align: center In `Pos` mode, the robot is controlled by commanding the desired position for each joint. In order to use this mode, a trajectory generation algorithm is required that generates a feasible trajectory satisfying each joint's dynamic limits. Please see below for suggested limits in streaming mode: .. dropdown:: Joint Limits .. code-block:: bash :linenos: Joint Position: ±270 deg Joint Velocity: Drive 193: ±1.25 [rad / s] Drive 148: ±2.00 [rad / s] Drive 116: ±4.00 [rad / s] Drive 86: ±5.00 [rad / s] Joint Acceleration: ± 4.0 [rad / s2] Joint Jerk: ± 100.0 [rad / s3] The controller will receive the streaming messages and store them in a buffer (the size can be adjusted via the streaming enable API message, see :ref:`Start Streaming `). Based on the four most recent entries of the buffer, a B-Spline interpolation is calculated to obtain smooth values for the first two derivatives. In some cases - for example due to rounding errors or packet loss - larger jumps can occur, specifically in the derivatives. Therefore, to guarantee best possible robustness, the commanded joint properties are post processed and the controller is aiming to best possibly follow the commanded joint trajectory. However, this postprocessing assumes the trajectory is valid, i.e. it respects the feasibility limits for joint position, velocity and acceleration.