1
0
mirror of https://gitlab.com/obbart/universal_robots_ros_driver.git synced 2026-04-10 18:10:47 +02:00

throw exception when tool communication is requested for CB3

This commit is contained in:
Felix Mauch
2019-06-11 17:53:31 +02:00
parent e0201002f6
commit 520cd4d860
2 changed files with 36 additions and 0 deletions

View File

@@ -16,6 +16,7 @@
#define UR_RTDE_DRIVER_EXCEPTIONS_H_INCLUDED #define UR_RTDE_DRIVER_EXCEPTIONS_H_INCLUDED
#include <stdexcept> #include <stdexcept>
#include <sstream>
namespace ur_driver namespace ur_driver
{ {
@@ -40,5 +41,33 @@ public:
private: private:
/* data */ /* data */
}; };
class VersionMismatch : public UrException
{
public:
explicit VersionMismatch() : VersionMismatch("", 0, 0)
{
}
explicit VersionMismatch(const std::string& text, const uint32_t version_req, const uint32_t version_actual)
: std::runtime_error(text)
{
version_required_ = version_req;
version_actual_ = version_actual;
std::stringstream ss;
ss << text << "(Required version: " << version_required_ << ", actual version: " << version_actual_ << ")";
text_ = ss.str();
}
virtual ~VersionMismatch() = default;
virtual const char* what() const noexcept override
{
return text_.c_str();
}
private:
uint32_t version_required_;
uint32_t version_actual_;
std::string text_;
};
} // namespace ur_driver } // namespace ur_driver
#endif // ifndef UR_RTDE_DRIVER_EXCEPTIONS_H_INCLUDED #endif // ifndef UR_RTDE_DRIVER_EXCEPTIONS_H_INCLUDED

View File

@@ -82,9 +82,16 @@ ur_driver::UrDriver::UrDriver(const std::string& robot_ip, const std::string& sc
prog.replace(prog.find(SERVER_IP_REPLACE), SERVER_IP_REPLACE.length(), local_ip); prog.replace(prog.find(SERVER_IP_REPLACE), SERVER_IP_REPLACE.length(), local_ip);
prog.replace(prog.find(SERVER_PORT_REPLACE), SERVER_PORT_REPLACE.length(), std::to_string(reverse_port)); prog.replace(prog.find(SERVER_PORT_REPLACE), SERVER_PORT_REPLACE.length(), std::to_string(reverse_port));
auto urcontrol_version = rtde_client_->getVersion();
std::stringstream begin_replace; std::stringstream begin_replace;
if (tool_comm_setup != nullptr) if (tool_comm_setup != nullptr)
{ {
if (urcontrol_version.major < 5)
{
throw VersionMismatch("This robot version does not support using the tool communication interface.", 5,
urcontrol_version.major);
}
begin_replace << "set_tool_voltage(" begin_replace << "set_tool_voltage("
<< static_cast<std::underlying_type<ToolVoltage>::type>(tool_comm_setup->getToolVoltage()) << ")\n"; << static_cast<std::underlying_type<ToolVoltage>::type>(tool_comm_setup->getToolVoltage()) << ")\n";
begin_replace << "set_tool_communication(" begin_replace << "set_tool_communication("