Forward kinematic function not returning the right values
The [getForwardKinematics](https://sdurobotics.gitlab.io/ur_rtde/api/api.html#_CPPv4N7ur_rtde20RTDEControlInterface20getForwardKinematicsERKNSt6vectorIdEERKNSt6vectorIdEE) function returns the wrong values if only one of the parameters is specified. Both parameters are described as optional, but the notice in the docs says otherwise. This is conflicting.
### TCP offset
The main problem lies in the `rtde_control_interface.cpp` file in the `getForwardKinematics` function. In the first else if statement (`else if (tcp_offset.empty() && !q.empty())`) the TCP offset is empty, but eventually is not set to zero in the command to the robot.
This causes the robot to get (possibly) wrong values out of the float registers. The cmd 44 is used in the [control script](https://gitlab.com/sdurobotics/ur_rtde/-/blob/master/scripts/rtde_control.script?ref_type=heads) to compute the `getForwardKinematics`function. Line 884 reads out the tcp offset from the float registers, but these can be other values then a tcp offset of zero, because of other functions using the same float registers, as explained in the previous paragraph.
A quick fix would be to write a zero tcp offset array to the robot. This can also be added in the [.h](https://gitlab.com/sdurobotics/ur_rtde/-/blob/master/include/ur_rtde/rtde_control_interface.h) file as default variable. Note that there is also no solution in the if statement if `q` is empty and `tcp_offset` is not empty. This can also cause (somewhat) the same issue. And it would be great if the docs can be updated accordingly.
Hope this can be fixed as there are more people experiencing this: [Link to Universal Robots Forum](https://forum.universal-robots.com/t/getforwardkinematics-actual-q-not-providing-the-same-answer-as-getactualtcppose/22623/3). Thanks for making this awesome library!
issue