lerobot
lerobot copied to clipboard
Loads calibration file if it exists
What this does
In this hackathon a problem arised when lending each other's arms. Say I have my calibrated arm and lend it to a friend. Since he doesn't have my calibration files (or doesn't put them in the right place 🙃) he will do a new calibration. When I get back my arm, even though I have calibration files which I would like to use by default, lerobot triggers recalibration. This is because the definition of calibrated is whether the values in the bus match those in the file. Hence, from this definition, calibrate should also be to just write to the bus the current values in the file if available.
So, I propose the following change
def calibrate(self) -> None:
...interactive calibration logic
to
def calibrate(self) -> None:
if self.calibration: # loaded from local calibration file
self.bus.write_calibration(self.calibrate)
return
...interactive calibration logic
Alternative
I see there is a fair amount of repetition among the robots and teleoperators that use a bus. I'm all in favor of being explicit rather than to have less code but also less clarity. Another option would have been to have some BusMixin or something.
How it was tested
Added above change and my arm used the loaded file instead of triggering interactive calibration
How to checkout & try? (for the reviewer)
Change some value on the calibration file and then connect to the robot. Instead of prompting to recalibrate, if should just write to the bus the new value.
Hi @jccalvojackson, I agree :)
Although this may be a PR that the team would like to integrate as-is, a few of us have also been talking about possibly greater changes. Would you like to be a part of those discussions?
Ref #1145
Hi @jccalvojackson, I agree :)
Although this may be a PR that the team would like to integrate as-is, a few of us have also been talking about possibly greater changes. Would you like to be a part of those discussions?
Ref #1145
Happy to participate in that discussion, I would love to see a different way of handling configurations. However, I do think this issue is slightly unrelated because as of now this logic would hold irrespective of how this calibration attribute was passed into the robot/teleoperator.
Hi @jccalvojackson,
Thanks for the PR and for signaling this issue ! I believe the problem you encountered was resolved in #1528. Could you confirm it indeed solves the calibration issue on your side ? ;)
Best,
Caroline.
Hi @jccalvojackson,
Thanks for the PR and for signaling this issue ! I believe the problem you encountered was resolved in #1528. Could you confirm it indeed solves the calibration issue on your side ? ;)
Best,
Caroline.
Can't check now, but yeah, is the same idea
addressed by https://github.com/huggingface/lerobot/pull/1528