The Trossen driver solves inverse kinematics itself, against the vendored MJCF, and sends joints. The
controller solves Cartesian goals too, through set_cartesian_positions.
Make it a constructor argument which of the two a Robot uses, so a station can run the vendor path
without a fork. The host path stays the default: the firmware solves each goal on its own, and near a
workspace boundary successive solutions come from different branches, which tears the arm between them.
Raised in #683 (comment)
The Trossen driver solves inverse kinematics itself, against the vendored MJCF, and sends joints. The
controller solves Cartesian goals too, through
set_cartesian_positions.Make it a constructor argument which of the two a
Robotuses, so a station can run the vendor pathwithout a fork. The host path stays the default: the firmware solves each goal on its own, and near a
workspace boundary successive solutions come from different branches, which tears the arm between them.
Raised in #683 (comment)