Merge lp:~shadowrobot/sr-ros-interface-ethercat/tactiles_software_version into lp:sr-ros-interface-ethercat

Proposed by Ugo
Status: Merged
Merged at revision: 521
Proposed branch: lp:~shadowrobot/sr-ros-interface-ethercat/tactiles_software_version
Merge into: lp:sr-ros-interface-ethercat
Diff against target: 298 lines (+132/-16)
6 files modified
sr_robot_lib/include/sr_robot_lib/tactile_sensors.hpp (+48/-5)
sr_robot_lib/src/biotac.cpp (+2/-2)
sr_robot_lib/src/generic_tactiles.cpp (+1/-1)
sr_robot_lib/src/shadow_PSTs.cpp (+2/-2)
sr_robot_lib/src/sr_robot_lib.cpp (+13/-2)
sr_robot_lib/src/tactile_sensors.cpp (+66/-4)
To merge this branch: bzr merge lp:~shadowrobot/sr-ros-interface-ethercat/tactiles_software_version
Reviewer Review Type Date Requested Status
Hugo Elias (community) Approve
Review via email: mp+84764@code.launchpad.net

Description of the change

Fixed the software version for the tactiles.

To post a comment you must log in.
521. By Hand <hand@syntouch-big>

TESTED: Small corrections + documentation

Revision history for this message
Ugo (ugocupcic) wrote :

this should now work.

Revision history for this message
Hugo Elias (hugo-shadowrobot) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'sr_robot_lib/include/sr_robot_lib/tactile_sensors.hpp'
--- sr_robot_lib/include/sr_robot_lib/tactile_sensors.hpp 2011-10-26 18:08:05 +0000
+++ sr_robot_lib/include/sr_robot_lib/tactile_sensors.hpp 2011-12-07 14:07:26 +0000
@@ -27,6 +27,9 @@
27#ifndef _TACTILE_SENSORS_HPP_27#ifndef _TACTILE_SENSORS_HPP_
28#define _TACTILE_SENSORS_HPP_28#define _TACTILE_SENSORS_HPP_
2929
30#include <iostream>
31#include <sstream>
32#include <string>
30#include <string>33#include <string>
31#include <vector>34#include <vector>
3235
@@ -41,11 +44,15 @@
4144
42 GenericTactileData(bool tactile_data_valid, int sample_frequency,45 GenericTactileData(bool tactile_data_valid, int sample_frequency,
43 std::string manufacturer, std::string serial_number,46 std::string manufacturer, std::string serial_number,
44 int software_version, int pcb_version)47 int software_version_current, int software_version_server,
48 bool software_version_modified, int pcb_version)
45 : tactile_data_valid(tactile_data_valid), sample_frequency(sample_frequency),49 : tactile_data_valid(tactile_data_valid), sample_frequency(sample_frequency),
46 manufacturer(manufacturer), serial_number(serial_number), 50 manufacturer(manufacturer), serial_number(serial_number),
47 software_version(software_version), pcb_version(pcb_version) 51 software_version_current(software_version_current),
48 {};52 software_version_server(software_version_server),
53 software_version_modified(software_version_modified),
54 pcb_version(pcb_version)
55 {};
4956
50 ~GenericTactileData() {};57 ~GenericTactileData() {};
5158
@@ -56,8 +63,36 @@
56 std::string manufacturer;63 std::string manufacturer;
57 std::string serial_number;64 std::string serial_number;
5865
59 int software_version;66 int software_version_current;
67 int software_version_server;
68 bool software_version_modified;
69
70 /**
71 * Parses the version string received
72 * from the tactiles and fill in the
73 * variables.
74 *
75 * @version The raw version string.
76 */
77 void set_software_version( std::string version );
78 /**
79 * Formats the software version for the
80 * diagnostics.
81 *
82 * @return the formatted string
83 */
84 virtual std::string get_software_version();
85
60 int pcb_version;86 int pcb_version;
87
88 inline double convertToInt(std::string const& s)
89 {
90 std::istringstream i(s);
91 int x;
92 if (!(i >> x))
93 x = -1;
94 return x;
95 }
61 };96 };
6297
63 class PST3Data98 class PST3Data
@@ -103,6 +138,14 @@
103 int tac; //int16u in word[2]138 int tac; //int16u in word[2]
104 int tdc; //int16u in word[2]139 int tdc; //int16u in word[2]
105 boost::array<short int, 19ul> electrodes; //int16u in word[2]140 boost::array<short int, 19ul> electrodes; //int16u in word[2]
141
142 /**
143 * Formats the software version for the
144 * diagnostics.
145 *
146 * @return the formatted string
147 */
148 virtual std::string get_software_version();
106 };149 };
107}150}
108151
109152
=== modified file 'sr_robot_lib/src/biotac.cpp'
--- sr_robot_lib/src/biotac.cpp 2011-12-05 18:12:11 +0000
+++ sr_robot_lib/src/biotac.cpp 2011-12-07 14:07:26 +0000
@@ -192,7 +192,7 @@
192 case TACTILE_SENSOR_TYPE_SOFTWARE_VERSION:192 case TACTILE_SENSOR_TYPE_SOFTWARE_VERSION:
193 if( sr_math_utils::is_bit_mask_index_true(tactile_mask, id_sensor) )193 if( sr_math_utils::is_bit_mask_index_true(tactile_mask, id_sensor) )
194 {194 {
195 tactiles_vector->at(id_sensor).software_version = static_cast<unsigned int>(static_cast<int16u>(status_data->tactile[id_sensor].word[0]) );195 tactiles_vector->at(id_sensor).set_software_version( status_data->tactile[id_sensor].string );
196 }196 }
197 break;197 break;
198198
@@ -280,7 +280,7 @@
280 d.addf("Manufacturer", "%s", tactiles_vector->at(id_tact).manufacturer.c_str());280 d.addf("Manufacturer", "%s", tactiles_vector->at(id_tact).manufacturer.c_str());
281 d.addf("Serial Number", "%s", tactiles_vector->at(id_tact).serial_number.c_str());281 d.addf("Serial Number", "%s", tactiles_vector->at(id_tact).serial_number.c_str());
282282
283 d.addf("Software Version", "%d", tactiles_vector->at(id_tact).software_version);283 d.addf("Software Version", "%s", tactiles_vector->at(id_tact).get_software_version().c_str());
284 d.addf("PCB Version", "%d", tactiles_vector->at(id_tact).pcb_version);284 d.addf("PCB Version", "%d", tactiles_vector->at(id_tact).pcb_version);
285285
286 vec.push_back(d);286 vec.push_back(d);
287287
=== modified file 'sr_robot_lib/src/generic_tactiles.cpp'
--- sr_robot_lib/src/generic_tactiles.cpp 2011-12-05 18:12:11 +0000
+++ sr_robot_lib/src/generic_tactiles.cpp 2011-12-07 14:07:26 +0000
@@ -102,7 +102,7 @@
102 if( sr_math_utils::is_bit_mask_index_true(tactile_mask, id_sensor) )102 if( sr_math_utils::is_bit_mask_index_true(tactile_mask, id_sensor) )
103 {103 {
104 if( tactiles_vector != NULL )104 if( tactiles_vector != NULL )
105 tactiles_vector->at(id_sensor).software_version = static_cast<unsigned int>(static_cast<int16u>(status_data->tactile[id_sensor].word[0]) );105 tactiles_vector->at(id_sensor).set_software_version( status_data->tactile[id_sensor].string );
106 }106 }
107 break;107 break;
108108
109109
=== modified file 'sr_robot_lib/src/shadow_PSTs.cpp'
--- sr_robot_lib/src/shadow_PSTs.cpp 2011-12-05 18:12:11 +0000
+++ sr_robot_lib/src/shadow_PSTs.cpp 2011-12-07 14:07:26 +0000
@@ -120,7 +120,7 @@
120 case TACTILE_SENSOR_TYPE_SOFTWARE_VERSION:120 case TACTILE_SENSOR_TYPE_SOFTWARE_VERSION:
121 if( sr_math_utils::is_bit_mask_index_true(tactile_mask, id_sensor) )121 if( sr_math_utils::is_bit_mask_index_true(tactile_mask, id_sensor) )
122 {122 {
123 tactiles_vector->at(id_sensor).software_version = static_cast<unsigned int>(static_cast<int16u>(status_data->tactile[id_sensor].word[0]) );123 tactiles_vector->at(id_sensor).set_software_version( status_data->tactile[id_sensor].string );
124 }124 }
125 break;125 break;
126126
@@ -187,7 +187,7 @@
187 d.addf("Manufacturer", "%s", tactiles_vector->at(id_tact).manufacturer.c_str());187 d.addf("Manufacturer", "%s", tactiles_vector->at(id_tact).manufacturer.c_str());
188 d.addf("Serial Number", "%s", tactiles_vector->at(id_tact).serial_number.c_str());188 d.addf("Serial Number", "%s", tactiles_vector->at(id_tact).serial_number.c_str());
189189
190 d.addf("Software Version", "%d", tactiles_vector->at(id_tact).software_version);190 d.addf("Software Version", "%d", tactiles_vector->at(id_tact).get_software_version().c_str());
191 d.addf("PCB Version", "%d", tactiles_vector->at(id_tact).pcb_version);191 d.addf("PCB Version", "%d", tactiles_vector->at(id_tact).pcb_version);
192192
193 d.addf("Pressure Raw", "%d", tactiles_vector->at(id_tact).pressure_raw);193 d.addf("Pressure Raw", "%d", tactiles_vector->at(id_tact).pressure_raw);
194194
=== modified file 'sr_robot_lib/src/sr_robot_lib.cpp'
--- sr_robot_lib/src/sr_robot_lib.cpp 2011-12-06 18:43:27 +0000
+++ sr_robot_lib/src/sr_robot_lib.cpp 2011-12-07 14:07:26 +0000
@@ -606,7 +606,7 @@
606 if( joint_tmp->motor->motor_id == 8 )606 if( joint_tmp->motor->motor_id == 8 )
607 {607 {
608 //ROS_ERROR_STREAM("Current " <<actuator->state_.last_measured_current_);608 //ROS_ERROR_STREAM("Current " <<actuator->state_.last_measured_current_);
609 msg_debug.data = actuator->state_.last_measured_current_;609 msg_debug.data = static_cast<int16u>(status_data->motor_data_packet[index_motor_in_msg].misc);
610 debug_publishers[2].publish(msg_debug);610 debug_publishers[2].publish(msg_debug);
611 }611 }
612#endif612#endif
@@ -619,7 +619,7 @@
619 if( joint_tmp->motor->motor_id == 8 )619 if( joint_tmp->motor->motor_id == 8 )
620 {620 {
621 //ROS_ERROR_STREAM("Voltage " <<actuator->state_.motor_voltage_);621 //ROS_ERROR_STREAM("Voltage " <<actuator->state_.motor_voltage_);
622 msg_debug.data = actuator->state_.motor_voltage_;622 msg_debug.data = static_cast<int16u>(status_data->motor_data_packet[index_motor_in_msg].misc);
623 debug_publishers[3].publish(msg_debug);623 debug_publishers[3].publish(msg_debug);
624 }624 }
625#endif625#endif
@@ -745,9 +745,20 @@
745 }745 }
746746
747 if (read_torque)747 if (read_torque)
748 {
748 actuator->state_.last_measured_effort_ =749 actuator->state_.last_measured_effort_ =
749 static_cast<double>(static_cast<int16s>(status_data->motor_data_packet[index_motor_in_msg].torque));750 static_cast<double>(static_cast<int16s>(status_data->motor_data_packet[index_motor_in_msg].torque));
750751
752#ifdef DEBUG_PUBLISHER
753 if( joint_tmp->motor->motor_id == 8 )
754 {
755 //ROS_ERROR_STREAM("Torque " << static_cast<int16s>(status_data->motor_data_packet[index_motor_in_msg].torque));
756 msg_debug.data = static_cast<int16s>(status_data->motor_data_packet[index_motor_in_msg].torque);
757 debug_publishers[4].publish(msg_debug);
758 }
759#endif
760 }
761
751 //Check the message to see if everything has already been received762 //Check the message to see if everything has already been received
752 if (motor_current_state == operation_mode::device_update_state::INITIALIZATION)763 if (motor_current_state == operation_mode::device_update_state::INITIALIZATION)
753 {764 {
754765
=== modified file 'sr_robot_lib/src/tactile_sensors.cpp'
--- sr_robot_lib/src/tactile_sensors.cpp 2011-12-05 12:36:19 +0000
+++ sr_robot_lib/src/tactile_sensors.cpp 2011-12-07 14:07:26 +0000
@@ -25,10 +25,46 @@
25 */25 */
2626
27#include "sr_robot_lib/tactile_sensors.hpp"27#include "sr_robot_lib/tactile_sensors.hpp"
28#include <boost/algorithm/string.hpp>
29#include <boost/algorithm/string/find_iterator.hpp>
30#include <sstream>
2831
32#include <ros/ros.h>
29namespace tactiles33namespace tactiles
30{34{
3135
36 void GenericTactileData::set_software_version( std::string version )
37 {
38 //split the string to fill the different versions
39 std::vector<std::string> splitted_string;
40 boost::split(splitted_string, version, boost::is_any_of("\n"));
41
42 BOOST_ASSERT(splitted_string.size() >= 3);
43 software_version_current = convertToInt(splitted_string[0]);
44 software_version_server = convertToInt(splitted_string[1]);
45
46 if( splitted_string[2] == "No")
47 software_version_modified = false;
48 else
49 software_version_modified = true;
50 }
51
52 std::string GenericTactileData::get_software_version()
53 {
54 //concatenate versions in a string.
55 std::string full_version;
56
57 std::stringstream ss;
58 if( software_version_modified )
59 ss << "current: " << software_version_current << " / server: " << software_version_server << " / MODIFIED";
60 else
61 ss << "current: " << software_version_current << " / server: " << software_version_server << " / not modified";
62
63 full_version = ss.str();
64
65 return full_version;
66 }
67
32 PST3Data::PST3Data()68 PST3Data::PST3Data()
33 : GenericTactileData()69 : GenericTactileData()
34 {};70 {};
@@ -36,7 +72,10 @@
36 PST3Data::PST3Data(const PST3Data& pst3)72 PST3Data::PST3Data(const PST3Data& pst3)
37 : GenericTactileData(pst3.tactile_data_valid, pst3.sample_frequency,73 : GenericTactileData(pst3.tactile_data_valid, pst3.sample_frequency,
38 pst3.manufacturer, pst3.serial_number,74 pst3.manufacturer, pst3.serial_number,
39 pst3.software_version, pst3.pcb_version),75 pst3.software_version_current,
76 pst3.software_version_server,
77 pst3.software_version_modified,
78 pst3.pcb_version),
40 pressure(pst3.pressure), temperature(pst3.temperature),79 pressure(pst3.pressure), temperature(pst3.temperature),
41 debug_1(pst3.debug_1), debug_2(pst3.debug_2),80 debug_1(pst3.debug_1), debug_2(pst3.debug_2),
42 pressure_raw(pst3.pressure_raw), zero_tracking(pst3.zero_tracking), dac_value(pst3.dac_value)81 pressure_raw(pst3.pressure_raw), zero_tracking(pst3.zero_tracking), dac_value(pst3.dac_value)
@@ -45,7 +84,10 @@
45 PST3Data::PST3Data(const GenericTactileData& gtd)84 PST3Data::PST3Data(const GenericTactileData& gtd)
46 : GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,85 : GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
47 gtd.manufacturer, gtd.serial_number,86 gtd.manufacturer, gtd.serial_number,
48 gtd.software_version, gtd.pcb_version)87 gtd.software_version_current,
88 gtd.software_version_server,
89 gtd.software_version_modified,
90 gtd.pcb_version)
49 {};91 {};
5092
51 BiotacData::BiotacData()93 BiotacData::BiotacData()
@@ -55,7 +97,10 @@
55 BiotacData::BiotacData(const BiotacData& btac)97 BiotacData::BiotacData(const BiotacData& btac)
56 : GenericTactileData(btac.tactile_data_valid, btac.sample_frequency,98 : GenericTactileData(btac.tactile_data_valid, btac.sample_frequency,
57 btac.manufacturer, btac.serial_number,99 btac.manufacturer, btac.serial_number,
58 btac.software_version, btac.pcb_version),100 btac.software_version_current,
101 btac.software_version_server,
102 btac.software_version_modified,
103 btac.pcb_version),
59 pac0(btac.pac0), pac1(btac.pac1),104 pac0(btac.pac0), pac1(btac.pac1),
60 pdc(btac.pdc), tac(btac.tac),105 pdc(btac.pdc), tac(btac.tac),
61 tdc(btac.tdc)106 tdc(btac.tdc)
@@ -69,8 +114,25 @@
69 BiotacData::BiotacData(const GenericTactileData& gtd)114 BiotacData::BiotacData(const GenericTactileData& gtd)
70 : GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,115 : GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
71 gtd.manufacturer, gtd.serial_number,116 gtd.manufacturer, gtd.serial_number,
72 gtd.software_version, gtd.pcb_version)117 gtd.software_version_current,
118 gtd.software_version_server,
119 gtd.software_version_modified,
120 gtd.pcb_version)
73 {};121 {};
122
123 std::string BiotacData::get_software_version()
124 {
125 //concatenate versions in a string.
126 std::string full_version;
127
128 std::stringstream ss;
129 ss << "current: " << software_version_current;
130
131 full_version = ss.str();
132
133 return full_version;
134 }
135
74}136}
75137
76138

Subscribers

People subscribed via source and target branches

to all changes: