roboticslab-uc3m / kinematics-dynamics

Kinematics and dynamics solvers and controllers.
https://robots.uc3m.es/kinematics-dynamics/
GNU Lesser General Public License v2.1
19 stars 12 forks source link

Send open-loop position commands in MOVL mode #193

Closed PeterBowman closed 2 years ago

PeterBowman commented 2 years ago

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.

PeterBowman commented 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.

PeterBowman commented 1 year ago

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.