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
1=== modified file 'sr_robot_lib/include/sr_robot_lib/tactile_sensors.hpp'
2--- sr_robot_lib/include/sr_robot_lib/tactile_sensors.hpp 2011-10-26 18:08:05 +0000
3+++ sr_robot_lib/include/sr_robot_lib/tactile_sensors.hpp 2011-12-07 14:07:26 +0000
4@@ -27,6 +27,9 @@
5 #ifndef _TACTILE_SENSORS_HPP_
6 #define _TACTILE_SENSORS_HPP_
7
8+#include <iostream>
9+#include <sstream>
10+#include <string>
11 #include <string>
12 #include <vector>
13
14@@ -41,11 +44,15 @@
15
16 GenericTactileData(bool tactile_data_valid, int sample_frequency,
17 std::string manufacturer, std::string serial_number,
18- int software_version, int pcb_version)
19+ int software_version_current, int software_version_server,
20+ bool software_version_modified, int pcb_version)
21 : tactile_data_valid(tactile_data_valid), sample_frequency(sample_frequency),
22- manufacturer(manufacturer), serial_number(serial_number),
23- software_version(software_version), pcb_version(pcb_version)
24- {};
25+ manufacturer(manufacturer), serial_number(serial_number),
26+ software_version_current(software_version_current),
27+ software_version_server(software_version_server),
28+ software_version_modified(software_version_modified),
29+ pcb_version(pcb_version)
30+ {};
31
32 ~GenericTactileData() {};
33
34@@ -56,8 +63,36 @@
35 std::string manufacturer;
36 std::string serial_number;
37
38- int software_version;
39+ int software_version_current;
40+ int software_version_server;
41+ bool software_version_modified;
42+
43+ /**
44+ * Parses the version string received
45+ * from the tactiles and fill in the
46+ * variables.
47+ *
48+ * @version The raw version string.
49+ */
50+ void set_software_version( std::string version );
51+ /**
52+ * Formats the software version for the
53+ * diagnostics.
54+ *
55+ * @return the formatted string
56+ */
57+ virtual std::string get_software_version();
58+
59 int pcb_version;
60+
61+ inline double convertToInt(std::string const& s)
62+ {
63+ std::istringstream i(s);
64+ int x;
65+ if (!(i >> x))
66+ x = -1;
67+ return x;
68+ }
69 };
70
71 class PST3Data
72@@ -103,6 +138,14 @@
73 int tac; //int16u in word[2]
74 int tdc; //int16u in word[2]
75 boost::array<short int, 19ul> electrodes; //int16u in word[2]
76+
77+ /**
78+ * Formats the software version for the
79+ * diagnostics.
80+ *
81+ * @return the formatted string
82+ */
83+ virtual std::string get_software_version();
84 };
85 }
86
87
88=== modified file 'sr_robot_lib/src/biotac.cpp'
89--- sr_robot_lib/src/biotac.cpp 2011-12-05 18:12:11 +0000
90+++ sr_robot_lib/src/biotac.cpp 2011-12-07 14:07:26 +0000
91@@ -192,7 +192,7 @@
92 case TACTILE_SENSOR_TYPE_SOFTWARE_VERSION:
93 if( sr_math_utils::is_bit_mask_index_true(tactile_mask, id_sensor) )
94 {
95- tactiles_vector->at(id_sensor).software_version = static_cast<unsigned int>(static_cast<int16u>(status_data->tactile[id_sensor].word[0]) );
96+ tactiles_vector->at(id_sensor).set_software_version( status_data->tactile[id_sensor].string );
97 }
98 break;
99
100@@ -280,7 +280,7 @@
101 d.addf("Manufacturer", "%s", tactiles_vector->at(id_tact).manufacturer.c_str());
102 d.addf("Serial Number", "%s", tactiles_vector->at(id_tact).serial_number.c_str());
103
104- d.addf("Software Version", "%d", tactiles_vector->at(id_tact).software_version);
105+ d.addf("Software Version", "%s", tactiles_vector->at(id_tact).get_software_version().c_str());
106 d.addf("PCB Version", "%d", tactiles_vector->at(id_tact).pcb_version);
107
108 vec.push_back(d);
109
110=== modified file 'sr_robot_lib/src/generic_tactiles.cpp'
111--- sr_robot_lib/src/generic_tactiles.cpp 2011-12-05 18:12:11 +0000
112+++ sr_robot_lib/src/generic_tactiles.cpp 2011-12-07 14:07:26 +0000
113@@ -102,7 +102,7 @@
114 if( sr_math_utils::is_bit_mask_index_true(tactile_mask, id_sensor) )
115 {
116 if( tactiles_vector != NULL )
117- tactiles_vector->at(id_sensor).software_version = static_cast<unsigned int>(static_cast<int16u>(status_data->tactile[id_sensor].word[0]) );
118+ tactiles_vector->at(id_sensor).set_software_version( status_data->tactile[id_sensor].string );
119 }
120 break;
121
122
123=== modified file 'sr_robot_lib/src/shadow_PSTs.cpp'
124--- sr_robot_lib/src/shadow_PSTs.cpp 2011-12-05 18:12:11 +0000
125+++ sr_robot_lib/src/shadow_PSTs.cpp 2011-12-07 14:07:26 +0000
126@@ -120,7 +120,7 @@
127 case TACTILE_SENSOR_TYPE_SOFTWARE_VERSION:
128 if( sr_math_utils::is_bit_mask_index_true(tactile_mask, id_sensor) )
129 {
130- tactiles_vector->at(id_sensor).software_version = static_cast<unsigned int>(static_cast<int16u>(status_data->tactile[id_sensor].word[0]) );
131+ tactiles_vector->at(id_sensor).set_software_version( status_data->tactile[id_sensor].string );
132 }
133 break;
134
135@@ -187,7 +187,7 @@
136 d.addf("Manufacturer", "%s", tactiles_vector->at(id_tact).manufacturer.c_str());
137 d.addf("Serial Number", "%s", tactiles_vector->at(id_tact).serial_number.c_str());
138
139- d.addf("Software Version", "%d", tactiles_vector->at(id_tact).software_version);
140+ d.addf("Software Version", "%d", tactiles_vector->at(id_tact).get_software_version().c_str());
141 d.addf("PCB Version", "%d", tactiles_vector->at(id_tact).pcb_version);
142
143 d.addf("Pressure Raw", "%d", tactiles_vector->at(id_tact).pressure_raw);
144
145=== modified file 'sr_robot_lib/src/sr_robot_lib.cpp'
146--- sr_robot_lib/src/sr_robot_lib.cpp 2011-12-06 18:43:27 +0000
147+++ sr_robot_lib/src/sr_robot_lib.cpp 2011-12-07 14:07:26 +0000
148@@ -606,7 +606,7 @@
149 if( joint_tmp->motor->motor_id == 8 )
150 {
151 //ROS_ERROR_STREAM("Current " <<actuator->state_.last_measured_current_);
152- msg_debug.data = actuator->state_.last_measured_current_;
153+ msg_debug.data = static_cast<int16u>(status_data->motor_data_packet[index_motor_in_msg].misc);
154 debug_publishers[2].publish(msg_debug);
155 }
156 #endif
157@@ -619,7 +619,7 @@
158 if( joint_tmp->motor->motor_id == 8 )
159 {
160 //ROS_ERROR_STREAM("Voltage " <<actuator->state_.motor_voltage_);
161- msg_debug.data = actuator->state_.motor_voltage_;
162+ msg_debug.data = static_cast<int16u>(status_data->motor_data_packet[index_motor_in_msg].misc);
163 debug_publishers[3].publish(msg_debug);
164 }
165 #endif
166@@ -745,9 +745,20 @@
167 }
168
169 if (read_torque)
170+ {
171 actuator->state_.last_measured_effort_ =
172 static_cast<double>(static_cast<int16s>(status_data->motor_data_packet[index_motor_in_msg].torque));
173
174+#ifdef DEBUG_PUBLISHER
175+ if( joint_tmp->motor->motor_id == 8 )
176+ {
177+ //ROS_ERROR_STREAM("Torque " << static_cast<int16s>(status_data->motor_data_packet[index_motor_in_msg].torque));
178+ msg_debug.data = static_cast<int16s>(status_data->motor_data_packet[index_motor_in_msg].torque);
179+ debug_publishers[4].publish(msg_debug);
180+ }
181+#endif
182+ }
183+
184 //Check the message to see if everything has already been received
185 if (motor_current_state == operation_mode::device_update_state::INITIALIZATION)
186 {
187
188=== modified file 'sr_robot_lib/src/tactile_sensors.cpp'
189--- sr_robot_lib/src/tactile_sensors.cpp 2011-12-05 12:36:19 +0000
190+++ sr_robot_lib/src/tactile_sensors.cpp 2011-12-07 14:07:26 +0000
191@@ -25,10 +25,46 @@
192 */
193
194 #include "sr_robot_lib/tactile_sensors.hpp"
195+#include <boost/algorithm/string.hpp>
196+#include <boost/algorithm/string/find_iterator.hpp>
197+#include <sstream>
198
199+#include <ros/ros.h>
200 namespace tactiles
201 {
202
203+ void GenericTactileData::set_software_version( std::string version )
204+ {
205+ //split the string to fill the different versions
206+ std::vector<std::string> splitted_string;
207+ boost::split(splitted_string, version, boost::is_any_of("\n"));
208+
209+ BOOST_ASSERT(splitted_string.size() >= 3);
210+ software_version_current = convertToInt(splitted_string[0]);
211+ software_version_server = convertToInt(splitted_string[1]);
212+
213+ if( splitted_string[2] == "No")
214+ software_version_modified = false;
215+ else
216+ software_version_modified = true;
217+ }
218+
219+ std::string GenericTactileData::get_software_version()
220+ {
221+ //concatenate versions in a string.
222+ std::string full_version;
223+
224+ std::stringstream ss;
225+ if( software_version_modified )
226+ ss << "current: " << software_version_current << " / server: " << software_version_server << " / MODIFIED";
227+ else
228+ ss << "current: " << software_version_current << " / server: " << software_version_server << " / not modified";
229+
230+ full_version = ss.str();
231+
232+ return full_version;
233+ }
234+
235 PST3Data::PST3Data()
236 : GenericTactileData()
237 {};
238@@ -36,7 +72,10 @@
239 PST3Data::PST3Data(const PST3Data& pst3)
240 : GenericTactileData(pst3.tactile_data_valid, pst3.sample_frequency,
241 pst3.manufacturer, pst3.serial_number,
242- pst3.software_version, pst3.pcb_version),
243+ pst3.software_version_current,
244+ pst3.software_version_server,
245+ pst3.software_version_modified,
246+ pst3.pcb_version),
247 pressure(pst3.pressure), temperature(pst3.temperature),
248 debug_1(pst3.debug_1), debug_2(pst3.debug_2),
249 pressure_raw(pst3.pressure_raw), zero_tracking(pst3.zero_tracking), dac_value(pst3.dac_value)
250@@ -45,7 +84,10 @@
251 PST3Data::PST3Data(const GenericTactileData& gtd)
252 : GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
253 gtd.manufacturer, gtd.serial_number,
254- gtd.software_version, gtd.pcb_version)
255+ gtd.software_version_current,
256+ gtd.software_version_server,
257+ gtd.software_version_modified,
258+ gtd.pcb_version)
259 {};
260
261 BiotacData::BiotacData()
262@@ -55,7 +97,10 @@
263 BiotacData::BiotacData(const BiotacData& btac)
264 : GenericTactileData(btac.tactile_data_valid, btac.sample_frequency,
265 btac.manufacturer, btac.serial_number,
266- btac.software_version, btac.pcb_version),
267+ btac.software_version_current,
268+ btac.software_version_server,
269+ btac.software_version_modified,
270+ btac.pcb_version),
271 pac0(btac.pac0), pac1(btac.pac1),
272 pdc(btac.pdc), tac(btac.tac),
273 tdc(btac.tdc)
274@@ -69,8 +114,25 @@
275 BiotacData::BiotacData(const GenericTactileData& gtd)
276 : GenericTactileData(gtd.tactile_data_valid, gtd.sample_frequency,
277 gtd.manufacturer, gtd.serial_number,
278- gtd.software_version, gtd.pcb_version)
279+ gtd.software_version_current,
280+ gtd.software_version_server,
281+ gtd.software_version_modified,
282+ gtd.pcb_version)
283 {};
284+
285+ std::string BiotacData::get_software_version()
286+ {
287+ //concatenate versions in a string.
288+ std::string full_version;
289+
290+ std::stringstream ss;
291+ ss << "current: " << software_version_current;
292+
293+ full_version = ss.str();
294+
295+ return full_version;
296+ }
297+
298 }
299
300

Subscribers

People subscribed via source and target branches

to all changes: