diff --git a/px4_ros2_cpp/include/px4_ros2/navigation/experimental/global_navigation_interface.hpp b/px4_ros2_cpp/include/px4_ros2/navigation/experimental/global_navigation_interface.hpp index 83e3383..87b8216 100644 --- a/px4_ros2_cpp/include/px4_ros2/navigation/experimental/global_navigation_interface.hpp +++ b/px4_ros2_cpp/include/px4_ros2/navigation/experimental/global_navigation_interface.hpp @@ -6,10 +6,11 @@ #pragma once #include -#include #include #include +#include +#include using namespace Eigen; using namespace px4_msgs::msg; @@ -23,17 +24,21 @@ struct GlobalPositionEstimate }; -class GlobalNavigationInterface : public rclcpp::Node +class GlobalNavigationInterface { public: - explicit GlobalNavigationInterface(uint8_t altitude_frame); - ~GlobalNavigationInterface(); + explicit GlobalNavigationInterface(rclcpp::Node & node, uint8_t altitude_frame); + ~GlobalNavigationInterface() = default; - void update(GlobalPositionEstimate & global_position_estimate); + /** + * @brief Publish global position estimate to FMU. + */ + int update(const GlobalPositionEstimate & global_position_estimate) const; -private: const std::string AUX_GLOBAL_POSITION_TOPIC = "/fmu/in/aux_global_position"; +private: + rclcpp::Node & _node; rclcpp::Publisher::SharedPtr _aux_global_position_pub; uint8_t _altitude_frame; diff --git a/px4_ros2_cpp/include/px4_ros2/navigation/experimental/local_navigation_interface.hpp b/px4_ros2_cpp/include/px4_ros2/navigation/experimental/local_navigation_interface.hpp index 534d690..2d06492 100644 --- a/px4_ros2_cpp/include/px4_ros2/navigation/experimental/local_navigation_interface.hpp +++ b/px4_ros2_cpp/include/px4_ros2/navigation/experimental/local_navigation_interface.hpp @@ -8,10 +8,8 @@ #include #include #include -#include #include -#include #include using namespace Eigen; diff --git a/px4_ros2_cpp/src/navigation/experimental/global_navigation_interface.cpp b/px4_ros2_cpp/src/navigation/experimental/global_navigation_interface.cpp index aadcd7e..0f3a615 100644 --- a/px4_ros2_cpp/src/navigation/experimental/global_navigation_interface.cpp +++ b/px4_ros2_cpp/src/navigation/experimental/global_navigation_interface.cpp @@ -9,20 +9,25 @@ namespace px4_ros2 { -GlobalNavigationInterface::GlobalNavigationInterface(uint8_t altitude_frame) -: Node("global_navigation_interface_node"), - _aux_global_position_pub(create_publisher(AUX_GLOBAL_POSITION_TOPIC, 10)), - _altitude_frame(altitude_frame) {} +GlobalNavigationInterface::GlobalNavigationInterface(rclcpp::Node & node, uint8_t altitude_frame) +: _node(node), + _altitude_frame(altitude_frame) +{ + _aux_global_position_pub = + node.create_publisher(AUX_GLOBAL_POSITION_TOPIC, 10); +} -void GlobalNavigationInterface::update(GlobalPositionEstimate & global_position_estimate) +int GlobalNavigationInterface::update(const GlobalPositionEstimate & global_position_estimate) const { AuxGlobalPosition aux_global_position; aux_global_position.timestamp_sample = global_position_estimate.timestamp_sample; // Publish - aux_global_position.timestamp = this->now().nanoseconds() * 1e-3; + aux_global_position.timestamp = _node.get_clock()->now().nanoseconds() * 1e-3; _aux_global_position_pub->publish(aux_global_position); + + return static_cast(NavigationInterfaceCodes::SUCCESS); } } // namespace px4_ros2