From 3abaee82507bb9ce83a799d67c00e0a549888a98 Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Fri, 19 May 2023 17:31:18 +0200 Subject: [PATCH] make px4_controller publish armed message --- src/px4_connection/src/px4_controller.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/px4_connection/src/px4_controller.cpp b/src/px4_connection/src/px4_controller.cpp index 4dcc76e3..fbad0885 100644 --- a/src/px4_connection/src/px4_controller.cpp +++ b/src/px4_connection/src/px4_controller.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include @@ -45,12 +46,14 @@ public: vehicle_setpoint_publisher_ = this->create_publisher("/fmu/in/vehicle_attitude_setpoint", 10); vehicle_command_publisher_ = this->create_publisher("/fmu/in/vehicle_command", 10); trajectory_setpoint_publisher = this->create_publisher("/fmu/in/trajectory_setpoint", 10); + arm_status_publisher_ = this->create_publisher("/drone/arm_status", 10); // offboard_control_mode_publisher_ = this->create_publisher("/fmu/in/offboard_control_mode", 10); vehicle_attitude_subscription_ = this->create_subscription("/fmu/out/vehicle_attitude", qos, std::bind(&PX4Controller::on_attitude_receive, this, std::placeholders::_1)); vehicle_local_position_subscription_ = this->create_subscription("/fmu/out/vehicle_local_position", qos, std::bind(&PX4Controller::on_local_position_receive, this, std::placeholders::_1)); control_mode_subscription_ = this->create_subscription("/drone/control_mode", qos, std::bind(&PX4Controller::on_control_mode_receive, this, std::placeholders::_1)); + set_attitude_service_ = this->create_service("/drone/set_attitude", std::bind(&PX4Controller::handle_attitude_setpoint, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); set_trajectory_service_ = this->create_service("/drone/set_trajectory", std::bind(&PX4Controller::handle_trajectory_setpoint, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); disarm_service_ = this->create_service("/drone/disarm", std::bind(&PX4Controller::handle_disarm_request, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); @@ -66,6 +69,8 @@ private: rclcpp::Publisher::SharedPtr vehicle_setpoint_publisher_; rclcpp::Publisher::SharedPtr trajectory_setpoint_publisher; rclcpp::Publisher::SharedPtr vehicle_command_publisher_; + rclcpp::Publisher::SharedPtr arm_status_publisher_; + rclcpp::Subscription::SharedPtr vehicle_attitude_subscription_; rclcpp::Subscription::SharedPtr vehicle_local_position_subscription_; rclcpp::Subscription::SharedPtr control_mode_subscription_; @@ -223,6 +228,11 @@ private: armed = false; user_in_control = false; publish_vehicle_command(px4_msgs::msg::VehicleCommand::VEHICLE_CMD_COMPONENT_ARM_DISARM, 0.0, 0); + + auto msg = drone_services::msg::DroneArmStatus(); + msg.armed = false; + arm_status_publisher_->publish(msg); + response->success = true; } else @@ -256,6 +266,11 @@ private: RCLCPP_INFO(this->get_logger(), "Arm command sent"); this->last_thrust = -0.1; // spin motors at 10% thrust armed = true; + + auto msg = drone_services::msg::DroneArmStatus(); + msg.armed = true; + arm_status_publisher_->publish(msg); + response->success = true; } else