How to confirm tare F/T service is working?

Dear team,
Hope you are doing well,

I was checking the tare service for the force-torque sensor. I printed the wrench from the /observations topic before and after calling the tare service (no cables is spawned yet). Both wrench were exactly the same. After calling the service, shouldn’t I expect the wrench to be zeros after taring if I don’t spawn a cable? If I am mistaken, can you guide on how to confirm the FT sensor is tared?
Thanks in advance,

Ahmad,

ArmoByte

Hi!

The tare service is not meant to be part of a public API (and I think you wouldn’t be able to call it from your submission container). It is meant more for controller accuracy and scoring, since it’s an internal detail we didn’t want it to affect user readings hence it doesn’t affect observations. Also its implementation is very simple, my recommendation is that if you need taring for your application you should implement it in your model.

I see. I am not actually using it for the submission as I understand that it will be automatically called for scoring. My concern though is that in training. I want to be able to monitor the force/torque while sticking to the magnitude and duration constrains. For that, I wanted to use it to zero the wrench. I do understand now that you made it in a way to not affect the observations topic but being considered only in scoring. Am I correct in my understanding?
Also, if I still want to have the same behaviour, is it safe to say that the subtraction of each component of the initial wrench (wrench before spawning the cable) from the observations is leading to the same behaviour as when taring the sensor?

Best,

Yap it only affects scoring.

Subtracting the initial wrench would be “kind of” OK but not really accurate. Since the wrench is the result of gravity it actually depends on the orientation of the gripper so what you should really do is project the wrench along the Z axis (gravity) and rotate the offset you apply according to the end effector orientation. This is what the aic_controller does so you can have a look at that implementation.

I see. Will check this. Thank Luca!