Closed hellantos closed 1 year ago
@ipa-vsp can you test this on the PRBT robot? I have made the necessary changes to work with fake slaves see https://github.com/ipa-cmh/prbt_robot/pull/4
To test you can run:
ros2 launch prbt_robot_support prbt_ros2_control.launch.py
Improvements:
Result:
Used ros2_tracing to record the timestamp when joint TPDO is sent and recorded over 5000 values.
Great,I think if we want to get better than that, we would probably need to have an RT patched kernel. I take it we have succeeded in eliminating vibrations?
Yes, I have noticed that the vibration is mostly eliminated when running the robot at normal velocity and acceleration scaling (0.2). However, when attempting to run it at higher levels, I have found that there is still a small amount of vibration present.
@ipa-cmh @ipa-vsp when will you be merging this with the master? Is there more testing that needs to happen?
Yes we will be merging it for the next beta release. I just have to find the time to resolve the conflicts. I hope to do it this week. There are still one issues to be aware of when using. The problem is, that mode switching in ros2_control is done in the realtime loop. Our experience is, that mode switching in canopen cia402 is not really deterministic and would block the realtime loop. Consequently, we detach the mode switching function into a thread but this means we do not exactly know when switching is finished. So after activation of a controller, we currently do not know when the right operation mode is actually available.
This system interface implementation uses the perform switch function to directly switch the CANopen controlled robot into operation enable state and the appropriate operation mode, depending on the command interfaces claimed by controllers.
An appropriate ros2_control xacro yould look like this.
The bus configuration file can contain the following:
This supersedes #102. It dependes on #110