Open PeterBowman opened 7 years ago
This is easier to accomplish on AmorControlBoard since we have dedicated API methods for controlling the gripper. On the other hand, BasicCartesianControl connects (as of its current implementation) to a remote controlboard and use all of its joints, regardless whether there are fake ones (i.e. actuators such as the LacqueyFetch or the TextilesHand, see yarp-devices/libraries/BodyYarp) or not. Didn't try it, but I guess that the robot controlboard plugin was launched without these additional "joints" so far.
To sum up, BasicCartesianControl should be able to distinguish motor and actuator joints via explicit --param value
options, or fetch this information from the remote controlboard in case it implements the appropriate interface. I was thinking more about yarp::dev::IAxisInfo (VOCAB_JOINTTYPE_UNKNOWN
for actuator joints?) or yarp::dev::IRemoteVariables (retrieve the list of motor/actuator joints with getRemoteVariable
?). That said, the remote fetch solution would entail changes in the yarp-devices repository.
Sounds interesting. If implemented on yarp-devices, should also go in simulator, as in https://github.com/roboticslab-uc3m/openrave-yarp-plugins
My current concept for the future actuator-related method in the ICartesianControl
interface is the following signature:
bool act(int command);
Where command
would evaluate to one vocab of the following new set:
VOCAB_CC_ACTUATOR_NONE
: no actuator available or just do nothingVOCAB_CC_ACTUATOR_CLOSE_GRIPPER
VOCAB_CC_ACTUATOR_OPEN_GRIPPER
VOCAB_CC_ACTUATOR_STOP_GRIPPER
VOCAB_CC_ACTUATOR_GENERIC
Still wondering how would this cope with hypothetical implementations of generic (non-gripper) actuators of any kind. Should the controller/remote controlboard/both be aware of the actuator type?
WIP at the amor-cc-actuator
branch (locally) to get a first insight of this interface working on AMOR. As noted before, broader changes are required to accomplish this in the generic controller with custom actuators.
ICartesianControl
vocabs:
New method signature:
Implementation at AmorCartesianControl
:
Used in several apps: keyboardController, streamingDeviceController, haarDetectionController.
That said, the remote fetch solution would entail changes in the yarp-devices repository.
Marking as blocked.
Update: I'm not convinced anymore about the IRemoteVariables interface, see https://github.com/roboticslab-uc3m/yarp-devices/issues/198#issuecomment-495322968. Also, the upstream work on yarp-devices would imply https://github.com/roboticslab-uc3m/yarp-devices/issues/211.
@jgvictores OK to merge amor-cc-actuator branch into develop as a first approach for tackling this problem (at least) on AMOR? We'll most probably rewrite that part sooner or later, but those changes would not be lost (and it will spare me doing a lot of merge commits on the already-too-long run).
Update: I'm not convinced anymore about the IRemoteVariables interface, see roboticslab-uc3m/yarp-devices#198 (comment). Also, the upstream work on yarp-devices would imply roboticslab-uc3m/yarp-devices#211.
Note: https://github.com/roboticslab-uc3m/yarp-devices/issues/20 will enable arbitrary CAN bus + YARP wrapper configurations, and https://github.com/roboticslab-uc3m/yarp-devices/issues/171 is going to wrap raw joints involved in the actuation. Two remarks:
Per https://github.com/roboticslab-uc3m/kinematics-dynamics/issues/162#issuecomment-532344770:
I plan to merge
numRobotJoints
andnumSolverJoints
into one entity that represents motor joints, only. That is, the (until and for now) only additional YARP-handled joint, which corresponds to the LacqueyFetch single-motor gripper, will be exposed via a dedicated YARP port to which BasicCartesianControl would have to connect via a separate remote_controlboard device in case it needs to access actuator commands (https://github.com/roboticslab-uc3m/kinematics-dynamics/issues/115). See rationale at https://github.com/roboticslab-uc3m/yarp-devices/issues/228#issuecomment-532200863.
We might want to rethink the whole act
command stuff. See also https://github.com/roboticslab-uc3m/yarp-devices/issues/228.
The
ICartesianControl
interface could provide a method to control an end-effector actuator (e.g. a gripper tool). To not interfere withtool
(see #95), a newact
/VOCAB_CC_ACT
method/RPC vocab pair is proposed.