diff --git a/hardware_interface/include/hardware_interface/handle.hpp b/hardware_interface/include/hardware_interface/handle.hpp index 53a0e1ee3a..4327191810 100644 --- a/hardware_interface/include/hardware_interface/handle.hpp +++ b/hardware_interface/include/hardware_interface/handle.hpp @@ -257,17 +257,17 @@ class StateInterface : public Handle void registerIntrospection() const { - if (std::holds_alternative(value_)) + if (value_ptr_ || std::holds_alternative(value_)) { std::function f = [this]() - { return value_ptr_ ? *value_ptr_ : std::numeric_limits::quiet_NaN(); }; + { return value_ptr_ ? *value_ptr_ : std::get(value_); }; DEFAULT_REGISTER_ROS2_CONTROL_INTROSPECTION("state_interface." + get_name(), f); } } void unregisterIntrospection() const { - if (std::holds_alternative(value_)) + if (value_ptr_ || std::holds_alternative(value_)) { DEFAULT_UNREGISTER_ROS2_CONTROL_INTROSPECTION("state_interface." + get_name()); } @@ -302,17 +302,17 @@ class CommandInterface : public Handle void registerIntrospection() const { - if (std::holds_alternative(value_)) + if (value_ptr_ || std::holds_alternative(value_)) { std::function f = [this]() - { return value_ptr_ ? *value_ptr_ : std::numeric_limits::quiet_NaN(); }; + { return value_ptr_ ? *value_ptr_ : std::get(value_); }; DEFAULT_REGISTER_ROS2_CONTROL_INTROSPECTION("command_interface." + get_name(), f); } } void unregisterIntrospection() const { - if (std::holds_alternative(value_)) + if (value_ptr_ || std::holds_alternative(value_)) { DEFAULT_UNREGISTER_ROS2_CONTROL_INTROSPECTION("command_interface." + get_name()); }