* change memory strategy API from vector of nodes to list of nodes
Signed-off-by: Dirk Thomas <dirk-thomas@users.noreply.github.com>
* store guard_condition of node in executor and ensure that it is removed from the memory strategy
Signed-off-by: Dirk Thomas <dirk-thomas@users.noreply.github.com>
* add unit test
Signed-off-by: Dirk Thomas <dirk-thomas@users.noreply.github.com>
* Throw nice errors when creating a publisher with intraprocess communication and history keep all or history depth 0.
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* created static functions
Signed-off-by: alsora <alberto.soragna@gmail.com>
Signed-off-by: alberto soragna <alberto.soragna@gmail.com>
* updated on_parameter_event to new subscriber api
Signed-off-by: alberto soragna <alberto.soragna@gmail.com>
* Update parameter_client.hpp
Reorderd typenames in template
Signed-off-by: alberto soragna <alberto.soragna@gmail.com>
* updated API also for Synchronous client and fixed linter errors
Signed-off-by: alberto soragna <alberto.soragna@gmail.com>
* added empty line at the end of files
Signed-off-by: alberto soragna <alberto.soragna@gmail.com>
* fixed linter error
Signed-off-by: alsora <alberto.soragna@gmail.com>
* added parameter client tests
Signed-off-by: alsora <alberto.soragna@gmail.com>
* added missing includes in unit test
Signed-off-by: alsora <alberto.soragna@gmail.com>
Fixes#705.
If the set_parameters() call fails, it's nice to be able to return a partial result.
Since there is no convenient method to obtain a partial result, we call set_parameters()
once for each parameter.
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Add missing template functionality to lifecycle_node.
Recent changes to the node_parameters interface was accompanied by additions to the
node.hpp header and implementation files. However, these additions were not also made
to the corresponding lifecycle node files. This PR includes the changes required for
the lifecycle node.
Going forward, I suggest that any code like this that supplements the basic node interfaces
should either be factored out into a separate header that both node and lifecycle_node
include, or that the supplemental code simply be included in the appropriate node_interface
file directly, if possible. That way we can avoid code duplication and its symptoms which
is node and lifecycle_node getting out of sync (which they have several times).
Signed-off-by: Michael Jeronimo <michael.jeronimo@intel.com>
* consolidate documentation to just be in rclcpp/node.hpp
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix visibility macros
Signed-off-by: William Woodall <william@osrfoundation.org>
* deprecation methods that were also deprecated in rclcpp::Node
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup variable name
Signed-off-by: William Woodall <william@osrfoundation.org>
* add missing template method implementations
Signed-off-by: William Woodall <william@osrfoundation.org>
* add more methods that were not ported to lifecycle node originally
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix cpplint
Signed-off-by: William Woodall <william@osrfoundation.org>
* improve interoperability with rclcpp::Duration and std::chrono
Signed-off-by: William Woodall <william@osrfoundation.org>
* add to_rmw_time to Duration
Signed-off-by: William Woodall <william@osrfoundation.org>
* add new QoS class to rclcpp
Signed-off-by: William Woodall <william@osrfoundation.org>
* changes to NodeBase, NodeTopics, etc in preparation for changes to pub/sub
Signed-off-by: William Woodall <william@osrfoundation.org>
* refactor publisher creation to use new QoS class
Signed-off-by: William Woodall <william@osrfoundation.org>
* refactor subscription creation to use new QoS class
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixing fallout from changes to pub/sub creation
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixed Windows error: no appropriate default constructor available
why? who knows
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixed Windows error: could not deduce template argument for 'PublisherT'
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix missing vftable linker error on Windows
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix more cases of no suitable default constructor errors...
Signed-off-by: William Woodall <william@osrfoundation.org>
* prevent msvc from trying to interpret some cases as functions
Signed-off-by: William Woodall <william@osrfoundation.org>
* uncrustify
Signed-off-by: William Woodall <william@osrfoundation.org>
* cpplint
Signed-off-by: William Woodall <william@osrfoundation.org>
* add C++ version of default action qos
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixing lifecycle subscription signatures
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix allocators (we actually use this already in the pub/sub factory)
Signed-off-by: William Woodall <william@osrfoundation.org>
* suppress cppcheck on false positive syntax error
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix more cppcheck syntax error false positives
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix case where sub-type of QoS is used
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup get_node_topics_interface.hpp according to reviews and tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* additional fixes based on local testing and CI
Signed-off-by: William Woodall <william@osrfoundation.org>
* another trick to avoid 'no appropriate default constructor available'
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix compiler error with clang on macOS
Signed-off-by: William Woodall <william@osrfoundation.org>
* disable build failure tests until we can get Jenkins to ignore their output
Signed-off-by: William Woodall <william@osrfoundation.org>
* suppress more cppcheck false positives
Signed-off-by: William Woodall <william@osrfoundation.org>
* add missing visibility macros to default QoS profile classes
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix another case of 'no appropriate default constructor available'
Signed-off-by: William Woodall <william@osrfoundation.org>
* unfortunately this actaully fixes a build error on Windows...
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix typos
Signed-off-by: William Woodall <william@osrfoundation.org>
* Populate return code of CancelGoal service response
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Throw if there is an error processing a cancel goal request
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Make cancel callback signature consistent across cancel methods and add tests
Refactored the callback signature for canceling one goal. Now it is the same as the other cancel methods.
This makes it easier to communicate the error code to the user.
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Address review
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* API updates for rmw preallocation work.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Adjust for allocation in serialized message method.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Fix extra take call.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Add functions to return formatted Node Name-Namespace strings
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Changed get_node_names to return fully qualified names, removed namespace method
Signed-off-by: Oswin So <oswinso@gmail.com>
* Removed unnecessary capture-by-reference
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Added first draft of tests
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Fixed bug creating phantom empty name/namespaces
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Re-ordered includes
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Swap checks to see if name is in set
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Fixed style errors from uncrustify
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Swapped to unordered_set
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Re-ordered includes again
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* nitpick: minimize vertical whitespace
see: https://google.github.io/styleguide/cppguide.html#Vertical_Whitespace
Signed-off-by: William Woodall <william@osrfoundation.org>
* Add API documentation for added get_node_names function
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Revert to last known semi-working point
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Modified expected test results
A fully-qualified name is "namespace"/"name". If namespace is set to be "/" (as they are in these tests), we would expect a qualified name of "//name"
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Have get_node_names determine if central slash needed or not
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Corrected tests to not accept double slashes
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Undo changes to .gitignore
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Change qualified string construction to better handle invalid slashes
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Removed debugging statements
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Simplified slash-checking logic
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Add assignment of missing parameter-related fields in node options copy constructor.
The allow_undeclared_parameters and automatically_declare_initial_parameters fields of
the node options class were not assigned in the assignment operator, resulting in
an incorrect copy of the node options object, which also indirectly affects the
copy constructor.
Signed-off-by: Michael Jeronimo <michael.jeronimo@intel.com>
* Run linters
* Changed mapped_ring_buffer class to store both shared_ptr or unique_ptr
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Changed the IPM store and take methods
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Changed publish methods to take advantage of the new IPM
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Change how subscriptions handle intraprocess messages
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Modified publish method signatures
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Renamed 'publisher.cpp' and 'subscription.cpp' to 'publisher_base.cpp' and 'subscription_base.cpp'
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
* Updated lifecycle_publisher publish methods
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
Now supports callbacks for the goal response and result.
This also makes it easier to incorporate action clients in composable nodes since we don't have to rely on waiting on futures.
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* in progress broken test_time_source
Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
* style
Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
* test undeclared params
Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
* Only get parameter if it is set
Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
* doc fixup
Signed-off-by: William Woodall <william@osrfoundation.org>
* use override rather than virtual in places
Signed-off-by: William Woodall <william@osrfoundation.org>
* rename ParameterInfo_t to ParameterInfo and just use struct, no typedef
Signed-off-by: William Woodall <william@osrfoundation.org>
* add method to access ParameterValue within a Parameter
Signed-off-by: William Woodall <william@osrfoundation.org>
* enable get<Parameter> and get<ParameterValue> on Parameter class
Signed-off-by: William Woodall <william@osrfoundation.org>
* avoid const pass by value
Signed-off-by: William Woodall <william@osrfoundation.org>
* match type of enum in C++ to type used in message definition
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup after rebase
Signed-off-by: William Woodall <william@osrfoundation.org>
* more fixup after rebase
Signed-off-by: William Woodall <william@osrfoundation.org>
* replace create_parameter with declare_parameter
Signed-off-by: William Woodall <william@osrfoundation.org>
* provide implementation for templated declare_parameter method
Signed-off-by: William Woodall <william@osrfoundation.org>
* style
Signed-off-by: William Woodall <william@osrfoundation.org>
* do not use const reference when it's a primitive (like bool)
Signed-off-by: William Woodall <william@osrfoundation.org>
* typo
Signed-off-by: William Woodall <william@osrfoundation.org>
* follow to bool change that wasn't staged
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* added lots of docs, alternative API signatures, and some of the tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* more tests and associated fixes
Signed-off-by: William Woodall <william@osrfoundation.org>
* address documentation feedback
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup previously added tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* add tests and fixes for describe_parameter(s) and get_parameter_types
Signed-off-by: William Woodall <william@osrfoundation.org>
* remove old parameter tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* use const reference where possible
Signed-off-by: William Woodall <william@osrfoundation.org>
* address comments
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix tests for deprecated methods
Signed-off-by: William Woodall <william@osrfoundation.org>
* address feedback
Signed-off-by: William Woodall <william@osrfoundation.org>
* significantly improve the reliability of the time_source tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* uncrustify, cpplint, and cppcheck fixes
Signed-off-by: William Woodall <william@osrfoundation.org>
* Revert "significantly improve the reliability of the time_source tests"
This reverts commit 3ef385d8419c3f71cba91e622138583a91b2682a.
Signed-off-by: William Woodall <william@osrfoundation.org>
* only declare use_sim_time parameter if not already declared
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup rclcpp_lifecycle
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* add missing namespace scope which fails on Windows
Signed-off-by: William Woodall <william@osrfoundation.org>
* extend deprecation warning suppression to support Windows too
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix compiler warnings and missing visibility macro
Signed-off-by: William Woodall <william@osrfoundation.org>
* remove commented left over tests
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix compiler warning on Windows
Signed-off-by: William Woodall <william@osrfoundation.org>
* suppress deprecation warning on include of file in Windows
Signed-off-by: William Woodall <william@osrfoundation.org>
* avoid potential loss of data warning converting int64_t to int
Signed-off-by: William Woodall <william@osrfoundation.org>
* trying to fix more loss of data warnings
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix test_node
Signed-off-by: William Woodall <william@osrfoundation.org>
* add option to automatically declare parameters from initial parameters (yaml file)
Signed-off-by: William Woodall <william@osrfoundation.org>
* remove redundant conditional
Signed-off-by: William Woodall <william@osrfoundation.org>
Both, the `Executor::execute_any_executable` and the destructor for the `AnyExecutable` object used by the multithreaded executor, reset the `can_be_taken_from_` flag on a MutuallyExclusive group. This cause the variable to get out of sync and threads to process executables out of sequence.
This fix clears the callback group variable of the `AnyExecutable` instance effectively preventing its destructor from modifying the variable at the wrong time.
Issue: #702
Signed-off-by: Guillaume Autran <gautran@clearpath.ai>
* Created function to generate exception objects
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Created function to generate exception objects
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Fixed typo
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Fixed typo
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Throw exceptions not created by ret
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Throw exceptions not created by ret
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* convert throw_from_rcl_error to use from_rcl_error
Mostly just a convenience function
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Updated .gitignore
Please ignore
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Re-ordered functions to allow compilation
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* Revert "Updated .gitignore"
This reverts commit bee0ee13ce687bc56bdc7ad1e8382506d9aef428.
Signed-off-by: Jacob Hassold <jhassold@dcscorp.com>
* restore .gitignore to original state
Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
* oops, actually restore .gitignore
Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
* logging, remove_const before comparison
This change removes the const value from the logger before
comparing with std::is_same.
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
* logging template, replace remove_const by remove_cv
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
* Append typename
Located after compiling rclcpp_action from source
Signed-off-by: Víctor Mayoral Vilches <v.mayoralv@gmail.com>
* Options-based create_publisher and create_subscription interfaces
Introduce new Options structs for creating publishers and subscribers. Deprecate existing interfaces for checking in CI how often they are used.
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
* Remove default params that resulted in ambiguous declarations.
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
* Remove one deprecation to limit upstream impact, add documentation on pub/sub options, slim down test lambdas character count
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
* Un-abbreviate Allocator in new interfaces/types, define a common Options specialization that doesn't need empty brackets
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
* Suppress cppcheck syntaxError for the one function
Signed-off-by: Emerson Knapp <eknapp@amazon.com>
* Introduce rclcpp_components package
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Keep pointer to NodeWrapper vs NodeInterface.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Remove component registration from rclcpp
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Make topics names private-prefix.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Handle name and namespace with remap rules.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Linting.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Address reviewer feedback.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Change to smart pointers for managing memory.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Update to use rcpputils filesystem/split.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Address reviewer feedback and add docs.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Add tests around ComponentManager.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Lint.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Address reviewer feedback and add overflow check.
Signed-off-by: Michael Carroll <michael@openrobotics.org>
* Fix CI.
Signed-off-by: Michael Carroll <michael@openrobotics.org>