Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2XL430-W250-T - Able to ping but not to write... #278

Open
swinterbotix opened this issue Dec 11, 2019 · 13 comments
Open

2XL430-W250-T - Able to ping but not to write... #278

swinterbotix opened this issue Dec 11, 2019 · 13 comments

Comments

@swinterbotix
Copy link

swinterbotix commented Dec 11, 2019

  1. Setup was done using a U2D2

  2. Which Dynamixel have you used? and how many? (Please describe below format to all connected Dynamixels)

    • Model Name: 2XL430-W250-T (a.k.a 1090)

    • ID: 8 and 9

    • Baud Rate of Dynamixels: 1000000

    • Protocol Version: 2.0

  3. Write down the commands you used in order

Using the 'itemWrite' function that is part of the dynamixel_toolbox (the dynamixel_toolbox version that I'm using is the one that comes when you do 'sudo apt install ros-kinetic-dynamixel-workbench-toolbox' from the command line).
Specifically...

const char* log;
itemWrite(8, "Drive_Mode", 0, &log);

  1. Copy and Paste your error message on terminal

[DynamixelDriver] Failed to get the Tool
Failed to write value[0] on items[Drive_Mode] to [ID : 8]

  1. Please, describe detailedly what difficulty you are in

    • If I try using the itemWrite function to write to the servo (model shown above), I get the above error when there should be no error. Note that I am able to ping the motor successfully - but seem to have trouble writing to the registers with the itemWrite function. Also note that when using two separate XL430 servos, the same code works just fine.
@ROBOTIS-Will
Copy link
Contributor

@swinterbotix
Thank you for reporting the issue. I'll test and look into the code and get back to you.

@ROBOTIS-Will ROBOTIS-Will self-assigned this Jan 3, 2020
@swinterbotix
Copy link
Author

Thanks!

@ROBOTIS-Will
Copy link
Contributor

@swinterbotix
I've just tested with 2XL430-W250-T(ID 1 & 2, 1Mbps) + U2D2(/dev/ttyUSB0) on Linux.
I modified the example dynamixel_workbench_toolbox/examples/src/k_Read_Write.cpp to change the "Drive_Mode" instead of turning on the LED.
After running the code for ID 1 and 2, I checked the modified value from DYNAMIXEL Wizard 2.0 without any problem.
In case of 2XL430-W250-T, two actuators are connected internally, therefore, if one of them is in Torque On state, the other will also be in the same status that will not accept any change in EEPROM.
Please try changing the Drive_Mode under Torque Off state.
Thank you.

@swinterbotix
Copy link
Author

@ROBOTIS-Will
I made sure to torque off both actuators before writing to the EEPROM, but I'm still getting the error message. I'll try running the example cpp file you mentioned though and see if I have any luck with that.

@ROBOTIS-Will
Copy link
Contributor

@swinterbotix
Below is the source code that I modified and used to test the DYNAMIXEL.
k_Read_Write.cpp.zip

@swinterbotix
Copy link
Author

Hi @ROBOTIS-Will,

I downloaded your zip file and tested it out. As you mentioned, the code was able to run successfully. However, that was only when running the master branch of the dynamixel_workbench repository. Afterwards, I switched to the kinetic-devel branch (which I assume contains the current version of the code available via apt-get) and recompiled the code in the dynamixel_workbench. When running the same cpp file, I got an error message ONLY when working with the 2XL430-W250-T servos. The other servos had no issue. Also, with the kinetic-devel branch code, the pinging was successful for the 2XL430-W250_T servos - but read/writing resulted in the error message 'Failed to get the Tool'. So it looks like you might have to reupdate the 'dynamixel_workbench_toolbox' code available on apt-get to your most recent version.

@JaehyunShim
Copy link
Contributor

@swinterbotix

Dynamixel workbench does not support the 2xl series. Please use DynamixelSDK

Regards,
Ryan

@swinterbotix
Copy link
Author

@rjshim,

I'm a bit confused. The Dynamixel workbench seems to work with the 2xl series assuming ROS is not used. Are you saying that the dynamixel_workbench ROS metapackage does not support the 2xl series?

@JaehyunShim
Copy link
Contributor

@swinterbotix

The 2XL and 2XC models are not compatible with the current version of DXLWB. It might be updated in the future but we do not have any concrete plans about it.

Ryan

@ROBOTIS-Will
Copy link
Contributor

@swinterbotix
We apologize that some of the recent DYNAMIXEL had not been updated to the Kinetic branch of DYNAMIXEL Workbench.
As master branch already supports 2XL and recent products, it will soon be merged into Kinetic branch as well.
Once it is completed, we'll give you a notification.
Thank you very much for your patience.

@swinterbotix
Copy link
Author

Thank you! I really appreciate this! Do you think it would be possible to also merge the master branch into the Melodic one as well? My company plans to use the 2XL servos in a new line of robot platforms and the sooner we can get working ROS wrappers for the melodic version of the dynamixel workbench, the sooner we can complete development.

Thanks,
Solomon

@ROBOTIS-Will
Copy link
Contributor

@swinterbotix
I believe merging the source code into the Melodic wouldn't be a much trouble once we complete the Kinetic version. However, due to the characteristics of 2XL hardware configuration, some features may not work as other single axle DYNAMIXEL products (such as modifying EEPROM of ID A while ID B is in Torque on status).
Thank you.

@swinterbotix
Copy link
Author

That's fine. I can always check for that in my code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants