-
Notifications
You must be signed in to change notification settings - Fork 235
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
Freedrive Controller #1114
Freedrive Controller #1114
Conversation
Would an action be nicer, semantically? Start of action -> enable freedrive. Cancel action -> stop freedrive. The goal client handle would become something similar to a 'token' or 'mutex' (not exactly, as it wouldn't be as safe or strict, but conceptually). Concurrent goal -> reject (something/someone else already has 'control' of the freedrive mode). Event on robot or robot-controller causes freedrive to be disengaged -> abort action (notifies client something happened). A subscriber can't do that. it would also make it (slightly) harder for something to take over control of the robot by just spamming And it would make it semantically clearer it controls some specific functionality (ie: because a custom action goal needs to be submitted, instead of a generic |
I have to say, that makes sense! Thank you for the input :-) |
One aspect that would need some thought though: time-out (ie: when should freedrive be stopped due to the client no longer 'responding'). There might be some way to exploit liveliness QoS or something, but I'm not sure how that would work with actions. |
I just resolved the conflicts with the main branch. @VinDp is this ready to review? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think, we need to revisit the RT-compatibility, especially regarding deactivate()
.
ur_controllers/include/ur_controllers/freedrive_mode_controller.hpp
Outdated
Show resolved
Hide resolved
ur_controllers/include/ur_controllers/freedrive_mode_controller.hpp
Outdated
Show resolved
Hide resolved
ur_controllers/include/ur_controllers/freedrive_mode_controller.hpp
Outdated
Show resolved
Hide resolved
Co-authored-by: Felix Exner <feex@universal-robots.com>
…r.hpp Co-authored-by: Felix Exner <feex@universal-robots.com>
…r.hpp Co-authored-by: Felix Exner <feex@universal-robots.com>
Co-authored-by: Felix Exner <feex@universal-robots.com>
Co-authored-by: Felix Exner <feex@universal-robots.com>
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #1114 +/- ##
========================================
+ Coverage 3.59% 3.78% +0.19%
========================================
Files 13 395 +382
Lines 947 43449 +42502
Branches 152 6395 +6243
========================================
+ Hits 34 1645 +1611
- Misses 843 41661 +40818
- Partials 70 143 +73
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems good to me :-)
Thank you @VinDp
@Mergifyio backport humble |
✅ Backports have been created
|
This controller allows activating freedrive mode by continuously publishing an a topic (cherry picked from commit 8d4ba94) # Conflicts: # ur_robot_driver/doc/usage/controllers.rst # ur_robot_driver/src/hardware_interface.cpp # ur_robot_driver/urdf/ur.ros2_control.xacro
This controller allows activating freedrive mode by continuously publishing an a topic (cherry picked from commit 8d4ba94) # Conflicts: # ur_robot_driver/doc/usage/controllers.rst # ur_robot_driver/src/hardware_interface.cpp # ur_robot_driver/urdf/ur.ros2_control.xacro
This controller allows activating freedrive mode by continuously publishing an a topic (cherry picked from commit 8d4ba94) # Conflicts: # ur_robot_driver/doc/usage/controllers.rst # ur_robot_driver/src/hardware_interface.cpp # ur_robot_driver/urdf/ur.ros2_control.xacro
The PR aims at introducing the possibility of enabling the freedrive mode through the ROS2 driver. It relies on the implementation of a specific controller to handle it, in order to correctly deactivate other controllers and avoid unsafe jumps of the robot once the freedrive mode is switched off.