61 ROS_ERROR(
"ATTENTION: YOU HAVE AN INCORRECT PARAMETER FILE!!!");
72 std::vector<float>& my_vector)
76 for (
size_t i = 0; i < (unsigned) my_array.
size(); ++i)
83 my_vector.push_back(static_cast<double>(my_array[i]));
87 int value = my_array[i];
88 my_vector.push_back(static_cast<double>(value));
100 const uint16_t minor_version_target,
103 ROS_INFO(
"Trying to search controller parameters for version: %d.%d", major_version_target, minor_version_target);
108 if ( 0 == major_version_target || 5 < major_version_target )
110 ROS_ERROR(
"Could not establish connection to Schunk SVH. Please check connections and power source!");
114 if (0 < parameters.
size())
116 ROS_DEBUG(
"There exist %d different parameter versions", parameters.
size());
117 for (
size_t i = 0; i < (unsigned) parameters.
size(); ++i)
122 uint16_t major_version_read = int(parameter_set_yaml[
"major_version"]);
123 uint16_t minor_version_read = int(parameter_set_yaml[
"minor_version"]);
126 ROS_DEBUG(
"Skipping version %d.%d as better matching version was already found",
133 bool is_correct_version = major_version_read == major_version_target
134 && minor_version_read == minor_version_target;
135 bool is_same_major_version = major_version_read == major_version_target
136 && minor_version_read <= minor_version_target;
137 bool is_default_state = major_version_read == 0
138 && minor_version_read == 0;
140 if (is_correct_version || is_same_major_version || is_default_state)
142 ROS_DEBUG(
"major version: %d minor version: %d", major_version_read, minor_version_read);
144 for (std::map<driver_svh::SVHChannel, std::string>::iterator it =
m_name_to_enum.begin();
150 if (parameter_set_yaml.
hasMember(it->second))
152 ROS_DEBUG(
"Parameter Name: %s", it->second.c_str());
163 std::stringstream error_stream;
164 error_stream <<
"Could not find parameters for channel " << it->second;
170 if (is_default_state)
172 is_default_state =
false;
174 else if (is_correct_version)
176 ROS_INFO(
"Did find correct version");
181 ROS_DEBUG(
"Did find same major version");
186 ROS_WARN_STREAM(
"DID NOT FIND EXACT VERSION: " << major_version_target <<
"." 187 << minor_version_target
188 <<
" Falling back to: "
const std::string & getMessage() const
DynamicParameter(const uint16_t major_version, const uint16_t minor_version, XmlRpc::XmlRpcValue ¶meters)
DynamicParameter constructs a new dynamic parameter handler.
std::vector< bool > home_settings_given
Settings m_settings
Stores the settings received by the firmware.
std::map< driver_svh::SVHChannel, std::string > m_name_to_enum
Stores an enum-string matching map.
std::vector< bool > position_settings_given
std::vector< std::vector< float > > position_settings
std::vector< std::vector< float > > home_settings
std::vector< bool > current_settings_given
bool xml_rpc_value_to_vector(XmlRpc::XmlRpcValue my_array, std::vector< float > &my_vector)
Converts the given XmlRpcValue array to a std:vector /param my_array XmlRpcValue array created by rea...
#define ROS_WARN_STREAM(args)
bool hasMember(const std::string &name) const
#define ROS_ERROR_STREAM(args)
void parse_parameters(const uint16_t major_version, const uint16_t minor_version, XmlRpc::XmlRpcValue ¶meters)
This method parses the given XmlRpcValue array and sets the corresponding parameters.
std::vector< std::vector< float > > current_settings