Strange result while performing solo's calibration

Hello everyone,

My lab recently bought a solo 12 robot that we are trying to get familiar with.

We started with some minimal examples (e.g the one given in the master board sdk) and we had no issues to make them run. It helped us to assume (maybe wrongly) that the robot is working correctly from an hardware/low-level point of view.

Now we are trying to perform more elaborated examples (walking, CoM control,…) that requires to perform a calibration on the robot.

By performing the calibration several times we realized that often the calibration seems to give a bad result for some joints (not always the same joints, not always the same offset).

To illustrate at best what we are doing, here is a detailed explanation about the procedure we are following:

Firstly, in terms of software, we are using “SoloPython” from this Github repo: GitHub - paLeziart/solopython: Python scripts to control Solo robot.

For the calibration procedure:

  1. We unroll the robot (by putting the legs near their 0 position).
  2. We turn on the robot.
  3. We launch the main_calibrate.py file, the robot will reach it’s actual 0 position (cf. image 1)
  4. When asked, we put the robot to the good 0 position (manually or by using the calibration tool) (cf. image2)
  5. We end the script and write the given offset in the solo12.py file (previous offset values was set to 0).
  6. To test the calibration we run one of the examples that we have at our disposal (e.g. CoM control).
  7. At the beginning of the script the robot perform the calibration, but the initial position is not the expected one for several joints (cf. image 3, see bottom left leg).

This calibration issue is really blocking for us, as we would like to go further with our tests. That’s why any help would be highly appreciated :slight_smile:

Thanks a lot for your time and I stay at your disposal if further information are needed.

Best regards,
Jérémy

Hi Jérémy,

I am not 100% sure what is going on here. From experience, once thing that can cause troubles is if the zero position and the index on the encoder are close together. This might cause the troubles you see for the bottom left leg.

What you can do is to unmount the lower leg for the the bottom left leg, rotate the output joint by 180 degree (this will rotate the motor by 4.5 rotation as it’s 1:9 transmission) and then reattach the lower leg again. Redo the calibration procedure (steps 1 - 7) in your script and see if it works now.

Let me know if that helps.

Best,
Julian

Hi Julian,

Thanks for your suggestion, I will try that and keep you updated on this.

NB: On the picture, only the bottom-left leg seems to be wrong, but it’s not always the case. Anyway, I will try to perform that on each joint that cause an issue.

Best,
Jérémy

Dear Julian,

After performing different tests on the solo, we finally manage to solve the issue. Your suggestion was right and helped us to partially solve the issue (on the other hand we updated the library – solopython, it solved the rest of our problems).

Thank you very much for your help.

Have a nice day,
Jérémy

Hi, Jérémy, can you help me with you library solopython, can you share you contacts ?
I have got error RuntimeError: Driver 2 returned error 0xf. while calibrating motors.
Regardless of any input (I used ‘000010000000’ and so on ) it returns always RuntimeError: Driver 2 returned error 0xf..