-
Notifications
You must be signed in to change notification settings - Fork 45
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
Configuration problem for Ingenia EVE XCR and EVE S XCR #147
Comments
Check few things like:
|
Hi @ammaraljodah,
I have noticed that the problem can be caused by the PDO register
Do you have any suggestions? Best |
Don't worry about the hardware interface, you are right once it comes into OP it will enable automaticly. |
Hi @ammaraljodah, many thanks for your support, The configuration files for the drives are equal for the pdo, only the vendor_id e product_id are different. To find these values I used the command ethercat slaves. Best |
You need to give the permission for the user. [WARN] [1728300028.797540387] [controller_manager]: Could not enable FIFO RT scheduling policy. Consider setting up your user to do FIFO RT scheduling. See [https://control.ros.org/master/doc/ros2_control/controller_manager/doc/userdoc.html] for details. |
Drop the controller frequency to 100Hz in the urdf of the plugin and in the yaml of the ros2 control. |
Also use native driver for your ethernet controller instead if the generic |
Hi @ammaraljodah, You are right I am no using a rt patch kernel. Does it make any difference (the problem is related to the pdo config, i do not understand the correlation)? Unfortunately, I have not an ethernet card compatible with the ones required by link, as you can see below:
Now I will install the preempt patch and I will update you. Many thanks |
How you know it is PDO config, have you mapped them correctly?? |
You need to map the PDOs using a set of SDOs if your drive is having flexible PDOs |
Hi @ammaraljodah, I have followed your suggestion to use rt kernel but it doesn't work, I have the same problems. Yes, the pdo used in the config files should be fine. Here the sdo available for the ingenia drives sdo_map.txt (This file is obtained by using Here the output of Here the output of I don't understand how I can control and move only one of the 3 drives, which are identical except for the product and vendor id. Many thanks for your help Best regards |
You need to map the PDOs, currently you are not mapping any at all. |
Hi @ammaraljodah, I'm not sure what you're referring to.
What am I missing? Could you please be more clear? Best |
Is this servo drive has fixed mapping or flexible mapping? |
Sure! Here's the revised version with your additional details: Hi @ammaraljodah, Good question! I believe there are 4 predefined RPDOs and 4 predefined TPDOs (refer to page 44 of the Ingenia manual). However, when I power cycle the system and run
How can I verify this?
If the PDOs are present on the drive, I believe the ones I’m trying to set might be different from the predefined fixed mappings. Bets |
Do the flexible mapping to be sure 4.1.4.3 Mapping procedure |
Hi @ammaraljodah, Could you explain how this is handled in ros2_ethercat? Isn't this process managed automatically by ros2_ethercat? Best regards, |
Ok, what is the output of |
Hi @ammaraljodah, Results after switching the drives off and on again before running ros2_ethercat:
After launching -output
As you can see, the PDOs are configured after the first launch of ros2_ethercat. Best Regards |
You are not setting the alias and position correctly
Your alias Ideally your bus be like |
Are you using ethercat junction? |
|
Make sure to change the alias and position accordingly in the urdf file |
Hi @ammaraljodah,
As you can see the positions are all different only the aliases are different. I do not know why I have an alias of 65535, should it be 0? I use an ethernet RJ45 couple, I have not an ethercat junction. Best |
The alias in urdf should match the one from the ethercat slaves command. |
Your urdf is Remove the unused drive and make the actual bus match the urdf |
Hi @ammaraljodah, I have changed the alias and now the EtherCAT slaves output is:
So now the positions and aliases are good. However, the first two drives do not work. here the output from ros2: here the output from dmesg -w: Many thanks for your time and help. Best |
Two drives time-out when master requested to put them in op mode. |
Hi @ammaraljodah, I have modified the URDF to include only one drive at a time. For the first drive I have also disconnected the other two drives from the Ethercat chain (I cannot disconnect them for the other cases) and connected the Controller for cia402 drives #61. The result for the first drive:
The result for the second drive:
The result for the third drive:
Best |
Hi @pzanne, so the issue seems related to the ubuntu version(24.04). I have tested your last code on Ubuntu 22.04 with ros2 rolling and it works (the drive switched to OP). ros2 output: test_1126_ros2.txt Do you know what the problem is with Ubuntu 24.04? And what changes have you made to reach the OP ? Best, |
Hi Alessio, Ok, for the moment I haven't changed anything in our driver, the package you tested is just the direct adaptation of the c++ program into a hardware interface. Everything is static and only ‘works’ for your everest driver. It validates the ros2_control pipe but doesn't solve our problem. |
Hi @pzanne, here the result of the test performed with the following ros2 pkg:ingenia_everest_1128.zip the dmesg output: test_dmesg_2811.txt the ros2 output: test_ros2_2811.txt the wireshark file: test_2811.zip the drives was not able to reach the OP: Best, |
Hello Alessio, Best |
Hi @pzanne, here the result: wireshark: test_1202.zip dmesg: test_dmesg_1203.txt ros2: test_ros2_1202.txt output Best, |
Hello Alessio, I deleted the clock synchronization on the |
Hello Alessio, I don't know if you've had time to test the new version, but we've just changed the timing of ethercat initialisation which could cause problems, they are pushed to the dedicated branch |
Hi @pzanne, I will try to test it as soon as possible. Best, |
HI @pzanne, here the result:
-output:
Best |
Hey, I just made it work with an Ingenia Everest-XCR-E. Here is mine :
If I switch the " operation mode " and "operation mode display" values to the one you put, it seems that I get into the same SAFEOP E state. |
Hi @Raphaelb10, Thank you for your suggestion. However, it seems the registers you are referencing fall outside the CiA 402 standard, and the drive in question is compliant with the CiA 402 specification. Best regards, |
Hi @iamdrfly, I use these registers because I already had issues before with ingenia drives not being fully compliant to CiA402 (had missing registers, and errors like you when trying to configure them as PDO). The registers I used above are supposed to give the same values as the register of the CiA402, sometime the data type is not the same, but from a user point of view, it do not change much. Its worth a try imo. I also used them for over 2 years on several ingenia drives, and had no issues so far. If you stictly cannot use the non-CiA402 registers, I would try to update the firmware of the XCR drives to latest one, as they might have patched the non-compliancy since you bought them. Especially as the EVE-XCR-S (with more recent firmware) works in your case. Hope it helps, |
Hello, |
Hi @pzanne, Best |
Hello Alessio, |
On the other hand, I hadn't seen your question about access to the driver. |
@pzanne I am not sure to understand why you need this modified version of the driver, but if everything works on the main branch (I am surprised as it do not work for my EVE-XRC, with your config, due to the 0x6060 pdo), then I agree that the error is probably elsewhere. |
@Raphaelb10 |
Hi @pzanne , From my understanding, the value do not matter as long as the PDO object is configured correctly and accepted by the drive, as PDO communication only start after the slave is in OP mode. But I tried, by putting 0x24 (=36) as a default value, and it works as before : But honnestly it looks to me that the documentation is not up to date with the drive's behavior, causing an issue when configuring PDO. I get the same error as you if I use the 6060 register for some reason. Best regards, |
@Raphaelb10 |
Hello Alessio, |
Hi @pzanne, sorry for the delay. I am outside the lab and I cannot test it. Can I test it next week? If you want I can give you access via anydesk to my PC when I am back, please write me an email at: alessio(dot)mosca(at)supi(dot).ch to setup the date. Best, |
Hello Alessio, |
Hi @pzanne I have tested the new code and it seems I have a problem with the ros2 control manager now, as you can see from the output, what did you change? output ros2 dmeg: wireshark: Best |
Hi Alessio, we haven't changed anything that could explain this problem (we've mainly inverted 2 sections of code to reverse the order in which the channels are loaded in the ethercat configuration we load tpdo before rpdo). Could you test with the previous version to be sure? |
Hi @pzanne, It was my fault (i was using rolling instead of humble ) The drive does not reach the OP mode: here the logs ros2: dmesg: Best |
Hi Alessio, Can you enable the debug level 1 in the ethercat stack and resend us the kernel log |
Hi Alessio, |
Hi @pzanne, I forgot that in the code you had given me to try there was this error in the yaml, sorry. I tried with the humble branch and now I can reach OP. May I ask you what did you change ? Here the logs with debug level 1 wireshark: dmesg: ros2: Many thanks, Alessio |
Hello Alessio, Good news !!
Could you do another test to determine which of these changes is the source of the problem? Now that we're able to make a driver go into operational state, we need to check that we can make the motor move to be sure the problem is resolve. |
Hi =D
I am trying to control three Everest XCR drives using ROS2 EtherCAT driver. I followed the instructions from this guide. However, I can only enable and move one drive (Drive 3), while the others do not reach the "operation enabled" state.
Since my 3 drives have different product IDs, I created separate YAML configuration files for each of them. I also attempted to switch the RPDO and TPDO orders without success. Below are the details of the configuration for each drive.
The drive's reference manual manual
EtherCAT & CANopen registers link
Configuration for Drive 1 (EVE XCR):
Configuration for Drive 2 (EVE XCR):
Configuration for Drive 3 (Working drive EVE S XCR):
Below is the ros2_control EtherCAT configuration:
My setup is based on Ubuntu 22.04 and ROS2 Rolling.
I've attached the dmesg output obtained with EtherCAT debug level set to 1 for both scenarios (with and without the 0x6060 register).
the output from ros2 for the first scenario is:
The output from ros2 for second scenario (without x6060) is:
test_with.txt
test_without_6060.txt
Many thanks for your time
Best
Alessio
The text was updated successfully, but these errors were encountered: