RuntimeError: Driver 2 returned error 0xf

we are using “SoloPython” from this Github repo: GitHub - paLeziart/solopython: Python scripts to control Solo robot.

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..

Hi,

Could you try to run example.py from the masterboard-sdk directly? This will list the connected drivers, and show errors in real time.

You are using solopython, this was a prototype of the interface with a robot level abstraction. This helped develop GitHub - open-dynamic-robot-initiative/odri_control_interface: Low level control interface. that is now the base of all controllers. You might want to switch to this library to control the robot.

The error 0x0f on driver 2 suggest that no data SPI was received from the 3rd motor driver.

thank you, I try run example.py from the masterboard-sdk directly tomorrow.

while trying ~/devel/workspace$ colcon build I have got:

CMake Warning at cmake/boost.cmake:102 (MESSAGE):
  Impossible to check Boost.Python version.  Trying with 'python'.
Call Stack (most recent call first):
  CMakeLists.txt:57 (search_for_boost_python)


CMake Error at cmake/package-config.cmake:97 (find_package):
  By not providing "Findeigenpy.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "eigenpy", but
  CMake did not find one.

  Could not find a package configuration file provided by "eigenpy"
  (requested version 2.5.0) with any of the following names:

    eigenpyConfig.cmake
    eigenpy-config.cmake

  Add the installation prefix of "eigenpy" to CMAKE_PREFIX_PATH or set
  "eigenpy_DIR" to a directory containing one of the above files.  If
  "eigenpy" provides a separate development package or SDK, be sure it has
  been installed.
Call Stack (most recent call first):
  CMakeLists.txt:58 (add_project_dependency)


---
Failed   <<< odri_control_interface [2.73s, exited with code 1]
                                 
Summary: 1 package finished [30.9s]
  1 package failed: odri_control_interface
  2 packages had stderr output: master_board_sdk odri_control_interface

This don’t show errors in real time:


But motor merely a little twitching back and forth. At the same time, I want to note that after flashing the microdriver at the first power supply, no calibration was visible.

Could you try to switch two phases on one motor? If the phase order is reversed, the motor will have the behavior you describe.

How many motor do you have connected? The screenshot only shows two.

Yes, I connect only 2 motors for carefully debugging one by one.

I want to note that after flashing the microdriver at the first power supply, no calibration was visible, but in debugging mode I see that function for calibrating HAL_cal invoked, but there are red line on the left edge.

Thank you, switching two phases on the motor helped me. But whether I reverse phase order programmaticly?

If you only have two motors connected, you should plug the uDriver to port SPI0.
Some of our software expect to see uDriver populated from 0.

If you plan to calibrate only two motors, you will need to create a yaml in ordi crtl interface with only two dof.
Note that the calibration is only usefully if you need to have absolute positioning of your joint. For testing your hardware this is not mandatory.

It’s a good idea to label your phases once you find the correct order. The phases would be labeled a,b,c on the motor board.
If you don’t have a good way to label the wire, you can have a color coded heat shrink. At LAAS we do: A black, B brown, C red.

Thank you, as I understand I can’t reverse phase order programmatically?

Correct, this is not implemented


And another question, There is error appear after the motor is twitching a little. And it stopping only with right motor, when I turn on only left all work correct. I changed phase.

And something else, front Hip AA right also merely a little twitching back and forth even after I change phase, but I change phase 2 times.