Skip to content

Commit af2f341

Browse files
authored
Adding new tactile sensor data structure to list of tactile sensors hardware interface (shadow-robot#232)
* Adding MST data structure to list of tactile sensors hardware interface * Changing new sensor message. * Increase git_version by one byte to accomodate new sensor status check
1 parent a026508 commit af2f341

File tree

1 file changed

+98
-63
lines changed

1 file changed

+98
-63
lines changed

sr_hardware_interface/include/sr_hardware_interface/tactile_sensors.hpp

Lines changed: 98 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2011 Shadow Robot Company Ltd.
2+
* Copyright 2011, 2023 Shadow Robot Company Ltd.
33
*
44
* This program is free software: you can redistribute it and/or modify it
55
* under the terms of the GNU General Public License as published by the Free
@@ -33,6 +33,7 @@
3333
#include <boost/algorithm/string.hpp>
3434
#include <boost/algorithm/string/find_iterator.hpp>
3535
#include <boost/circular_buffer.hpp>
36+
#include <geometry_msgs/Point.h>
3637
#include <sstream>
3738

3839
#include <ros/ros.h>
@@ -49,13 +50,15 @@ class GenericTactileData
4950
GenericTactileData(bool tactile_data_valid, int sample_frequency,
5051
std::string manufacturer, std::string serial_number,
5152
int software_version_current, int software_version_server,
52-
bool software_version_modified, std::string pcb_version)
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)
53+
bool software_version_modified, std::string pcb_version) :
54+
tactile_data_valid(tactile_data_valid),
55+
sample_frequency(sample_frequency),
56+
manufacturer(manufacturer),
57+
serial_number(serial_number),
58+
software_version_current(software_version_current),
59+
software_version_server(software_version_server),
60+
software_version_modified(software_version_modified),
61+
pcb_version(pcb_version)
5962
{
6063
};
6164

@@ -85,12 +88,12 @@ class GenericTactileData
8588
*/
8689
void set_software_version(char* raw_version)
8790
{
88-
// New Git format: \n\n 20 bytes Git revision
91+
// New Git format: \n\n 20 bytes Git revision + 1 byte for status check enable flag
8992
if (raw_version[0] == '\n' && raw_version[1] == '\n')
9093
{
9194
// Convert Git revision to hexadecimal long hash
9295
std::stringstream git_revision;
93-
for (int i = 2; i < 22; i++)
96+
for (int i = 2; i < 23; i++)
9497
{
9598
git_revision << std::setfill('0') << std::setw(2) << std::hex <<
9699
static_cast<int>(static_cast<uint8_t>(raw_version[i]));
@@ -177,32 +180,35 @@ class GenericTactileData
177180
}
178181
};
179182

180-
class PST3Data
181-
:
182-
public GenericTactileData
183+
class PST3Data :
184+
public GenericTactileData
183185
{
184186
public:
185-
PST3Data()
186-
: GenericTactileData()
187+
PST3Data() :
188+
GenericTactileData()
187189
{
188190
};
189191

190-
PST3Data(const PST3Data &pst3)
191-
: GenericTactileData(pst3.tactile_data_valid, pst3.sample_frequency,
192-
pst3.manufacturer, pst3.serial_number,
193-
pst3.software_version_current,
194-
pst3.software_version_server,
195-
pst3.software_version_modified,
196-
pst3.pcb_version),
197-
pressure(pst3.pressure), temperature(pst3.temperature),
198-
debug_1(pst3.debug_1), debug_2(pst3.debug_2),
199-
pressure_raw(pst3.pressure_raw), zero_tracking(pst3.zero_tracking), dac_value(pst3.dac_value)
192+
PST3Data(const PST3Data &pst3) :
193+
GenericTactileData(pst3.tactile_data_valid, pst3.sample_frequency,
194+
pst3.manufacturer, pst3.serial_number,
195+
pst3.software_version_current,
196+
pst3.software_version_server,
197+
pst3.software_version_modified,
198+
pst3.pcb_version),
199+
pressure(pst3.pressure),
200+
temperature(pst3.temperature),
201+
debug_1(pst3.debug_1),
202+
debug_2(pst3.debug_2),
203+
pressure_raw(pst3.pressure_raw),
204+
zero_tracking(pst3.zero_tracking),
205+
dac_value(pst3.dac_value)
200206
{
201207
};
202208

203209

204-
explicit PST3Data(const GenericTactileData &gtd)
205-
: GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
210+
explicit PST3Data(const GenericTactileData &gtd) :
211+
GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
206212
gtd.manufacturer, gtd.serial_number,
207213
gtd.software_version_current,
208214
gtd.software_version_server,
@@ -245,41 +251,42 @@ class PST3Data
245251
};
246252
};
247253

248-
class BiotacData
249-
:
250-
public GenericTactileData
254+
class BiotacData :
255+
public GenericTactileData
251256
{
252257
public:
253-
BiotacData()
254-
: GenericTactileData()
258+
BiotacData() :
259+
GenericTactileData()
255260
{
256261
pac_buffer_ = boost::circular_buffer<int16_t>(pac_size_);
257262
pac_vector_.reserve(pac_size_);
258263
};
259264

260-
BiotacData(const BiotacData &btac)
261-
: GenericTactileData(btac.tactile_data_valid, btac.sample_frequency,
262-
btac.manufacturer, btac.serial_number,
263-
btac.software_version_current,
264-
btac.software_version_server,
265-
btac.software_version_modified,
266-
btac.pcb_version),
267-
pac0(btac.pac0), pac1(btac.pac1),
268-
pdc(btac.pdc), tac(btac.tac),
269-
tdc(btac.tdc)
265+
BiotacData(const BiotacData &btac) :
266+
GenericTactileData(btac.tactile_data_valid, btac.sample_frequency,
267+
btac.manufacturer, btac.serial_number,
268+
btac.software_version_current,
269+
btac.software_version_server,
270+
btac.software_version_modified,
271+
btac.pcb_version),
272+
pac0(btac.pac0),
273+
pac1(btac.pac1),
274+
pdc(btac.pdc),
275+
tac(btac.tac),
276+
tdc(btac.tdc)
270277
{
271278
electrodes = std::vector<int16_t>(btac.electrodes);
272279
pac_vector_ = std::vector<int16_t>(btac.pac_vector_);
273280
pac_buffer_ = boost::circular_buffer<int16_t>(btac.pac_buffer_);
274281
};
275282

276-
explicit BiotacData(const GenericTactileData &gtd)
277-
: GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
278-
gtd.manufacturer, gtd.serial_number,
279-
gtd.software_version_current,
280-
gtd.software_version_server,
281-
gtd.software_version_modified,
282-
gtd.pcb_version)
283+
explicit BiotacData(const GenericTactileData &gtd) :
284+
GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
285+
gtd.manufacturer, gtd.serial_number,
286+
gtd.software_version_current,
287+
gtd.software_version_server,
288+
gtd.software_version_modified,
289+
gtd.pcb_version)
283290
{
284291
pac_buffer_ = boost::circular_buffer<int16_t>(pac_size_);
285292
pac_vector_.reserve(pac_size_);
@@ -321,23 +328,22 @@ class BiotacData
321328
std::vector<int16_t> pac_vector_;
322329
};
323330

324-
class UBI0Data
325-
:
326-
public GenericTactileData
331+
class UBI0Data :
332+
public GenericTactileData
327333
{
328334
public:
329-
UBI0Data()
330-
: GenericTactileData()
335+
UBI0Data() :
336+
GenericTactileData()
331337
{
332338
};
333339

334-
UBI0Data(const UBI0Data &ubi0)
335-
: GenericTactileData(ubi0.tactile_data_valid, ubi0.sample_frequency,
336-
ubi0.manufacturer, ubi0.serial_number,
337-
ubi0.software_version_current,
338-
ubi0.software_version_server,
339-
ubi0.software_version_modified,
340-
ubi0.pcb_version)
340+
UBI0Data(const UBI0Data &ubi0) :
341+
GenericTactileData(ubi0.tactile_data_valid, ubi0.sample_frequency,
342+
ubi0.manufacturer, ubi0.serial_number,
343+
ubi0.software_version_current,
344+
ubi0.software_version_server,
345+
ubi0.software_version_modified,
346+
ubi0.pcb_version)
341347
{
342348
for (unsigned int i = 0; i < ubi0.distal.size(); i++)
343349
{
@@ -353,8 +359,8 @@ class UBI0Data
353359
}
354360
};
355361

356-
explicit UBI0Data(const GenericTactileData &gtd)
357-
: GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
362+
explicit UBI0Data(const GenericTactileData &gtd) :
363+
GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
358364
gtd.manufacturer, gtd.serial_number,
359365
gtd.software_version_current,
360366
gtd.software_version_server,
@@ -395,11 +401,40 @@ class UBI0PalmData
395401
boost::array<uint16_t, 16ul> palm;
396402
};
397403

404+
class MSTData :
405+
public GenericTactileData
406+
{
407+
public:
408+
MSTData() :
409+
GenericTactileData()
410+
{
411+
};
412+
413+
explicit MSTData(const GenericTactileData &gtd) :
414+
GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
415+
gtd.manufacturer, gtd.serial_number,
416+
gtd.software_version_current,
417+
gtd.software_version_server,
418+
gtd.software_version_modified,
419+
gtd.pcb_version)
420+
{
421+
};
422+
423+
~MSTData()
424+
{
425+
};
426+
427+
std::vector<geometry_msgs::Point> magnetic_data;
428+
std::vector<float> temperature_data;
429+
int8_t status_check;
430+
};
431+
398432
struct AllTactileData
399433
{
400434
std::string type;
401435
BiotacData biotac;
402436
PST3Data pst;
437+
MSTData mst;
403438
UBI0Data ubi0;
404439
};
405440
} // namespace tactiles

0 commit comments

Comments
 (0)