|
21 | 21 | * |
22 | 22 | * \author Felix Exner [email protected] |
23 | 23 | * \date 2019-10-21 |
| 24 | + * \author Marvin Große Besselmann [email protected] |
| 25 | + * \date 2021-03-22 |
24 | 26 | * |
25 | 27 | */ |
26 | 28 | //---------------------------------------------------------------------- |
|
36 | 38 |
|
37 | 39 | // UR client library |
38 | 40 | #include <ur_client_library/ur/dashboard_client.h> |
| 41 | +#include <ur_client_library/exceptions.h> |
39 | 42 | #include <ur_dashboard_msgs/msg/program_state.hpp> |
40 | 43 | #include <ur_dashboard_msgs/srv/add_to_log.hpp> |
41 | 44 | #include <ur_dashboard_msgs/srv/get_loaded_program.hpp> |
@@ -74,12 +77,20 @@ class DashboardClientROS |
74 | 77 | const std::string& expected) |
75 | 78 | { |
76 | 79 | rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr service = node_->create_service<std_srvs::srv::Trigger>( |
77 | | - "topic", [&, command, expected](const std::shared_ptr<std_srvs::srv::Trigger::Request> req, |
78 | | - const std::shared_ptr<std_srvs::srv::Trigger::Response> resp) { |
79 | | - resp->message = this->client_.sendAndReceive(command); |
80 | | - resp->success = std::regex_match(resp->message, std::regex(expected)); |
| 80 | + topic, [&, command, expected](const std::shared_ptr<std_srvs::srv::Trigger::Request> req, |
| 81 | + const std::shared_ptr<std_srvs::srv::Trigger::Response> resp) { |
| 82 | + try |
| 83 | + { |
| 84 | + resp->message = this->client_.sendAndReceive(command); |
| 85 | + resp->success = std::regex_match(resp->message, std::regex(expected)); |
| 86 | + } |
| 87 | + catch (const urcl::UrException& e) |
| 88 | + { |
| 89 | + RCLCPP_ERROR(rclcpp::get_logger("Dashboard_Client"), "Service Call failed: '%s'", e.what()); |
| 90 | + resp->message = e.what(); |
| 91 | + resp->success = false; |
| 92 | + } |
81 | 93 | }); |
82 | | - |
83 | 94 | return service; |
84 | 95 | } |
85 | 96 |
|
|
0 commit comments