Forums Niryo One Troubleshooting NiryoOne V2 Dynamixel xl430-w250 not reaching goal position

Tagged: , ,

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • FindingNiryo
    Participant
    Post count: 103

    Moving between stored positions in NiryoOne Studio robot V2 Joints #4 & #5 (xl430-w250) do not reach zero.

    moving all joints from -45 degrees toward zero: joints 4&5 consistently stop at -0.023.

    moving all joints from +45 degrees toward zero: joint #4 consistently stops at 0.030, #5 consistently stops at 0.012.

    I would expect zero to be an exactly reachable joint position (joints 1,2,3, & 6 achieve it).

    Dynamixel xl430-w250 resolution is 4095/rev = about 0.001534 radians.

    Worst case error should be about +/- 0.000767 radians.

    Edouard Renard
    Keymaster
    Post count: 234

    I’ve also checked that on a robot we have here, and can confirm a lack of precision for Dynamixel XL430. We give the correct value to the motor from the code, so it seems that the motors have some looseness from the inside. This is likely to happen, due to the gear ratio of the motor (258.5 : 1), and the fact that the material used is plastic instead of full metal for gears (for example, the RX Dxl motors use full metal gears).

    We will try to investigate this further this week and see if there is something that can be done.

    FindingNiryo
    Participant
    Post count: 103

    There seems to be a dead band where Dynamixel joints will not move unless target is at least 0.015 radians offset from current position.

    The only parameter that corresponds to this behavior is: Moving (122)

    http://support.robotis.com/en/product/actuator/dynamixel_x/xl_series/xl430-w250.htm#bookmark31

    Moving Threshold(24) Default values of 10 units .088 degrees per second comes out to 0.015344 radians.

    The documentation indicates this will not trip while seeking goal, but it’s a suspicious coincidence.

    The other possibility is that that the I component of PID is not allowing the motor to settle on small offsets.

    Where are Dynamixel parameters (mode, min/max velocity,Moving Threshold(24), PID, etc.) set?

    Edouard Renard
    Keymaster
    Post count: 234

    I’ve made the test by using XL-430 motors only, without plugin anything on them, and can confirm the 0.015 radian precision.

    The issue happens when motors are used with the robot, as additional load is applied on them.

    Nice observation with the Moving Treshold (24). However, from what i understand, it will only set the Moving (122) to 1 or 0, and this value is just used by the user. This is not something used by the motor itself.

    We are planning to work soon on the internal PID of the motor to see if we can maybe improve it for Niryo One. Getting the same precision as the motor itself with no load would be great.

    The Dynamixel parameters you speak about are not currently set from the Niryo One program on RPi. If you want to change them by yourself, you have 2 choices:

    – use a device like USB2Dynamixel and connect the motors to your computer

    – or improve and use the Dxl driver we created on the Raspberry Pi (here)

    FindingNiryo
    Participant
    Post count: 103

    Dynamixel Workbench can be installed on the Raspberry Pi following these instructions:

    http://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_workbench/

    Should provide control of all the Dynamixel parameters, and easy testing of robot performance.

    would need to configure single_monitor.launchNeed correct device name and baud rate

    <arg name=”device_name” default=”/dev/ttyUSB0″/>
    <arg name=”baud_rate” default=”57600″/>

    Edouard Renard
    Keymaster
    Post count: 234

    We’ve also tried this Dynamixel Workbench package and confirm it works great (but for only one motor at a time).

    However if you are running this on the Raspberry Pi 3B, you’ll have to change:

    – device_name:  /dev/serial0

    – baud_rate: 1000000 (we have configured all motors to communicate at 1Mbps)

    (those info can be found here)

    Note that we’ll soon provide a script so you can directly change the Dynamixel registers on Niryo One, from the Raspberry Pi. So you won’t have to install any other package. I’ll make an update on the forum when the code is available on github.

    FindingNiryo
    Participant
    Post count: 103

    Looking forward to Niryo tools to set PID, in the mean time I tried building Dynamixel Workbench with catkin_make but get errors:

    [85%] Building CXX object dynamixel-workbench/dynamixel_workbench_single_manager_gui/CMakeFiles/dynamixel_workbench_single_manager_gui.dir/src/main.cpp

    c++:internal compiler error: Killed (program cc1plus)

    [91%] Build target dynamixel_workbench_single_manager_gui Makefile:138: receipe for target ‘all’ failed make:***[all] Error 2

    invoking “make -j4 -l4” failed

    Any assistance would be appreciated.

    • This reply was modified 10 months, 3 weeks ago by  FindingNiryo.
    FindingNiryo
    Participant
    Post count: 103

    Trying to run dynamixel_workbench

    with:

    sudo chmod a+rw /dev/serial0

    roslaunch my_dynamixel_workbench_tutorial single_manager.launch

    * /baud_rate: 1000000

    * /device_name: /dev/serial0

    result: “Please Check USB Port authorization and Baudrate [ex : 9600, 57600, 115200, 1000000, 2000000]

    …Failed to find dynamixel

     

    Edouard Renard
    Keymaster
    Post count: 234

    c++:internal compiler error: Killed (program cc1plus)

    invoking “make -j4 -l4” failed

    This is because the Raspberry Pi 3B can’t keep up with 4 cores, and the program crashes. You have to use “catkin_make -j2 -l2” so it will use only two cores 🙂

    …Failed to find dynamixel

    In fact, the Dynamixel workbench works well when you have a USB to Dxl adapter (there is a microcontroller on the adapter which handles the half-duplex communication). On the Raspberry Pi 3B + custom Niryo RPi shield, this won’t work like that. We added some hardware component to handle the half-duplex comm.

    So we had to modify the dynamixel_sdk to work with our setup, you can find the modification here on github.

    Conclusion -> either you

    1. Try to use dynamixel workbench with our customized dynamixel_sdk

    2. Get a USB to Dxl adapter

    3. Or wait a few days before we publish a script that will allow you to directly change (during runtime) the values inside Dynamixel motor registers 🙂

     

    FindingNiryo
    Participant
    Post count: 103

    Looking forward to option #3.  I see updates in Github repository for Dynamixel messages.

    Is there a general announcement with update instructions and/or example command line ROS message.

    Will this functionality be incorporated into NiryoOne Studio?

    Edouard Renard
    Keymaster
    Post count: 234

    Yes, we’ve just published 2 command line tools to setup and send custom value to any register you want ! You can find the tools here.

    I think we’ll make a general announcement will all new features when we release the 2.1.0 tag

    FindingNiryo
    Participant
    Post count: 103

    Any advances being made in this area? Does the Niryo team have some improvements coming for joint 4,5 position accuracy?

    Edouard Renard
    Keymaster
    Post count: 234

    As for now we don’t have ready improvement for joint 4&5 (XL-430 motors) position accuracy.

    Were you able to try using the command line tools to change Dynamixel registers?

    FindingNiryo
    Participant
    Post count: 103

    Yes. The command line tools allowed successful modification of the PID parameters. I have not attempted to tune the controllers to improve xl430 performance beyond verifying that changes to registers result in expected behavior. I was hoping Niryo staff would optimize these parameters in order to improve the performance of the arm.

    FindingNiryo
    Participant
    Post count: 103

    Is this something the Niryo staff will look to optimize in order to improve the performance of the arm?

Viewing 15 posts - 1 through 15 (of 17 total)

You must be logged in to reply to this topic.