-
 

Package Summary

Tags No category tags.
Version 0.20.5
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version humble
Last Updated 2024-07-26
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Demonstrations of intra process communication.

Additional Links

No additional links.

Maintainers

  • Audrow Nash
  • Michael Jeronimo

Authors

  • Mabel Zhang
  • William Woodall
README
No README found. No README in repository either.
CHANGELOG

Changelog for package intra_process_demo

0.20.5 (2024-07-26)

  • Removed pre-compiler check for opencv3 (#695) (#697)
  • Contributors: mergify[bot]

0.20.4 (2024-05-15)

0.20.3 (2023-01-10)

0.20.2 (2022-05-10)

0.20.1 (2022-04-08)

0.20.0 (2022-03-01)

  • Add opencv_imgproc dependency for cv::putText (#554)
  • Install includes to include/${PROJECT_NAME} (#548)
  • Contributors: Shane Loretz

0.19.0 (2022-01-14)

  • Fix include order and relative paths for cpplint (#551)
  • Contributors: Jacob Perron

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Additional fixes for documentation in demos. (#538)
  • Contributors: Audrow Nash, Chris Lalancette

0.17.0 (2021-10-18)

  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha

0.16.0 (2021-08-11)

  • Revert "Add type masquerading demos (#482)" (#520)
  • Add type masquerading demos (#482)
  • Contributors: Audrow Nash, William Woodall

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Fix pendulum_control tests to use stdout stream. (#430)
  • Contributors: Chris Lalancette

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

0.8.2 (2019-11-08)

0.8.1 (2019-10-23)

  • Replace ready_fn with ReadyToTest action (#404)
  • Contributors: Peter Baughman

0.8.0 (2019-09-26)

0.7.6 (2019-05-30)

0.7.5 (2019-05-29)

  • Allow ESC/q/sigint to exit demo (#345)
  • Contributors: Dirk Thomas

0.7.4 (2019-05-20)

0.7.3 (2019-05-10)

0.7.2 (2019-05-08)

  • changes to avoid deprecated API's (#332)
  • Corrected publish calls with shared_ptr signature (#327)
  • Migrate launch tests to new launch_testing features & API (#318)
  • Contributors: Michel Hidalgo, William Woodall, ivanpauno

0.7.1 (2019-04-26)

0.7.0 (2019-04-14)

  • Added launch along with launch_testing as test dependencies. (#313)
  • Updated for NodeOptions Node constructor. (#308)
  • Contributors: Michael Carroll, Michel Hidalgo

0.6.2 (2019-01-15)

  • Updated to support OpenCV 2, 3 and 4 (#307)
  • Contributors: Jacob Perron

0.6.1 (2018-12-13)

0.6.0 (2018-12-07)

0.5.1 (2018-06-28)

0.5.0 (2018-06-27)

  • Updated launch files to account for the "old launch" getting renamespaced as launch -> launch.legacy. (#239)
  • Contributors: Dirk Thomas, William Woodall

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged intra_process_demo at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.27.2
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version iron
Last Updated 2024-07-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Demonstrations of intra process communication.

Additional Links

No additional links.

Maintainers

  • Aditya Pande
  • Audrow Nash
  • Michael Jeronimo

Authors

  • Mabel Zhang
  • William Woodall

What Is This?

The demos in this package are designed to showcase how developers can manually compose ROS 2 nodes by defining them separately but combining them in varied process layouts.

These can be done while avoiding code overhauls or performance restrictions.

This package consists of the following ROS 2 nodes:

  1. camera_node
  2. watermark_node
  3. image_view_node
  4. image_pipeline_all_in_one
  5. two_node_pipeline
  6. cyclic_pipeline
  7. image_pipeline_with_two_image_view

Through the use of intra-process (as opposed to inter-process) node communication, lower latency and thus higher efficiency is observed for ROS 2 topologies that utilizes this manner of communication.

The improvements in latency reduction are even more pronounced when applied to ROS 2 systems with more complex topologies.

Build

colcon build --packages-up-to intra_process_demo

Run

1. Two Node Pipeline

Run two_node_pipeline via the commands below:

ros2 run intra_process_demo two_node_pipeline

This sets up two nodes, a ROS 2 node that publishes a string with an incremeting integer value, as well as a ROS 2 node that subscribes to print the received string.

2. Cyclic Pipeline

Run cyclic_pipeline via the commands below:

ros2 run intra_process_demo cyclic_pipeline

Similar to the previous, instead of creating a new message for each new iteration, the publisher and subscriber nodes only ever use one message instance. This is achieved by having a cycle in the graph and kickstarting the communication externally by having one of the nodes publish before spinning the executor.

3. Image Pipeline All In One

Please ensure you have a camera connected to your workstation.

image_pipeline_all_in_one consists of 3 nodes, where camera_node publishes a unique_ptr message onto the topic, \image. Subsequently, watermark_node subscribes to the previous, republishes the image after adding a watermark on the topic, \watermarked_image, and the final node, image_view_node, subscribes to this last topic in order to display it for user.

ros2 run intra_process_demo image_pipeline_all_in_one

4. Image Pipeline All Separately

Please ensure you have a camera connected to your workstation.

In direct contrast with the previous, run the following commands in separate terminals to have camera_node, watermark_node and image_view_node all in their own process, utilizing inter-process node communication.

This starts the camera_node ROS 2 node and publishes images captured from your workstation web camera onto a ROS 2 topic labelled /image.

# Open new terminal
ros2 run intra_process_demo camera_node

This starts the watermark_node ROS 2 node which subscribes to raw images from ROS 2 topic /image, overlays both process ID number and message address on top of the image visually and publishes to ROS 2 topic /watermarked_image.

# Open new terminal
ros2 run intra_process_demo watermark_node

This starts the image_view_node ROS 2 node which subscribes to /watermarked_image and displays the received images in an OpenCV GUI window.

# Open new terminal
ros2 run intra_process_demo image_view_node

5. Image Pipeline With Two Image Views

Please ensure you have a camera connected to your workstation.

Similar to the Image Pipeline All In One, running image_pipeline_with_two_image_view will display the image process through intra-process communications.

However, it now instantiates 2 image_view_node ROS 2 nodes.

# Open new terminal
ros2 run intra_process_demo image_pipeline_with_two_image_view

Verify

1. Two Node Pipeline

When executed correctly, strings should be printed in the terminal similar to what is shown below:

Published message with value: 0, and address: 0x55B68BCC6F20
 Received message with value: 0, and address: 0x55B68BCC6F20
Published message with value: 1, and address: 0x55B68BCC6F20
 Received message with value: 1, and address: 0x55B68BCC6F20
Published message with value: 2, and address: 0x55B68BCC6F20
 Received message with value: 2, and address: 0x55B68BCC6F20
Published message with value: 3, and address: 0x55B68BCC6F20
 Received message with value: 3, and address: 0x55B68BCC6F20

2. Cyclic Pipeline

When executed correctly, strings should be printed in the terminal similar to what is shown below:

Published first message with value:  42, and address: 0x555E4F029480
Received message with value:         42, and address: 0x555E4F029480
  sleeping for 1 second...
  done.
Incrementing and sending with value: 43, and address: 0x555E4F029480
Received message with value:         43, and address: 0x555E4F029480
  sleeping for 1 second...
  done.
Incrementing and sending with value: 44, and address: 0x555E4F029480
Received message with value:         44, and address: 0x555E4F029480
  sleeping for 1 second...
  done.
Incrementing and sending with value: 45, and address: 0x555E4F029480
Received message with value:         45, and address: 0x555E4F029480
  sleeping for 1 second...


3. Image Pipeline All In One

When executed correctly, an OpenCV GUI window should appear displaying something similar to what is shown below:

Take note how the process_id and Message Pointer Address are all the same, proving that all 3 nodes are in the same process.

4. Image Pipleline All Separately

When executed correctly, an OpenCV GUI window should appear displaying something similar to what is shown below:

Notice how all the process_id and Message Pointer Address are now all different, showing that all nodes are using different processes.

5. Image Pipeline With Two Image Views

When executed correctly, 2 OpenCV GUI window should appear displaying similar to what is show below:

For more details on this implementations, please refer to the references below.

References

  1. Intra Process Communication tutorial
  2. Intra-process Communications in ROS 2
CHANGELOG

Changelog for package intra_process_demo

0.27.2 (2024-07-10)

  • Removed pre-compiler check for opencv3 (#698)
  • Fix executable name in README.md (#692)
  • Contributors: Alejandro Hernández Cordero, Trushant Adeshara

0.27.1 (2023-05-11)

  • Fix executable name in README (#619)
  • Contributors: Yadunund

0.27.0 (2023-04-13)

  • Change all ROS2 -> ROS 2. (#610)
  • Contributors: Chris Lalancette

0.26.0 (2023-04-11)

  • Added README.md for intra_process_demo (#595)
  • Contributors: Gary Bey

0.25.0 (2023-03-01)

0.24.1 (2023-02-24)

0.24.0 (2023-02-14)

  • Update the demos to C++17. (#594)
  • [rolling] Update maintainers - 2022-11-07 (#589)
  • Contributors: Audrow Nash, Chris Lalancette

0.23.0 (2022-11-02)

0.22.0 (2022-09-13)

0.21.0 (2022-04-29)

0.20.1 (2022-04-08)

0.20.0 (2022-03-01)

  • Add opencv_imgproc dependency for cv::putText (#554)
  • Install includes to include/${PROJECT_NAME} (#548)
  • Contributors: Shane Loretz

0.19.0 (2022-01-14)

  • Fix include order and relative paths for cpplint (#551)
  • Contributors: Jacob Perron

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Additional fixes for documentation in demos. (#538)
  • Contributors: Audrow Nash, Chris Lalancette

0.17.0 (2021-10-18)

  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha

0.16.0 (2021-08-11)

  • Revert "Add type masquerading demos (#482)" (#520)
  • Add type masquerading demos (#482)
  • Contributors: Audrow Nash, William Woodall

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Fix pendulum_control tests to use stdout stream. (#430)
  • Contributors: Chris Lalancette

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

0.8.2 (2019-11-08)

0.8.1 (2019-10-23)

  • Replace ready_fn with ReadyToTest action (#404)
  • Contributors: Peter Baughman

0.8.0 (2019-09-26)

0.7.6 (2019-05-30)

0.7.5 (2019-05-29)

  • Allow ESC/q/sigint to exit demo (#345)
  • Contributors: Dirk Thomas

0.7.4 (2019-05-20)

0.7.3 (2019-05-10)

0.7.2 (2019-05-08)

  • changes to avoid deprecated API's (#332)
  • Corrected publish calls with shared_ptr signature (#327)
  • Migrate launch tests to new launch_testing features & API (#318)
  • Contributors: Michel Hidalgo, William Woodall, ivanpauno

0.7.1 (2019-04-26)

0.7.0 (2019-04-14)

  • Added launch along with launch_testing as test dependencies. (#313)
  • Updated for NodeOptions Node constructor. (#308)
  • Contributors: Michael Carroll, Michel Hidalgo

0.6.2 (2019-01-15)

  • Updated to support OpenCV 2, 3 and 4 (#307)
  • Contributors: Jacob Perron

0.6.1 (2018-12-13)

0.6.0 (2018-12-07)

0.5.1 (2018-06-28)

0.5.0 (2018-06-27)

  • Updated launch files to account for the "old launch" getting renamespaced as launch -> launch.legacy. (#239)
  • Contributors: Dirk Thomas, William Woodall

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged intra_process_demo at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.33.5
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version jazzy
Last Updated 2024-09-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Demonstrations of intra process communication.

Additional Links

No additional links.

Maintainers

  • Aditya Pande
  • Audrow Nash

Authors

  • Mabel Zhang
  • William Woodall

What Is This?

The demos in this package are designed to showcase how developers can manually compose ROS 2 nodes by defining them separately but combining them in varied process layouts.

These can be done while avoiding code overhauls or performance restrictions.

This package consists of the following ROS 2 nodes:

  1. camera_node
  2. watermark_node
  3. image_view_node
  4. image_pipeline_all_in_one
  5. two_node_pipeline
  6. cyclic_pipeline
  7. image_pipeline_with_two_image_view

Through the use of intra-process (as opposed to inter-process) node communication, lower latency and thus higher efficiency is observed for ROS 2 topologies that utilizes this manner of communication.

The improvements in latency reduction are even more pronounced when applied to ROS 2 systems with more complex topologies.

Build

colcon build --packages-up-to intra_process_demo

Run

1. Two Node Pipeline

Run two_node_pipeline via the commands below:

ros2 run intra_process_demo two_node_pipeline

This sets up two nodes, a ROS 2 node that publishes a string with an incremeting integer value, as well as a ROS 2 node that subscribes to print the received string.

2. Cyclic Pipeline

Run cyclic_pipeline via the commands below:

ros2 run intra_process_demo cyclic_pipeline

Similar to the previous, instead of creating a new message for each new iteration, the publisher and subscriber nodes only ever use one message instance. This is achieved by having a cycle in the graph and kickstarting the communication externally by having one of the nodes publish before spinning the executor.

3. Image Pipeline All In One

Please ensure you have a camera connected to your workstation.

image_pipeline_all_in_one consists of 3 nodes, where camera_node publishes a unique_ptr message onto the topic, \image. Subsequently, watermark_node subscribes to the previous, republishes the image after adding a watermark on the topic, \watermarked_image, and the final node, image_view_node, subscribes to this last topic in order to display it for user.

ros2 run intra_process_demo image_pipeline_all_in_one

4. Image Pipeline All Separately

Please ensure you have a camera connected to your workstation.

In direct contrast with the previous, run the following commands in separate terminals to have camera_node, watermark_node and image_view_node all in their own process, utilizing inter-process node communication.

This starts the camera_node ROS 2 node and publishes images captured from your workstation web camera onto a ROS 2 topic labelled /image.

# Open new terminal
ros2 run intra_process_demo camera_node

This starts the watermark_node ROS 2 node which subscribes to raw images from ROS 2 topic /image, overlays both process ID number and message address on top of the image visually and publishes to ROS 2 topic /watermarked_image.

# Open new terminal
ros2 run intra_process_demo watermark_node

This starts the image_view_node ROS 2 node which subscribes to /watermarked_image and displays the received images in an OpenCV GUI window.

# Open new terminal
ros2 run intra_process_demo image_view_node

5. Image Pipeline With Two Image Views

Please ensure you have a camera connected to your workstation.

Similar to the Image Pipeline All In One, running image_pipeline_with_two_image_view will display the image process through intra-process communications.

However, it now instantiates 2 image_view_node ROS 2 nodes.

# Open new terminal
ros2 run intra_process_demo image_pipeline_with_two_image_view

Verify

1. Two Node Pipeline

When executed correctly, strings should be printed in the terminal similar to what is shown below:

Published message with value: 0, and address: 0x55B68BCC6F20
 Received message with value: 0, and address: 0x55B68BCC6F20
Published message with value: 1, and address: 0x55B68BCC6F20
 Received message with value: 1, and address: 0x55B68BCC6F20
Published message with value: 2, and address: 0x55B68BCC6F20
 Received message with value: 2, and address: 0x55B68BCC6F20
Published message with value: 3, and address: 0x55B68BCC6F20
 Received message with value: 3, and address: 0x55B68BCC6F20

2. Cyclic Pipeline

When executed correctly, strings should be printed in the terminal similar to what is shown below:

Published first message with value:  42, and address: 0x555E4F029480
Received message with value:         42, and address: 0x555E4F029480
  sleeping for 1 second...
  done.
Incrementing and sending with value: 43, and address: 0x555E4F029480
Received message with value:         43, and address: 0x555E4F029480
  sleeping for 1 second...
  done.
Incrementing and sending with value: 44, and address: 0x555E4F029480
Received message with value:         44, and address: 0x555E4F029480
  sleeping for 1 second...
  done.
Incrementing and sending with value: 45, and address: 0x555E4F029480
Received message with value:         45, and address: 0x555E4F029480
  sleeping for 1 second...


3. Image Pipeline All In One

When executed correctly, an OpenCV GUI window should appear displaying something similar to what is shown below:

Take note how the process_id and Message Pointer Address are all the same, proving that all 3 nodes are in the same process.

4. Image Pipleline All Separately

When executed correctly, an OpenCV GUI window should appear displaying something similar to what is shown below:

Notice how all the process_id and Message Pointer Address are now all different, showing that all nodes are using different processes.

5. Image Pipeline With Two Image Views

When executed correctly, 2 OpenCV GUI window should appear displaying similar to what is show below:

For more details on this implementations, please refer to the references below.

References

  1. Intra Process Communication tutorial
  2. Intra-process Communications in ROS 2
CHANGELOG

Changelog for package intra_process_demo

0.33.5 (2024-09-06)

  • Removed pre-compiler check for opencv3 (#695) (#696) (cherry picked from commit e5dc79917333bb6bc9a3efe02fecb3c214cfacef) Co-authored-by: Alejandro Hernández Cordero <<ahcorde@gmail.com>>
  • Contributors: mergify[bot]

0.33.4 (2024-06-27)

  • [intra_process_demo] executable name in README.md fix-up (#690) (#691) Co-authored-by: Trushant Adeshara <<150821956+Trushant-Adeshara-UM@users.noreply.github.com>>

0.33.3 (2024-05-13)

0.33.2 (2024-03-28)

  • Update maintainer list in package.xml files (#665)
  • Contributors: Michael Jeronimo

0.33.1 (2024-02-07)

0.33.0 (2024-01-24)

  • Migrate std::bind calls to lambda expressions (#659)
  • Contributors: Felipe Gomes de Melo

0.32.1 (2023-12-26)

0.32.0 (2023-11-06)

0.31.1 (2023-09-07)

0.31.0 (2023-08-21)

0.30.1 (2023-07-11)

0.30.0 (2023-06-12)

0.29.0 (2023-06-07)

0.28.1 (2023-05-11)

  • Fix executable name in README (#618)
  • Contributors: Yadunund

0.28.0 (2023-04-27)

0.27.0 (2023-04-13)

  • Change all ROS2 -> ROS 2. (#610)
  • Contributors: Chris Lalancette

0.26.0 (2023-04-11)

  • Added README.md for intra_process_demo (#595)
  • Contributors: Gary Bey

0.25.0 (2023-03-01)

0.24.1 (2023-02-24)

0.24.0 (2023-02-14)

  • Update the demos to C++17. (#594)
  • [rolling] Update maintainers - 2022-11-07 (#589)
  • Contributors: Audrow Nash, Chris Lalancette

0.23.0 (2022-11-02)

0.22.0 (2022-09-13)

0.21.0 (2022-04-29)

0.20.1 (2022-04-08)

0.20.0 (2022-03-01)

  • Add opencv_imgproc dependency for cv::putText (#554)
  • Install includes to include/${PROJECT_NAME} (#548)
  • Contributors: Shane Loretz

0.19.0 (2022-01-14)

  • Fix include order and relative paths for cpplint (#551)
  • Contributors: Jacob Perron

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Additional fixes for documentation in demos. (#538)
  • Contributors: Audrow Nash, Chris Lalancette

0.17.0 (2021-10-18)

  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha

0.16.0 (2021-08-11)

  • Revert "Add type masquerading demos (#482)" (#520)
  • Add type masquerading demos (#482)
  • Contributors: Audrow Nash, William Woodall

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Fix pendulum_control tests to use stdout stream. (#430)
  • Contributors: Chris Lalancette

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

0.8.2 (2019-11-08)

0.8.1 (2019-10-23)

  • Replace ready_fn with ReadyToTest action (#404)
  • Contributors: Peter Baughman

0.8.0 (2019-09-26)

0.7.6 (2019-05-30)

0.7.5 (2019-05-29)

  • Allow ESC/q/sigint to exit demo (#345)
  • Contributors: Dirk Thomas

0.7.4 (2019-05-20)

0.7.3 (2019-05-10)

0.7.2 (2019-05-08)

  • changes to avoid deprecated API's (#332)
  • Corrected publish calls with shared_ptr signature (#327)
  • Migrate launch tests to new launch_testing features & API (#318)
  • Contributors: Michel Hidalgo, William Woodall, ivanpauno

0.7.1 (2019-04-26)

0.7.0 (2019-04-14)

  • Added launch along with launch_testing as test dependencies. (#313)
  • Updated for NodeOptions Node constructor. (#308)
  • Contributors: Michael Carroll, Michel Hidalgo

0.6.2 (2019-01-15)

  • Updated to support OpenCV 2, 3 and 4 (#307)
  • Contributors: Jacob Perron

0.6.1 (2018-12-13)

0.6.0 (2018-12-07)

0.5.1 (2018-06-28)

0.5.0 (2018-06-27)

  • Updated launch files to account for the "old launch" getting renamespaced as launch -> launch.legacy. (#239)
  • Contributors: Dirk Thomas, William Woodall

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged intra_process_demo at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.35.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version rolling
Last Updated 2024-11-20
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Demonstrations of intra process communication.

Additional Links

No additional links.

Maintainers

  • Aditya Pande
  • Audrow Nash

Authors

  • Mabel Zhang
  • William Woodall

What Is This?

The demos in this package are designed to showcase how developers can manually compose ROS 2 nodes by defining them separately but combining them in varied process layouts.

These can be done while avoiding code overhauls or performance restrictions.

This package consists of the following ROS 2 nodes:

  1. camera_node
  2. watermark_node
  3. image_view_node
  4. image_pipeline_all_in_one
  5. two_node_pipeline
  6. cyclic_pipeline
  7. image_pipeline_with_two_image_view

Through the use of intra-process (as opposed to inter-process) node communication, lower latency and thus higher efficiency is observed for ROS 2 topologies that utilizes this manner of communication.

The improvements in latency reduction are even more pronounced when applied to ROS 2 systems with more complex topologies.

Build

colcon build --packages-up-to intra_process_demo

Run

1. Two Node Pipeline

Run two_node_pipeline via the commands below:

ros2 run intra_process_demo two_node_pipeline

This sets up two nodes, a ROS 2 node that publishes a string with an incremeting integer value, as well as a ROS 2 node that subscribes to print the received string.

2. Cyclic Pipeline

Run cyclic_pipeline via the commands below:

ros2 run intra_process_demo cyclic_pipeline

Similar to the previous, instead of creating a new message for each new iteration, the publisher and subscriber nodes only ever use one message instance. This is achieved by having a cycle in the graph and kickstarting the communication externally by having one of the nodes publish before spinning the executor.

3. Image Pipeline All In One

Please ensure you have a camera connected to your workstation.

image_pipeline_all_in_one consists of 3 nodes, where camera_node publishes a unique_ptr message onto the topic, \image. Subsequently, watermark_node subscribes to the previous, republishes the image after adding a watermark on the topic, \watermarked_image, and the final node, image_view_node, subscribes to this last topic in order to display it for user.

ros2 run intra_process_demo image_pipeline_all_in_one

4. Image Pipeline All Separately

Please ensure you have a camera connected to your workstation.

In direct contrast with the previous, run the following commands in separate terminals to have camera_node, watermark_node and image_view_node all in their own process, utilizing inter-process node communication.

This starts the camera_node ROS 2 node and publishes images captured from your workstation web camera onto a ROS 2 topic labelled /image.

# Open new terminal
ros2 run intra_process_demo camera_node

This starts the watermark_node ROS 2 node which subscribes to raw images from ROS 2 topic /image, overlays both process ID number and message address on top of the image visually and publishes to ROS 2 topic /watermarked_image.

# Open new terminal
ros2 run intra_process_demo watermark_node

This starts the image_view_node ROS 2 node which subscribes to /watermarked_image and displays the received images in an OpenCV GUI window.

# Open new terminal
ros2 run intra_process_demo image_view_node

5. Image Pipeline With Two Image Views

Please ensure you have a camera connected to your workstation.

Similar to the Image Pipeline All In One, running image_pipeline_with_two_image_view will display the image process through intra-process communications.

However, it now instantiates 2 image_view_node ROS 2 nodes.

# Open new terminal
ros2 run intra_process_demo image_pipeline_with_two_image_view

Verify

1. Two Node Pipeline

When executed correctly, strings should be printed in the terminal similar to what is shown below:

Published message with value: 0, and address: 0x55B68BCC6F20
 Received message with value: 0, and address: 0x55B68BCC6F20
Published message with value: 1, and address: 0x55B68BCC6F20
 Received message with value: 1, and address: 0x55B68BCC6F20
Published message with value: 2, and address: 0x55B68BCC6F20
 Received message with value: 2, and address: 0x55B68BCC6F20
Published message with value: 3, and address: 0x55B68BCC6F20
 Received message with value: 3, and address: 0x55B68BCC6F20

2. Cyclic Pipeline

When executed correctly, strings should be printed in the terminal similar to what is shown below:

Published first message with value:  42, and address: 0x555E4F029480
Received message with value:         42, and address: 0x555E4F029480
  sleeping for 1 second...
  done.
Incrementing and sending with value: 43, and address: 0x555E4F029480
Received message with value:         43, and address: 0x555E4F029480
  sleeping for 1 second...
  done.
Incrementing and sending with value: 44, and address: 0x555E4F029480
Received message with value:         44, and address: 0x555E4F029480
  sleeping for 1 second...
  done.
Incrementing and sending with value: 45, and address: 0x555E4F029480
Received message with value:         45, and address: 0x555E4F029480
  sleeping for 1 second...


3. Image Pipeline All In One

When executed correctly, an OpenCV GUI window should appear displaying something similar to what is shown below:

Take note how the process_id and Message Pointer Address are all the same, proving that all 3 nodes are in the same process.

4. Image Pipleline All Separately

When executed correctly, an OpenCV GUI window should appear displaying something similar to what is shown below:

Notice how all the process_id and Message Pointer Address are now all different, showing that all nodes are using different processes.

5. Image Pipeline With Two Image Views

When executed correctly, 2 OpenCV GUI window should appear displaying similar to what is show below:

For more details on this implementations, please refer to the references below.

References

  1. Intra Process Communication tutorial
  2. Intra-process Communications in ROS 2
CHANGELOG

Changelog for package intra_process_demo

0.35.1 (2024-11-20)

0.35.0 (2024-10-03)

0.34.2 (2024-07-29)

  • Removed pre-compiler check for opencv3 (#695)
  • Contributors: Alejandro Hernández Cordero

0.34.1 (2024-06-17)

  • [intra_process_demo] executable name in README.md fix-up (#690)
  • Contributors: Trushant Adeshara

0.34.0 (2024-04-26)

0.33.2 (2024-03-28)

  • Update maintainer list in package.xml files (#665)
  • Contributors: Michael Jeronimo

0.33.1 (2024-02-07)

0.33.0 (2024-01-24)

  • Migrate std::bind calls to lambda expressions (#659)
  • Contributors: Felipe Gomes de Melo

0.32.1 (2023-12-26)

0.32.0 (2023-11-06)

0.31.1 (2023-09-07)

0.31.0 (2023-08-21)

0.30.1 (2023-07-11)

0.30.0 (2023-06-12)

0.29.0 (2023-06-07)

0.28.1 (2023-05-11)

  • Fix executable name in README (#618)
  • Contributors: Yadunund

0.28.0 (2023-04-27)

0.27.0 (2023-04-13)

  • Change all ROS2 -> ROS 2. (#610)
  • Contributors: Chris Lalancette

0.26.0 (2023-04-11)

  • Added README.md for intra_process_demo (#595)
  • Contributors: Gary Bey

0.25.0 (2023-03-01)

0.24.1 (2023-02-24)

0.24.0 (2023-02-14)

  • Update the demos to C++17. (#594)
  • [rolling] Update maintainers - 2022-11-07 (#589)
  • Contributors: Audrow Nash, Chris Lalancette

0.23.0 (2022-11-02)

0.22.0 (2022-09-13)

0.21.0 (2022-04-29)

0.20.1 (2022-04-08)

0.20.0 (2022-03-01)

  • Add opencv_imgproc dependency for cv::putText (#554)
  • Install includes to include/${PROJECT_NAME} (#548)
  • Contributors: Shane Loretz

0.19.0 (2022-01-14)

  • Fix include order and relative paths for cpplint (#551)
  • Contributors: Jacob Perron

0.18.0 (2021-12-17)

  • Update maintainers to Audrow Nash and Michael Jeronimo (#543)
  • Additional fixes for documentation in demos. (#538)
  • Contributors: Audrow Nash, Chris Lalancette

0.17.0 (2021-10-18)

  • Fixing deprecated subscriber callback warnings (#532)
  • Contributors: Abrar Rahman Protyasha

0.16.0 (2021-08-11)

  • Revert "Add type masquerading demos (#482)" (#520)
  • Add type masquerading demos (#482)
  • Contributors: Audrow Nash, William Woodall

0.15.0 (2021-05-14)

0.14.2 (2021-04-26)

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Fix pendulum_control tests to use stdout stream. (#430)
  • Contributors: Chris Lalancette

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

0.8.2 (2019-11-08)

0.8.1 (2019-10-23)

  • Replace ready_fn with ReadyToTest action (#404)
  • Contributors: Peter Baughman

0.8.0 (2019-09-26)

0.7.6 (2019-05-30)

0.7.5 (2019-05-29)

  • Allow ESC/q/sigint to exit demo (#345)
  • Contributors: Dirk Thomas

0.7.4 (2019-05-20)

0.7.3 (2019-05-10)

0.7.2 (2019-05-08)

  • changes to avoid deprecated API's (#332)
  • Corrected publish calls with shared_ptr signature (#327)
  • Migrate launch tests to new launch_testing features & API (#318)
  • Contributors: Michel Hidalgo, William Woodall, ivanpauno

0.7.1 (2019-04-26)

0.7.0 (2019-04-14)

  • Added launch along with launch_testing as test dependencies. (#313)
  • Updated for NodeOptions Node constructor. (#308)
  • Contributors: Michael Carroll, Michel Hidalgo

0.6.2 (2019-01-15)

  • Updated to support OpenCV 2, 3 and 4 (#307)
  • Contributors: Jacob Perron

0.6.1 (2018-12-13)

0.6.0 (2018-12-07)

0.5.1 (2018-06-28)

0.5.0 (2018-06-27)

  • Updated launch files to account for the "old launch" getting renamespaced as launch -> launch.legacy. (#239)
  • Contributors: Dirk Thomas, William Woodall

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged intra_process_demo at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.14.4
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/demos.git
VCS Type git
VCS Version galactic
Last Updated 2022-12-07
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Demonstrations of intra process communication.

Additional Links

No additional links.

Maintainers

  • Mabel Zhang
  • Michael Jeronimo

Authors

  • William Woodall
README
No README found. No README in repository either.
CHANGELOG

Changelog for package intra_process_demo

0.14.4 (2022-12-06)

0.14.3 (2021-05-10)

0.14.2 (2021-04-26)

0.14.1 (2021-04-19)

0.14.0 (2021-04-06)

0.13.0 (2021-03-25)

0.12.1 (2021-03-18)

0.12.0 (2021-01-25)

0.11.0 (2020-12-10)

  • Update the package.xml files with the latest Open Robotics maintainers (#466)
  • Contributors: Michael Jeronimo

0.10.1 (2020-09-21)

0.10.0 (2020-06-17)

0.9.3 (2020-06-01)

0.9.2 (2020-05-26)

0.9.1 (2020-05-12)

0.9.0 (2020-04-30)

  • Fix pendulum_control tests to use stdout stream. (#430)
  • Contributors: Chris Lalancette

0.8.4 (2019-11-19)

0.8.3 (2019-11-11)

0.8.2 (2019-11-08)

0.8.1 (2019-10-23)

  • Replace ready_fn with ReadyToTest action (#404)
  • Contributors: Peter Baughman

0.8.0 (2019-09-26)

0.7.6 (2019-05-30)

0.7.5 (2019-05-29)

  • Allow ESC/q/sigint to exit demo (#345)
  • Contributors: Dirk Thomas

0.7.4 (2019-05-20)

0.7.3 (2019-05-10)

0.7.2 (2019-05-08)

  • changes to avoid deprecated API's (#332)
  • Corrected publish calls with shared_ptr signature (#327)
  • Migrate launch tests to new launch_testing features & API (#318)
  • Contributors: Michel Hidalgo, William Woodall, ivanpauno

0.7.1 (2019-04-26)

0.7.0 (2019-04-14)

  • Added launch along with launch_testing as test dependencies. (#313)
  • Updated for NodeOptions Node constructor. (#308)
  • Contributors: Michael Carroll, Michel Hidalgo

0.6.2 (2019-01-15)

  • Updated to support OpenCV 2, 3 and 4 (#307)
  • Contributors: Jacob Perron

0.6.1 (2018-12-13)

0.6.0 (2018-12-07)

0.5.1 (2018-06-28)

0.5.0 (2018-06-27)

  • Updated launch files to account for the "old launch" getting renamespaced as launch -> launch.legacy. (#239)
  • Contributors: Dirk Thomas, William Woodall

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged intra_process_demo at Robotics Stack Exchange