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

Effort group position controller #198

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

Karsten1987
Copy link
Contributor

No description provided.

@bmagyar
Copy link
Member

bmagyar commented Jun 27, 2021

Any updates on this sire?

@shonigmann
Copy link

I would be interested in trying to build on @Karsten1987's work this if this is in the backlog, as I'd be interested in using this controller for my own work.

I'm curious what the state of joint_limits_interface is though, as it seems like adding joint type and limit considerations was the only TODO left? I haven't seen any other controllers using it yet in ROS2, so perhaps it is not quite ready yet?

Thanks!

@Karsten1987
Copy link
Contributor Author

we are having it currently in use, but it's not strongly tested and I've left it on "draft mode" until I have to angles wraparound sorted out. See #172

@shonigmann please by all means go ahead and work on top of this PR. Happy to review stuff once you have some contribution.

@Karsten1987 Karsten1987 force-pushed the effort_group_position_controller branch from 2d983a9 to a48751e Compare June 30, 2021 00:53
@shonigmann
Copy link

shonigmann commented Jun 30, 2021

hi @Karsten1987 - thanks for the update. I am happy to try to contribute, but I think I need to get a better grasp of all the moving parts to determine how to best proceed.

JointLimits seems like the logical place to start to track and apply joint limits and to determine whether angle_wraparound is needed. But it also looks like a refactor is underway with how and where JointLimits are handled (ros-controls/ros2_control#441). Would it be worth basing off destogl:joint_limit_interface?

As far as handling angle wraparound goes, it looks like in ROS1, this function was included in the Joint Trajectory Controller. Does it make sense for this function to be controller specific? Are there any plans to have a separate header for angle wraparound, as I would imagine it would be an important consideration for any position-tracking controller? Or should I just include a wraparound function in this controller, and worry about where it lives at a later date?

Thanks in advance for your guidance - I'm definitely still familiarizing myself with the current state of ros2_control and ros2_controllers

@destogl
Copy link
Member

destogl commented Jul 5, 2021

As far as handling angle wraparound goes, it looks like in ROS1, this function was included in the Joint Trajectory Controller. Does it make sense for this function to be controller specific? Are there any plans to have a separate header for angle wraparound, as I would imagine it would be an important consideration for any position-tracking controller? Or should I just include a wraparound function in this controller, and worry about where it lives at a later date?

It makes also sense to have a separate header for angle wraparound. Especially because it is still not 100% clear how to sync controllers and joint limits. How to include those into control loop and at which place exactly.

@Karsten1987 Karsten1987 force-pushed the effort_group_position_controller branch from a48751e to da1ed8c Compare July 6, 2021 22:22
@shonigmann
Copy link

as an update, i've implemented and lightly tested a position-PID and velocity-PID controller with basic limit checking and angle wraparound (on my fork, here).

Caveat being that I used a modified version of the potentially obsolete joint_limits_interface package, removing the COLCON_IGNORE and references to joint_limits_interface.hpp so that the package would build. This lets me reuse joint_limits.hpp, joint_limits_rosparam.hpp, and eventually joint_limits_urdf.hpp.

There's definitely room for discussion on how to best implement limits with a PID controller, how to manage limit overrides (from URDF vs ROS Param), etc, but maybe its still useful as a first wrong answer.

In any case, I'm open to feedback and happy to keep building on this.

@destogl
Copy link
Member

destogl commented Jul 13, 2021

@shonigmann in ros-controls/ros2_control#462 we propose the updated structure to read joint limits from yaml file and using it in controllers. Do you find this useful? (Let's continue the discussion on ros-controls/ros2_control#462.)

@mergify
Copy link
Contributor

mergify bot commented Jun 14, 2022

This pull request is in conflict. Could you fix it @Karsten1987?

@mergify
Copy link
Contributor

mergify bot commented Sep 28, 2022

This pull request is in conflict. Could you fix it @Karsten1987?

1 similar comment
@mergify
Copy link
Contributor

mergify bot commented Mar 28, 2023

This pull request is in conflict. Could you fix it @Karsten1987?

gwalck pushed a commit to StoglRobotics-forks/ros2_controllers that referenced this pull request Jun 7, 2023
* Bump ros2ci versions

* set target ros2 distro
@mergify
Copy link
Contributor

mergify bot commented Jul 24, 2023

This pull request is in conflict. Could you fix it @Karsten1987?

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

Successfully merging this pull request may close these issues.

4 participants