How I can sync Pypot with an other robot using XL320?

Hi everyone !
I make a new humanoid robot made by XL-320’s (I use 1 USB2AX) and I try to sync and configure it with Pypot but i counter some problems, Pypot reconize the controller and the motors but, it’s impossible to make a configuration with the new skeleton.
I follow this tutorial to do it but it won’t works: http://poppy-project.github.io/pypot/controller.html#writing-the-configuration

Finally, I want to power the robot with Pypot like Poppy or Ergo robots.

Thank you in advance !

Did you check this repository ?
It should be very similar.

Also can you show us picture of the actual wiring so we can check if everything is alright ?

I checked this repository, it’s just to run the ErgoJr, not to make another configuration …

yep but it is very similar, you just have to take the ErgoJr configuration and change it for your robot.
Then you can load it as usual with pypot:

import json
import pypot.robot

my_robot = pypot.robot.from_json('my_new_robot.json')

I receive a “ValueError: No JSON object could be decoded” error when i try

can you copy/paste your json file ?

There is a test config file with one motor.

test_robot = {
        "controllers": {
            "my_dxl_controller": {
            "sync_read": true,
            "protocol": 2,
            "attached_motors": [
            "testm",
            ],
            "port": "auto"
            },
        },
        "motorgroups": {
            "testm":["
                m1,
            "],
        },
    
    
        "motors":{
            "mtest":{
                "m1": {
                "offset": -45.0,
                "type": "XL-320",
                "id": 3,
                "angle_limit": [
                -135.0,
                45.0
                ],
            },
        },

There are several syntax errors in yout config file, it is why you get this error.

This one should be better:

{
  "controllers": {
    "my_dxl_controller": {
      "sync_read": true,
      "protocol": 2,
      "attached_motors": [
        "group1"
      ],
      "port": "auto"
    }
  },
  "motorgroups": {
      "group1":[
          "m1",
      ],
  },
  "motors":{
    "m1": {
      "offset": 0.0,
      "type": "XL-320",
      "id": 3,
      "angle_limit": [
      -150.0,
      150.0
      ],
      "orientation": "direct"
    },
  }
}

I receive a “ValueError: No JSON object could be decoded” anyway …

I edit the file like this:

 {
       "controllers": {
                        "my_dxl_controller": {
                            "sync_read": true,
                                "protocol": 2,
                                "attached_motors": [
                                    "group1"
                                    ],
                                "port": "/dev/tty.usbmodem1411"
                        }
                    },
                        "motorgroups": {
                            "group1": [
                                "m1"
                                ]
                        },
                        "motors": {
                            "m1": {
                                "offset": 0,
                                "type": "XL-320",
                                "id": 3,
                                "angle_limit": [
                                    -150,
                                150
                                    ],
                                "orientation": "direct"
                            }
                        }
                }

And I received a “NotEmplementedError”. Take a look at the screenshot :

can you show us how you have connected your motor ?

The [3] XL-320 motor is connected thru the SMPS2Dynamixel and the USB2AX via USB port

Did you notice that the XL320 need a 7v power supply and not 12V ?

1 Like

I powered the XL-320 with 12v, I try to 7V and it works! ?
physically, the engine runs with 12v circuit board has a protection, but the code does not run with 12v (you can read the voltage on Dynamixel motors) that is the problem .
I never thought that the bug would come by the voltage…

Thank you for fast responses ! :smile:

cool mystery solved !

I think the motor raises an error above 9v and this error may not be handled by pypot.

http://support.robotis.com/en/product/dynamixel/xl-series/xl-320.htm
Voltage : 6 ~ 8.4V (Recommended Voltage 7.4V)

1 Like

You will also have this “none error” if you use a 5V alimentation btw.