26 #ifndef _TACTILE_SENSORS_HPP_ 27 #define _TACTILE_SENSORS_HPP_ 32 #include <boost/array.hpp> 33 #include <boost/algorithm/string.hpp> 34 #include <boost/algorithm/string/find_iterator.hpp> 35 #include <boost/circular_buffer.hpp> 53 : tactile_data_valid(tactile_data_valid), sample_frequency(sample_frequency),
54 manufacturer(manufacturer), serial_number(serial_number),
55 software_version_current(software_version_current),
56 software_version_server(software_version_server),
57 software_version_modified(software_version_modified),
58 pcb_version(pcb_version)
87 std::vector<std::string> splitted_string;
88 boost::split(splitted_string, version, boost::is_any_of(
"\n"));
90 ROS_DEBUG(
"Tactile version: %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X",
91 static_cast<unsigned char>(version[0]), static_cast<unsigned char>(version[1]),
92 static_cast<unsigned char>(version[2]), static_cast<unsigned char>(version[3]),
93 static_cast<unsigned char>(version[4]), static_cast<unsigned char>(version[5]),
94 static_cast<unsigned char>(version[6]), static_cast<unsigned char>(version[7]),
95 static_cast<unsigned char>(version[8]), static_cast<unsigned char>(version[9]),
96 static_cast<unsigned char>(version[10]), static_cast<unsigned char>(version[11]),
97 static_cast<unsigned char>(version[12]), static_cast<unsigned char>(version[13]),
98 static_cast<unsigned char>(version[14]), static_cast<unsigned char>(version[15]));
99 if (splitted_string.size() >= 3)
101 software_version_current =
convertToInt(splitted_string[0]);
102 software_version_server =
convertToInt(splitted_string[1]);
104 if (splitted_string[2] ==
"No")
106 software_version_modified =
false;
110 software_version_modified =
true;
115 ROS_ERROR(
"Incorrect tactile sensor version format");
116 software_version_current = 0;
117 software_version_server = 0;
118 software_version_modified =
false;
131 std::string full_version;
133 std::stringstream ss;
134 if (software_version_modified)
136 ss <<
"current: " << software_version_current <<
" / server: " << software_version_server <<
" / MODIFIED";
140 ss <<
"current: " << software_version_current <<
" / server: " << software_version_server <<
" / not modified";
143 full_version = ss.str();
152 std::istringstream i(s);
179 pressure(pst3.pressure), temperature(pst3.temperature),
180 debug_1(pst3.debug_1), debug_2(pst3.debug_2),
181 pressure_raw(pst3.pressure_raw), zero_tracking(pst3.zero_tracking), dac_value(pst3.dac_value)
219 std::string full_version;
221 std::stringstream ss;
224 full_version = ss.str();
238 pac_buffer_ = boost::circular_buffer<int16_t>(pac_size_);
239 pac_vector_.reserve(pac_size_);
249 pac0(btac.pac0), pac1(btac.pac1),
250 pdc(btac.pdc), tac(btac.tac),
253 electrodes = std::vector<int16_t>(btac.
electrodes);
254 pac_vector_ = std::vector<int16_t>(btac.
pac_vector_);
255 pac_buffer_ = boost::circular_buffer<int16_t>(btac.
pac_buffer_);
266 pac_buffer_ = boost::circular_buffer<int16_t>(pac_size_);
267 pac_vector_.reserve(pac_size_);
274 std::vector<int16_t>
get_pac(
bool consume =
false)
277 pac_vector_.insert(pac_vector_.begin(), pac_buffer_.begin(), pac_buffer_.end());
287 return get_pac(
true);
300 static const size_t pac_size_ = 270;
324 for (
unsigned int i = 0; i < ubi0.
distal.size(); i++)
326 distal[i] = ubi0.
distal[i];
328 for (
unsigned int i = 0; i < ubi0.
middle.size(); i++)
330 middle[i] = ubi0.
middle[i];
332 for (
unsigned int i = 0; i < ubi0.
proximal.size(); i++)
353 boost::array<uint16_t, 12ul>
distal;
367 for (
unsigned int i = 0; i < ubi0.
palm.size(); i++)
369 palm[i] = ubi0.
palm[i];
377 boost::array<uint16_t, 16ul>
palm;
boost::array< uint16_t, 4ul > middle
GenericTactileData(bool tactile_data_valid, int sample_frequency, std::string manufacturer, std::string serial_number, int software_version_current, int software_version_server, bool software_version_modified, std::string pcb_version)
UBI0PalmData(const UBI0PalmData &ubi0)
BiotacData(const GenericTactileData >d)
virtual ~GenericTactileData()
int software_version_current
double convertToInt(std::string const &s)
std::vector< int16_t > electrodes
std::vector< int16_t > pac_vector_
PST3Data(const GenericTactileData >d)
BiotacData(const BiotacData &btac)
boost::array< uint16_t, 16ul > palm
std::vector< int16_t > consume_pac()
boost::array< uint16_t, 12ul > distal
void set_software_version(std::string version)
bool software_version_modified
UBI0Data(const GenericTactileData >d)
PST3Data(const PST3Data &pst3)
boost::array< uint16_t, 4ul > proximal
UBI0Data(const UBI0Data &ubi0)
std::string serial_number
virtual std::string get_software_version()
virtual std::string get_software_version()
std::vector< int16_t > get_pac(bool consume=false)
boost::circular_buffer< int16_t > pac_buffer_
int software_version_server