# DHChain Velocity Solving

## DHChain Velocity Solving

When DHChain start or end positions are in movement and some velocity-related output port or argument is added to some of the DHLinks, then the velocity calculation will take place in every DHChain component Process() cycle (in addition to Position Solving).

Three types of velocity calculations can happen:

Velocity calculation type | Description |
---|---|

Predicted-position-based calculation | The predicted position, that the DHChain would achieve for the start of the next processing cycle, considering all the velocities given (and at the same time considering all other, non-moving constraints) will be calculated. Velocity outputs are then calculated based on that predicted position. |

Jacobian-matrix-based calculation | Mathematics based on degree of freedom time derivatives of the links (i.e. chain Jacobian matrix) and input velocities are used to calculate the velocity outputs. |

Link velocity measuring | Actual velocity, based on the current position and position the chain was at the previous DHChain processing cycle will be measured. |

### Forward Velocity Solving

For forward velocity calculation, **CalculatedVelocity** and **CalculatedAngularVelocity** ports can be added to the DHLink, that have a common **CalculationMethod** parameter, which affects what aspects are taken into account while calculating the velocity:

CalculationMethod | Method description |
---|---|

Measured (default) | The actual velocity, that the link end is moving or rotating by. This velocity calculation method is not affected by any given input velocities, i.e. it does not indicate the link end predicted velocity but the actual velocity, that the link was moving during the last DHChain calculation cycle. |

Predicted | Similar to Measured, with the exception that it takes into account also all the given input velocities and degree of freedom parameter speeds, while considering all constraints set to the chain (including speed constraints (like MaxSpeed, MaxAcceleration and MaxDeceleration) and loop constraints. In other words, this method predicts the velocity that the link end will achieve for the start of the next DHChain processing cycle. |

Jacobian | Velocity calculated based only on possible input degree of freedom parameter speeds given, using degree of freedom time derivatives of the links (i.e. chain Jacobian matrix). This method can be useful for creating assisting models for other kinematics systems, that already use this approach. Note, that this method will return 0 when the link input degree of freedom parameter speeds are not given, even if the chain is actually moving (for example, because its start or end positions are changing or because some constraints force it to move/rotate). |

### Inverse Velocity Solving

**CalculatedThetaSpeed** (for DHRevoluteLink) or **CalculatedDSpeed** (for DHPrismaticLink) argument can be added to the DHLink, to instruct the solver to calculate the link degree of freedom parameter speed. These arguments have also the common **CalculationMethod** parameter, which affects what aspects are taken into account while calculating the speed:

CalculationMethod | Method description |
---|---|

Predicted (default) | Speed needed to reach a solved position for the start of the next DHChain processing cycle, considering all given input velocities. This speed can be used as a speed reference control value for link actuating motors. Because of the prediction included, this speed will minimize the position correction lag in moving kinematic systems, like holding some steady position on moving platforms or precisely following some moving target. When there are no input velocities given, then the speed will be equal to what is needed to reach the solved chain position for the start of the next DHChain processing cycle. |

Jacobian | Speed based only on possible chain start and end input velocities given, using degree of freedom time derivatives of the links (i.e. chain Jacobian matrix). This speed can be useful for creating assisting models for other kinematics systems, that already use this approach. Note, that this method will return 0 when the link or its child link end velocity nor start velocity is not given, even if the chain is actually moving (for example, because its start or end positions are changing or because some constraints force it to move/rotate). Also, this method will not follow the speed constraints (like MaxSpeed, MaxAcceleration or MaxDecelerations) applied to different links, nor loop constraints that can restrict link speed in reality. |

Measured | Actual speed the degree of freedom parameter is changing during the last DHChain calculation cycle. It can be used for inspection or display in the control panel or UI. This speed calculation method is not affected by any given input velocities. |

## Get started with CDP Studio today

Let us help you take your great ideas and turn them into the products your customer will love.