Closed PeterBowman closed 2 years ago
I completely forgot we can resort to using the CSV mode: https://github.com/roboticslab-uc3m/yarp-devices/issues/221. That is: keep sending velocity commands from the cartesian controller to the joint controller, then make the latter interpret them as position commands through integration.
I ended up implementing this at https://github.com/roboticslab-uc3m/kinematics-dynamics/commit/e27d2d5d8736aa0134e3419d6f5fb1a36c3333bd (enable with --usePosdMovl
) so that it copes well with dry mode (https://github.com/roboticslab-uc3m/kinematics-dynamics/issues/156, enable with --enableFailFast
), i.e. to check the full trajectory using fast IK before even trying to perform MOVL.
Current MOVL implementation runs a closed position-controlled loop and sends joint velocity commands to the robot.
https://github.com/roboticslab-uc3m/kinematics-dynamics/blob/e142145b93d4424b6f35503954689c769621ca41/libraries/YarpPlugins/BasicCartesianControl/ICartesianControlImpl.cpp#L171-L239
https://github.com/roboticslab-uc3m/kinematics-dynamics/blob/e142145b93d4424b6f35503954689c769621ca41/libraries/YarpPlugins/BasicCartesianControl/PeriodicThreadImpl.cpp#L97-L171
Due to friction and gravity, we struggle with obtaining a nice linear motion most of the time. Idea: implement a MOVI-like open-loop variant for MOVL, which could be enabled through a configuration parameter.
In case this is done, re-open https://github.com/roboticslab-uc3m/kinematics-dynamics/issues/156#issuecomment-1148689068.