ros2 / ros2/rclcpp

Prevent API gaps between Node and LifecycleNode

Open
#898 13 comments 7 reactions 1 assignee View on GitHub

@mjcarroll is already working on this.

Since Nov 21, 2019.

backlog enhancement question
Dominant language
C++
Stars
805
Forks
564
Avg merge
1d 17h
Merged PRs (30d)
27

Description

I was working on a feature using rclcpp_lifecycle::LifecycleNode to declare a parameter when I noticed that the declare_parameter API on the lifecycle node interface does not include the ignore_overrides flag as does the version in rclcpp::Node. It seems that in addition to this, there are a handful of functions that have yet to be implemented in the lifecycle node. From a brief comparison (I didn't check all the signatures so there could be other differences), I found these functions that are missing:

  • get_fully_qualified_name()
  • declare_parameter (missing ignore_overrides argument)
  • add_on_set_parameters_callback(OnParametersSetCallbackType callback);
  • remove_on_set_parameters_callback(const OnSetParametersCallbackHandle * const handler);
  • get_sub_namespace()
  • get_effective_namespace()
  • create_sub_node()
  • assert_liveliness()

I think some PRs to implement the above functions and close the gap on the common node API is a solution, but I also would propose a discussion on a common interface by which these nodes must abide. Apparently these APIs can go out of sync with new changes, so I'd like to hear thoughts on how to better synchronize these Node classes.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.