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

WIP: Update project to 0.0.2 using rclcpp::waitset #82

Open
wants to merge 21 commits into
base: rolling
Choose a base branch
from

Conversation

carlossvg
Copy link
Contributor

@carlossvg carlossvg commented Jun 30, 2021

Summary:

  • Remove topic statistics support. It's not a real-time safe approach to report statistics.
  • Refactor launch files. Separated in different launch files. Now it's possible to run each node and rviz ndividually.
  • Process settings command-line options moved to yaml param files. Process settings added as parameters.
  • Refactor process settings tool class. No command-line arguments.
  • Created pendulum_tests package to implement integrations tests.
  • Removed some integration tests. Integration test go now in pendulum_tests.
  • Removed pendulum_demo package. Executables are now self-contained in their package. There is no composition executable. Each node runs in its own process.
  • Removed deadline QoS support. Deadlines are detected using wait-sets.
  • Created real-time loop using a wait-set.
  • Launch files run nodes in separate processes.
  • Real-time tasks are run in a separate thread.
  • Shared variables between real-time thread and non-real-time thread use RealtimeObject or atomics.
  • Add test to catch dynamic memory allocations in real-time safe functions.
  • Add common PendulumStatus data struct.
  • QoS depth changed to 1. We only care about most recent message.
  • Default update period changed to 1ms.

TODO:

  • Bump version to 0.0.2
  • Update instructions
  • Document code
  • Add RT params
  • Add duration option

- Creates a real-time callback group
- Creates a real-time loop function using rclcpp::waitset
@carlossvg carlossvg changed the title WIP:Use rclpp::waitset for real-time topics WIP:Use rclcpp::waitset for real-time topics Jun 30, 2021
@carlossvg carlossvg changed the title WIP:Use rclcpp::waitset for real-time topics WIP: Update project to 0.0.2 using rclcpp::waitset Jul 4, 2021
- Replaces wait-set based loop with just a loop using chrono::sleep_until
- Keeps track of timing statistics
- Prints statistics in the stdout in the non real-time thread
@ZhenshengLee
Copy link

ZhenshengLee commented Jun 24, 2024

Greate to see that waitset being used in ros2 apps, which is really rare in community.
The only material about waitset in ros2 is the ros2 examples and the PPT from Apex.AI in ROSCon.

Regarding to this pr, What's the current status?
Can this pr be devided into multiple parts to get merged step by step?

EDIT:
autoware.universe is migrating it's ros2 apps to waitset-based subscription. see https://autowarefoundation.github.io/autoware-documentation/main/contributing/coding-guidelines/ros-nodes/topic-message-handling/

and more examples about waitset subscription https://github.com/takam5f2/ros2_subscription_examples

@carlossvg
Copy link
Contributor Author

I think it makes sense to split this PR into smaller parts. If the waitset change is interesting we could merge that in a separate PR.

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.

3 participants