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

Future of BasicCartesianControl and outlines for creating new controllers #124

Closed PeterBowman closed 1 year ago

PeterBowman commented 6 years ago

Per https://github.com/roboticslab-uc3m/kinematics-dynamics/issues/123#issuecomment-340269259:

PS: BTW, I cannot find the issue, but you asked the purpose/extent of BasicCartesianController. I guess it could be renamed to something like OneLimbCartesianController to express it should be capable of anything that requires a single limb (i.e. anything except walking with two legs, or whole-body motion control).

I always associated the basic component in the name as a reference to the RMRC scheme pictured at doc/fig/kinematics-dynamics.png. In fact, there are surely more convolute and advanced forms of cartesian control, let me cite chapters 9 to 11 of J. Craig, Introduction to Robotics. Mechanics and Control., 3rd edition.

I'm not sure about the restriction of using this controller solely with single limbs. If launched with the appropriate solver, I guess it could handle tree structures (KDL::Tree), too. On the other side, docs got more restrictive in the way input parameters are defined, hence the interface itself force single-frame results (assuming I'm right that tree solvers involve a 6-element twist per leaf tip).

PeterBowman commented 6 years ago

This is how an acceleration-aware control loop could look like:

controldynamics

B. Siciliano, lecture on Industrial Robotics: Differential Kinematics, Master's course in Robotics and Intelligent Systems, Università di Napoli Federico II (PDF, more)

Further reading: F. Caccavale, S. Chiaverini and B. Siciliano, "Second-order kinematic control of robot manipulators with Jacobian damped least-squares inverse: theory and experiments," in IEEE/ASME Transactions on Mechatronics, vol. 2, no. 3, pp. 188-194, Sept. 1997, doi: 10.1109/3516.622971. (IEEE Xplore, ResearchGate)

PeterBowman commented 6 years ago

See also https://github.com/roboticslab-uc3m/kinematics-dynamics/issues/135 (focused on trajectory generation).

PeterBowman commented 5 years ago

I am thinking now about a PositionCartesianControl or similar. A few cartesian commands could be reimplemented so that position targets are sent to the joint controller, instead of velocities. For instance, cartesian trajectories generated in movl and movv, currently velocity-driven in the joint space via RMRC, might be computed offline (https://github.com/roboticslab-uc3m/kinematics-dynamics/issues/156), then translated into joint coordinates through IK (preferably using our brand new screw theory solver) and sent in batches (https://github.com/roboticslab-uc3m/yarp-devices/issues/208). Also, perhaps pose and movi could be merged into one single command - the position-based implementation would enable the new external reference position mode on the iPOS side (https://github.com/roboticslab-uc3m/yarp-devices/issues/198).

PeterBowman commented 2 years ago

(...) cartesian trajectories generated in movl and movv, currently velocity-driven in the joint space via RMRC, might be (...) translated into joint coordinates through IK (preferably using our brand new screw theory solver)...

See https://github.com/roboticslab-uc3m/kinematics-dynamics/issues/193.

Edit: we can actually trick the robot to interpret velocity commands as position via CSV: https://github.com/roboticslab-uc3m/yarp-devices/issues/221.

PeterBowman commented 1 year ago

I'm not sure about the restriction of using this controller solely with single limbs. If launched with the appropriate solver, I guess it could handle tree structures (KDL::Tree), too.

In fact, https://github.com/roboticslab-uc3m/kinematics-dynamics/issues/190 allowed us to handle a tree structure underneath using KdlTreeSolver.

This is how an acceleration-aware control loop could look like: (https://github.com/roboticslab-uc3m/kinematics-dynamics/issues/124#issuecomment-373703327)

This is very nice, but not practical since we don't work with offline trajectories that much. Perhaps @imontesino would like to take a look at this in the context of IIWA's control loops (unless already using something similar).

With the introduction of CSV (https://github.com/roboticslab-uc3m/yarp-devices/issues/221), I no longer see the need of another cartesian controller for the time being.

However, I do see the need of a "monologue" label...

PeterBowman commented 1 year ago

Also, perhaps pose and movi could be merged into one single command

Done at https://github.com/roboticslab-uc3m/kinematics-dynamics/commit/e286bab06ebb1633bd7356b5caa983639cc2c23a, but this is actually a disambiguation rather than a merge:

Otherwise, perform the numerical differentiation yourself :smiling_imp:.