18 #include "nav2_rviz_plugins/utils.hpp"
20 namespace nav2_rviz_plugins
24 rclcpp::Node::SharedPtr node,
bool & server_failed,
const std::string & server_name,
25 const std::string & plugin_type, QComboBox * combo_box, rclcpp::Executor::SharedPtr executor)
28 if (combo_box->count() > 0) {
32 auto parameter_client = std::make_shared<rclcpp::AsyncParametersClient>(node, server_name);
35 bool server_unavailable =
false;
36 while (!parameter_client->wait_for_service(std::chrono::seconds(1))) {
38 RCLCPP_ERROR(node->get_logger(),
"Interrupted while waiting for the service. Exiting.");
41 RCLCPP_INFO(node->get_logger(),
"%s service not available", server_name.c_str());
42 server_unavailable =
true;
49 if (server_unavailable) {
52 auto parameters = parameter_client->get_parameters({plugin_type});
54 if (executor->spin_until_future_complete(parameters) != rclcpp::FutureReturnCode::SUCCESS) {
55 RCLCPP_ERROR(node->get_logger(),
56 "Failed to get parameter '%s' from server '%s'",
57 plugin_type.c_str(), server_name.c_str());
61 if (rclcpp::spin_until_future_complete(node, parameters) != rclcpp::FutureReturnCode::SUCCESS) {
62 RCLCPP_ERROR(node->get_logger(),
63 "Failed to get parameter '%s' from server '%s'",
64 plugin_type.c_str(), server_name.c_str());
69 auto str_arr = parameters.get()[0].as_string_array();
70 combo_box->addItem(
"Default");
71 for (
auto str : str_arr) {
72 combo_box->addItem(QString::fromStdString(str));
74 combo_box->setCurrentText(
"Default");
77 QString getGoalStatusLabel(std::string title, int8_t status)
79 std::string status_str;
81 case action_msgs::msg::GoalStatus::STATUS_EXECUTING:
82 status_str =
"<font color=green>active</color>";
85 case action_msgs::msg::GoalStatus::STATUS_SUCCEEDED:
86 status_str =
"<font color=green>reached</color>";
89 case action_msgs::msg::GoalStatus::STATUS_CANCELED:
90 status_str =
"<font color=orange>canceled</color>";
93 case action_msgs::msg::GoalStatus::STATUS_ABORTED:
94 status_str =
"<font color=red>aborted</color>";
97 case action_msgs::msg::GoalStatus::STATUS_UNKNOWN:
98 status_str =
"unknown";
102 status_str =
"inactive";
107 "<table><tr><td width=150><b>" + title +
":</b></td><td>" +
108 status_str +
"</td></tr></table>").c_str());