In ROS-Noetic, the Sawyer Simulation and the pick-and-place-example, was not properly working.
Three major contributions in this pull request.
The head_interface.cpp use a deprecated OpenCV flag, which was updated.
The KDL FK and IK solver where not properly initialized. Most likely due to a not properly implemented move constructor in KDL::Chain leading e.g. ChainFkSolverPos_recursiveto return a dimension mismatch error (-4). Hence, as a workaround, std::unique_ptr<KDL::Chain> is used in the Kinematics struct rather than the KDL::Chain attribute.
In the pick-and-place example, ik_pick_and_place_demo.py, the IK service failed to find solutions. The root cause was the linear interpolation of the quaternions. Therefore, the Slerp interpolation is used for quaternions which seems to resolve the issue.
Some minor fixes, required for Noetic (linking of yaml) and catching exceptions as e in Python 3.
Finally, I would like to point out that these fixes should also be tested in ROS-Melodic and ROS-Kinetic.
In ROS-Noetic, the Sawyer Simulation and the pick-and-place-example, was not properly working. Three major contributions in this pull request.
KDL::Chain
leading e.g.ChainFkSolverPos_recursive
to return a dimension mismatch error (-4). Hence, as a workaround,std::unique_ptr<KDL::Chain>
is used in theKinematics
struct rather than theKDL::Chain
attribute.ik_pick_and_place_demo.py
, the IK service failed to find solutions. The root cause was the linear interpolation of the quaternions. Therefore, the Slerp interpolation is used for quaternions which seems to resolve the issue.yaml
) and catching exceptionsas e
in Python 3.Finally, I would like to point out that these fixes should also be tested in ROS-Melodic and ROS-Kinetic.