The goal is to have FingerFaceAssigner take on the role of the two existing systems: ContactPointInBrickFrame and ContactPointsToFingerFaceAssignments. This would require additional signals into and out of FingerFaceAssigner, namely:
ContactResults input. When geometries are in contact, extract the contact point, otherwise, compute the witness point.
in_contact boolean output, indicating whether the finger_face_assignments map contains a witness point (when not in contact) or a contact point (when in contact).
Additionally, the QPController takes in a finger_face_assignment_map which contains only fingers that are in contact, but the ForceController takes in assignment information for all fingers regardless of whether they are in contact or not. A boolean input (in_contact) tells the force controller whether the finger is in contact or not, which then determines whether the force controller uses impedance control (to the given witness point) or direct force control (on the given contact point).
The goal is to have
FingerFaceAssigner
take on the role of the two existing systems:ContactPointInBrickFrame
andContactPointsToFingerFaceAssignments
. This would require additional signals into and out ofFingerFaceAssigner
, namely:in_contact
boolean output, indicating whether thefinger_face_assignments
map contains a witness point (when not in contact) or a contact point (when in contact).Additionally, the QPController takes in a
finger_face_assignment_map
which contains only fingers that are in contact, but the ForceController takes in assignment information for all fingers regardless of whether they are in contact or not. A boolean input (in_contact
) tells the force controller whether the finger is in contact or not, which then determines whether the force controller uses impedance control (to the given witness point) or direct force control (on the given contact point)./cc @hongkai-dai