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

Use new Blueberry v2.0.3 feature request-response and its discovery #84

Conversation

mossmaurice
Copy link
Collaborator

@mossmaurice mossmaurice commented Jan 5, 2023

  • Implements rmw_* functions need for request-response aka ROS 2 service-client communication.
    • Creates two new abstractions IceoryxServer and IceoryxClient
    • Implement type support
    • rmw_get_service_names_and_types is not fully implemented and only contains the data available through ServiceDiscovery as the server and clients and not yet published via the introspection ports

Commands for a quick test:

./install/bin/iox-roudi -l verbose -m off
RMW_IMPLEMENTATION=rmw_iceoryx_cpp ros2 run demo_nodes_cpp add_two_ints_server
RMW_IMPLEMENTATION=rmw_iceoryx_cpp ros2 run demo_nodes_cpp add_two_ints_client
RMW_IMPLEMENTATION=rmw_iceoryx_cpp ros2 service list --show-types

Open questions:

Known limitations:

  • The request payload pointer is stored in the iceoryx server abstraction. It would be better to extend rmw_request_id_t and add a void * there if accepted in upstream https://github.com/ros2/rmw/. For now, the limitation exists to always call rmw_take_request followed by rmw_send_response and not call e.g. 2x times rmw_take_request and then 2x rmw_send_response.

Closes #76 (partly)

…ction methods accordingly (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>
Signed-off-by: Simon Hoinkis <[email protected]>
Signed-off-by: Simon Hoinkis <[email protected]>
Signed-off-by: Simon Hoinkis <[email protected]>
@mossmaurice mossmaurice added the enhancement New feature or request label Jan 5, 2023
@mossmaurice mossmaurice self-assigned this Jan 5, 2023
@mossmaurice mossmaurice changed the title Use new blueberry features request response and discovery Use new Blueberry v2.0.2 features request-response and their discovery Jan 5, 2023
@mossmaurice
Copy link
Collaborator Author

@elBoberido Would you mind reviewing this PR?

FYI @budrus @ZhenshengLee if you interested in having a look.

@mossmaurice mossmaurice force-pushed the use-new-blueberry-features-request-response-and-discovery branch from e8e4071 to fca0340 Compare January 5, 2023 17:00
@mossmaurice mossmaurice changed the title Use new Blueberry v2.0.2 features request-response and their discovery Use new Blueberry v2.0.2 feature request-response and its discovery Jan 5, 2023
@mossmaurice mossmaurice removed the request for review from elBoberido January 11, 2023 15:40
@mossmaurice mossmaurice marked this pull request as ready for review January 11, 2023 21:52
@mossmaurice mossmaurice force-pushed the use-new-blueberry-features-request-response-and-discovery branch from 9613b46 to b186509 Compare January 11, 2023 22:00
@mossmaurice
Copy link
Collaborator Author

Currently, this PR is blocked by eclipse-iceoryx/iceoryx#1505 and eclipse-iceoryx/iceoryx#1668. Once iceoryx Blueberry v2.0.3 has been released, this PR can be merged.

@mossmaurice mossmaurice changed the title Use new Blueberry v2.0.2 feature request-response and its discovery Use new Blueberry v2.0.3 feature request-response and its discovery Jan 17, 2023
@mossmaurice mossmaurice merged commit cfed5d6 into ros2:humble Jan 30, 2023
mossmaurice added a commit to ApexAI/rmw_iceoryx that referenced this pull request Sep 16, 2023
…ros2#84)

* Implement create and destroy methods for service and client (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Implement wrapper classes for client and server and add type introspection methods accordingly (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Update Readme (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Implement 'rmw_send_request', 'rmw_take_request' and 'rmw_take_response'
(ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Add fixed-size path for 'rmw_send_response' and 'rmw_take_response' (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Create server and client abstraction (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Fix 'is_fixed_size' for ROS 2 services (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Properly destroy services and clients and add serialization for services
(ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Fix typo leading to a segfault (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Attach servers and clients to waitset (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Remove debug prints and add de-serialization to 'rmw_send_response' (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Add missing remove-from-waitset part (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Do not send 'request_header' over user payload (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Properly save the sample in 'rwm_take_request' (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Fix lost responses issue (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Implement 'rmw_get_service_names_and_types' (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Format all the things (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Update CI and docs (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Add copyright notice to all touched files (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Fix cpplint warnings (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Update Ubuntu version to be able to build for humble (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Check request pointer for 'nullptr' (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Remove out-commented code and implement setting the GUID (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Move the code to inside the happy-path lambda for client server communication (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Use default alignment when loaning for request/response (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Remove sleeps in 'rmw_send_response' as fix will be in 'v2.0.3' release (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

* Update version number in package.xml (ros2#76)

Signed-off-by: Simon Hoinkis <[email protected]>

---------

Signed-off-by: Simon Hoinkis <[email protected]>
mossmaurice added a commit to ApexAI/rmw_iceoryx that referenced this pull request Sep 16, 2023
mossmaurice added a commit to ApexAI/rmw_iceoryx that referenced this pull request Sep 16, 2023
mossmaurice added a commit to ApexAI/rmw_iceoryx that referenced this pull request Sep 18, 2023
mossmaurice added a commit to ApexAI/rmw_iceoryx that referenced this pull request Sep 18, 2023
mossmaurice added a commit to ApexAI/rmw_iceoryx that referenced this pull request Sep 18, 2023
mossmaurice added a commit to ApexAI/rmw_iceoryx that referenced this pull request Sep 20, 2023
mossmaurice added a commit that referenced this pull request Sep 20, 2023
* Use new Blueberry v2.0.3 feature request-response and its discovery (#84)

Signed-off-by: Simon Hoinkis <[email protected]>

* Remove cppcheck from linter job and use Ubuntu 22.04

Signed-off-by: Simon Hoinkis <[email protected]>

* Include 'iceoryx_hoofs' legacy header and use 'iox::into' for string
conversion

Signed-off-by: Simon Hoinkis <[email protected]>

* Fix dependency of name conversion lib (#81)

Signed-off-by: Simon Hoinkis <[email protected]>

* Call correct destructor (#81)

Signed-off-by: Simon Hoinkis <[email protected]>

* Use 'rcutils_get_executable_name' to get the name of the process (#94)

Signed-off-by: Simon Hoinkis <[email protected]>

* Set C++ standard in accordance with iceoryx (#93)

Signed-off-by: Simon Hoinkis <[email protected]>

* Address review findings (#84)

Signed-off-by: Simon Hoinkis <[email protected]>

---------

Signed-off-by: Simon Hoinkis <[email protected]>
mossmaurice added a commit to ApexAI/rmw_iceoryx that referenced this pull request Sep 25, 2023
mossmaurice added a commit that referenced this pull request Oct 17, 2023
* Address review findings (#84)

Signed-off-by: Simon Hoinkis <[email protected]>

* Implement new rmw functions needed for iron (#99)

Signed-off-by: Simon Hoinkis <[email protected]>

* Change CI to iron (#99)

Signed-off-by: Simon Hoinkis <[email protected]>

---------

Signed-off-by: Simon Hoinkis <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Update rmw_iceoryx to use Eclipse iceoryx Blueberry
5 participants