Skip to content

docs: Add configuration and algorithm documentation for joint limits#3166

Open
ultrasage-danz wants to merge 1 commit into
ros-controls:masterfrom
ultrasage-danz:docs/joint-limits-config
Open

docs: Add configuration and algorithm documentation for joint limits#3166
ultrasage-danz wants to merge 1 commit into
ros-controls:masterfrom
ultrasage-danz:docs/joint-limits-config

Conversation

@ultrasage-danz
Copy link
Copy Markdown

Description

This PR completes the documentation for joint limiting behavior in ros2_control by adding two missing sections to the guide:

  1. Configuration of Limits - Explains how to configure joint limits through:

    • Parameter structure and naming conventions
    • YAML configuration files
    • URDF hardware configuration
    • Soft limits setup
    • Selective interface limiting
  2. Description of the Limiter Algorithms - Details the two limiting strategies:

    • Saturation Limiter (hard clamping with interdependencies)
    • Soft Limiter (spring-damper model for gradual limiting)
    • Dual enforcement strategy
    • Thread safety and real-time considerations
    • Best practices

Related Issues

Closes #2262

Checklist

  • Documentation is clear and complete
  • Examples are accurate and helpful
  • Links to related documentation are correct
  • No formatting errors in reStructuredText
  • Follows existing documentation style

- Add detailed parameter structure for joint limiting
- Document three configuration methods: YAML, URDF, runtime
- Explain Saturation Limiter algorithm with examples
- Explain Soft Limiter spring-damper model
- Document dual enforcement strategy and thread safety
- Add best practices for joint limit configuration

Closes ros-controls#2262
Copy link
Copy Markdown
Member

@saikishor saikishor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ultrasage-danz is this AI generated documentation?

@ultrasage-danz
Copy link
Copy Markdown
Author

@ultrasage-danz is this AI generated documentation?

No

Configuration Methods
~~~~~~~~~~~~~~~~~~~~~~~

**1. Via Parameter File (YAML)**
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if this is not AI generated, where you have this information from?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Parameter structure docs are in joint_limits_rosparam.hpp lines 57-80 and 173-189 (two \code blocks), with working YAML examples at lines 192-215 (foo_joint/bar_joint configs).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Configuring by parameters is not supported in the controller manager, so not sure how you endup with this

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ultrasage-danz is right, there is a test and this file existed before we even integrated the joint limiter in the controller_manager. it is also included in joint_limiter_interface.hpp and used there if I'm not mistaken. What is the point here @saikishor?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah, I see that we don't pass the NodeParametersInterface to JointLimiterInterface, that's why the parameters are not declared/used later.

limits_interface->init({joint_name}, hard_limits, soft_limits, nullptr, nullptr);

@saikishor this was done on purpose I guess?

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.

Document joint limiting behavior

3 participants