2727
2828#pragma once
2929
30+ // System
3031#include < regex>
3132
32- #include < ur_client_library/ur/dashboard_client.h>
33+ // ROS
34+ #include < rclcpp/rclcpp.hpp>
35+ #include < std_srvs/srv/trigger.hpp>
3336
37+ // UR client library
38+ #include < ur_client_library/ur/dashboard_client.h>
3439#include < ur_dashboard_msgs/msg/program_state.hpp>
3540#include < ur_dashboard_msgs/srv/add_to_log.hpp>
3641#include < ur_dashboard_msgs/srv/get_loaded_program.hpp>
@@ -51,5 +56,77 @@ namespace ur_robot_driver
5156 */
5257class DashboardClientROS
5358{
59+ public:
60+ /* !
61+ * \brief Constructor that shall be used by default
62+ *
63+ * \param nh Node handle pointing to the name space the dashboard-related functionalities are to
64+ * be found
65+ * \param robot_ip IP address of the robot
66+ */
67+ DashboardClientROS (const rclcpp::Node::SharedPtr& node, const std::string& robot_ip);
68+ DashboardClientROS () = delete ;
69+ virtual ~DashboardClientROS () = default ;
70+
71+ private:
72+ inline rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr createDashboardTriggerSrv (const std::string& topic,
73+ const std::string& command,
74+ const std::string& expected)
75+ {
76+ 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));
81+ });
82+
83+ return service;
84+ }
85+
86+ bool handleRunningQuery (ur_dashboard_msgs::srv::IsProgramRunning::Request::SharedPtr req,
87+ ur_dashboard_msgs::srv::IsProgramRunning::Response::SharedPtr resp);
88+
89+ bool handleSavedQuery (ur_dashboard_msgs::srv::IsProgramSaved::Request::SharedPtr req,
90+ ur_dashboard_msgs::srv::IsProgramSaved::Response::SharedPtr resp);
91+
92+ bool handleSafetyModeQuery (ur_dashboard_msgs::srv::GetSafetyMode::Request::SharedPtr req,
93+ ur_dashboard_msgs::srv::GetSafetyMode::Response::SharedPtr resp);
94+
95+ bool handleRobotModeQuery (ur_dashboard_msgs::srv::GetRobotMode::Request::SharedPtr req,
96+ ur_dashboard_msgs::srv::GetRobotMode::Response::SharedPtr resp);
97+
98+ bool connect ();
99+
100+ std::shared_ptr<rclcpp::Node> node_;
101+ urcl::DashboardClient client_;
102+
103+ // Commanding services
104+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr brake_release_service_;
105+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr clear_operational_mode_service_;
106+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr close_popup_service_;
107+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr close_safety_popup_service_;
108+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr pause_service_;
109+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr play_service_;
110+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr power_off_service_;
111+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr power_on_service_;
112+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr restart_safety_service_;
113+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr shutdown_service_;
114+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr stop_service_;
115+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr unlock_protective_stop_service_;
116+ rclcpp::Service<ur_dashboard_msgs::srv::Load>::SharedPtr load_installation_service_;
117+ rclcpp::Service<ur_dashboard_msgs::srv::Load>::SharedPtr load_program_service_;
118+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr quit_service_;
119+ rclcpp::Service<ur_dashboard_msgs::srv::AddToLog>::SharedPtr add_to_log_service_;
120+ rclcpp::Service<std_srvs::srv::Trigger>::SharedPtr reconnect_service_;
121+ rclcpp::Service<ur_dashboard_msgs::srv::RawRequest>::SharedPtr raw_request_service_;
122+
123+ // Query services
124+ rclcpp::Service<ur_dashboard_msgs::srv::IsProgramRunning>::SharedPtr running_service_;
125+ rclcpp::Service<ur_dashboard_msgs::srv::GetLoadedProgram>::SharedPtr get_loaded_program_service_;
126+ rclcpp::Service<ur_dashboard_msgs::srv::IsProgramSaved>::SharedPtr is_program_saved_service_;
127+ rclcpp::Service<ur_dashboard_msgs::srv::Popup>::SharedPtr popup_service_;
128+ rclcpp::Service<ur_dashboard_msgs::srv::GetProgramState>::SharedPtr program_state_service_;
129+ rclcpp::Service<ur_dashboard_msgs::srv::GetSafetyMode>::SharedPtr safety_mode_service_;
130+ rclcpp::Service<ur_dashboard_msgs::srv::GetRobotMode>::SharedPtr robot_mode_service_;
54131};
55132} // namespace ur_robot_driver
0 commit comments