General Issues Solo12 - Calibration & Driver Errors

Hi everyone!
For a few week we have a Solo12 robot at our research lab. Meanwhile, we were able to run some basic movements and got more familiar to work with it. But there are also some issues that we couldn’t solve yet, and we get into regularly.

  • Calibration not always successfully:
    Sometimes it happens that we calibrate the robot and after as we try to run a provided demo example, the robot doesn’t take up the desired initial position. Mostly when this issue occurs, 3 legs go for example to the desired initial position and one of them causes a problem.
    Even when we turn off the power from the robot and also disconnect the Ethernet connection to ensure having no voltage on the electronic of the robot, the calibration isn’t always successfully, and the described problem may occur multiple times.
    We are also aware, that the encoder Offsets has to be to set to zero before calibration.

  • Unexpected Driver errors:
    Quite often we get unexpected Driver errors. For example when we do trajectory replaying of a basic movement and holding the robot or apply one of the demo examples, suddenly a driver error occurs. Sometimes it also happens, that we already get a driver error in the calibration process. While the device is detecting the indexes, the error appears and one of its joint swings out randomly. The error is raised in the RobotHal object by calling the UpdateMeasurment method. solopython/abstractRobotHal.py at master · thomasfla/solopython · GitHub Line 189

When we restart the program after such an error, it often happens that the robot still goes to the desired initial position but causes a high pitch noise. We have to reconnect the robot to the power supply after anyway, as it wouldn’t work properly anymore.

In general Solo12 isn’t working reliable and stable for use yet. To set up everything we followed on the tutorial Solo12 - Tutorial for validation - Google Docs provided by PAL. We tried to control solo from different computers with different Ubuntu and real time kernel versions. And it seems the issues do not depend on the device used to control solo.
Did someone of you have similar issues and how could you solve them. Or do you have some other suggestions what could cause these problems and what we could try to get rid of them?

Thanks a lot and best,
Adi

Hi Adi,

sorry to hear you are having troubles with the robot.

About the calibration: When you put the robot into the initial position, how far is it away from the index position? If the index position is close to the initial starting position, this can cause troubles. In such a case, you can just spin the output of the joint module by 180 degrees (rotate the motor by 4.5 rotations) and try again.

About te unexpected driver errors, do you know which error you are getting? If you can provide us with the error message, we can help debug things further.

Best,
Julian

Hi, I have error output sudo PYTHONPATH=$PYTHONPATH python3 soloMinimal/solopython/main_calibrate.py -i eth0. I have got this for all 12 motors. (even when I run their separately by 100000000000 and so on.

[0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0]
[-0.58484894  1.02516174  0.60852939  0.70330811  2.9996531   0.41117802
 -1.51394916  2.75785565  1.24798632 -1.37899899  1.06610358 -1.15509021]

Enter a binary number that represents the motors you want to calibrate.
LSB: first motor, MSB: last motor
Example with 8 motors: input "10011010" will calibrate motor 1, 3, 4, 7.

111111111111

if_name: eth0
Using Ethernet (eth0)
Shutting down connection (eth0)
Traceback (most recent call last):
  File "soloMinimal/solopython/main_calibrate.py", line 130, in <module>
    main()
  File "soloMinimal/solopython/main_calibrate.py", line 126, in main
    example_script(parser.parse_args().interface)
  File "soloMinimal/solopython/main_calibrate.py", line 77, in example_script
    device.Init(calibrateEncoders=True) # finding encoder index happens in here
  File "/home/dmitriy/git/soloMinimal/solopython/utils/abstractRobotHal.py", line 72, in Init
    raise RuntimeError("Not all declared motor drivers are connected.") # TODO replace RuntimeError by custom exception
RuntimeError: Not all declared motor drivers are connected.