-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update coupling handlers of ergoCub Hand MK5 #650
Conversation
Thanks! I will go in depth on this tomorrow, but in the meanwhile CI fails with:
Probably we just need to |
It depends on the fact that I use designated initializers for the members of the I could find a different solution if we don't want to enable |
I think C++20 is fine, as long as the library compiles fine on Ubuntu 20.04 with apt dependencied, we are fine. Please ignore the Ubuntu 18.04 failure, I need to disable that job. |
Added support for C++ 20 compiler features for the Not sure if these lines gazebo-yarp-plugins/plugins/controlboard/CMakeLists.txt Lines 9 to 10 in ea7a48e
are to be changed as well. |
After f2f with @traversaro, it was decided that it would be better to add second argument to
so that any velocity reference decoupling law that requires the access to the joint positions can be implemented. I will update the PR to match the above idea. |
The PR has been updated as discussed. |
As per the title.
Notes:
FingerParameters
struct hosting the relevant parameters from the documentation;HandMk5CouplingHandler::decoupleAcc
does nothing given thatdecoupleAcc
is never called in thecontrolboard
plugin code;HandMk5CouplingHandler::{decoupleTrq, decoupleRefTrq}
do nothing given that torque control does not exist for the fingers on the real robot;HandMk5CouplingHandler::decoupleRefVel
, differently from all the coupling handlers we had so far, uses the Jacobian provided in documentation, hence it also requires to know the current joints position to be implemented. Unfortunately the super class of theBaseCouplingHandler
does not provide any position input for thedecopleRefVel
method:gazebo-yarp-plugins/plugins/controlboard/include/yarp/dev/ControlBoardDriverCoupling.h
Line 49 in ea7a48e
For this reason, although I do not like this solution, for now I am saving the current joints positions as a class member when
decouplePos
is called and reusing it withindecoupleRefVel
. It works becausedecouplePos
:gazebo-yarp-plugins/plugins/controlboard/src/ControlBoardDriver.cpp
Line 570 in ea7a48e
decoupleRefVel
gets called.As regards the last point, I am happy to discuss different solutions - also given the recent discussion in #649. The fact that
decoupleRefVel
is working properly has been tested by enabling, just for testing purposes, thedirect_velocity_pid
mode for the YARP velocity control.This PR is tightly coupled with icub-tech-iit/ergocub-software#115.
Fixes #647
cc @mfussi66 @Nicogene @traversaro @pattacini