Skip to content

Commit 2da36d4

Browse files
committed
Removed .action file parsing code again.
- we can indeed simply use the .msg files generated by catkin
1 parent ef7c155 commit 2da36d4

File tree

7 files changed

+33
-109
lines changed

7 files changed

+33
-109
lines changed

example_turtle.js

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,12 @@ rosnodejs.initNode('/my_node', {
1010
'geometry_msgs/Twist'
1111
],
1212
services: ['std_srvs/SetBool', "turtlesim/TeleportRelative"]
13-
// actions: ['turtle_actionlib/Shape']
1413
}).then((rosNode) => {
1514

1615
// ---------------------------------------------------------
1716
// Service Call
1817

1918
const TeleportRelative = rosnodejs.require('turtlesim').srv.TeleportRelative;
20-
console.log(TeleportRelative);
2119
const teleport_request = new TeleportRelative.Request({
2220
linear: 0.1,
2321
angular: 0.0
@@ -98,17 +96,11 @@ rosnodejs.initNode('/my_node', {
9896
let shapeMsg = new shapeActionGoal({
9997
header: {
10098
seq: 0,
101-
stamp: {
102-
secs: secs,
103-
nsecs: nsecs
104-
},
99+
stamp: new Date(),
105100
frame_id: ''
106101
},
107102
goal_id: {
108-
stamp: {
109-
secs: secs,
110-
nsecs: nsecs
111-
},
103+
stamp: new Date(),
112104
id: "/my_node-1-"+secs+"."+nsecs+"000"
113105
},
114106
goal: {

index.js

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ let Rosnodejs = {
133133
rosNode = new RosNode(nodeName, rosMasterUri);
134134

135135
return new Promise((resolve, reject) => {
136-
this.use(options.messages, options.services, options.actions).then(() => {
136+
this.use(options.messages, options.services).then(() => {
137137

138138
const connectedToMasterCallback = () => {
139139
Logging.initializeOptions(this, options.logging);
@@ -168,12 +168,11 @@ let Rosnodejs = {
168168

169169
/** create message classes and services classes for all the given
170170
* types before calling callback */
171-
use(messages, services, actions) {
171+
use(messages, services) {
172172
const self = this;
173173
return new Promise((resolve, reject) => {
174174
self._useMessages(messages)
175175
.then(() => { return self._useServices(services); })
176-
.then(() => { return self._useActions(actions); })
177176
.then(() => { resolve(); });
178177
});
179178
},
@@ -212,23 +211,6 @@ let Rosnodejs = {
212211
});
213212
},
214213

215-
/** create action classes for all the given types */
216-
_useActions(types) {
217-
if (!types || types.length == 0) {
218-
return Promise.resolve();
219-
}
220-
var count = types.length;
221-
return new Promise((resolve, reject) => {
222-
types.forEach(function(type) {
223-
messages.getAction(type, function() {
224-
if (--count == 0) {
225-
resolve();
226-
}
227-
});
228-
});
229-
});
230-
},
231-
232214
/**
233215
* @return {NodeHandle} for initialized node
234216
*/

lib/Publisher.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,16 +177,13 @@ class Publisher extends EventEmitter {
177177
// serialize pushes buffers onto buffInfo.buffer in order
178178
// concat them, and preprend the byte length to the message
179179
// before sending
180-
// console.log("_publish", this._messageHandler, msg);
181180
bufferInfo = this._messageHandler.serialize(msg, bufferInfo);
182181
// bufferInfo = msg.serialize();
183-
// console.log("_publish", bufferInfo.buffer[0].toString('hex'));
184182

185183
// prepend byte length to message
186184
let serialized = Serialize(
187185
Buffer.concat(bufferInfo.buffer, bufferInfo.length));
188186
Object.keys(this._subClients).forEach((client) => {
189-
console.log("_publish to client", client);
190187
this._subClients[client].write(serialized);
191188
});
192189

@@ -256,7 +253,6 @@ class Publisher extends EventEmitter {
256253

257254
// if handshake good, add to list, we'll start publishing to it
258255
this._subClients[subscriber.name] = subscriber;
259-
// console.log("subscriber", subscriber);
260256

261257
this.emit('connection', header, subscriber.name);
262258
}

lib/RosNode.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ class RosNode extends EventEmitter {
8181
}
8282

8383
advertise(options) {
84-
console.log("advertise", options);
8584
let topic = options.topic;
8685
let pub = this._publishers[topic];
8786
if (!pub) {
@@ -293,7 +292,6 @@ class RosNode extends EventEmitter {
293292
+ connection.remotePort;
294293
connection.name = conName;
295294
this._log.debug('Node %s got connection from %s', this.getNodeName(), conName);
296-
console.log('Node %s got connection from %s', this.getNodeName(), conName);
297295

298296
// data from connections will be TCPROS encoded, so use a
299297
// DeserializeStream to handle any chunking
@@ -354,7 +352,6 @@ class RosNode extends EventEmitter {
354352

355353
_handleTopicRequest(err, params, callback) {
356354
this._log.debug('Got topic request ' + JSON.stringify(params));
357-
console.log('Got topic request ' + JSON.stringify(params));
358355
if (!err) {
359356
let topic = params[1];
360357
let pub = this._publishers[topic];

utils/fields.js

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,26 @@ fields.parsePrimitive = function(fieldType, fieldValue) {
7676
else if (fieldType === 'float64') {
7777
parsedValue = parseFloat(fieldValue);
7878
}
79-
// else if (fieldType === 'time') {
80-
// parsedValue.secs = parseInt(fieldValue.secs);
81-
// parsedValue.nsecs = parseInt(fieldValue.nsecs);
82-
// }
79+
else if (fieldType === 'time') {
80+
var now;
81+
if (fieldValue.secs && fieldValue.nsecs) {
82+
parsedValue.secs = fieldValue.secs;
83+
parsedValue.nsecs = fieldValue.nsecs;
84+
} else {
85+
if (fieldValue instanceof Date) {
86+
now = fieldValue.getTime();
87+
} else if (typeof fieldValue == "number") {
88+
now = fieldValue;
89+
} else {
90+
now = Date.now();
91+
}
92+
var secs = parseInt(now/1000);
93+
var nsecs = (now % 1000) * 1000;
94+
95+
parsedValue.secs = secs;
96+
parsedValue.nsecs = nsecs;
97+
}
98+
}
8399

84100
return parsedValue;
85101
};
@@ -124,14 +140,11 @@ fields.serializePrimitive =
124140
bufferOffset += 4;
125141
buffer.write(fieldValue, bufferOffset, 'ascii');
126142
}
127-
// else if (fieldType === 'time') {
128-
// console.log("serializePrimitive, time", fieldValue);
129-
// buffer.writeUInt32LE(fieldValue.secs, bufferOffset);
130-
// buffer.writeUInt32LE(fieldValue.nsecs, bufferOffset+4);
131-
// }
143+
else if (fieldType === 'time') {
144+
buffer.writeUInt32LE(fieldValue.secs, bufferOffset);
145+
buffer.writeUInt32LE(fieldValue.nsecs, bufferOffset+4);
146+
}
132147

133-
// console.log("serialize", fieldType, fieldValue,
134-
// buffer.toString('ascii'), bufferOffset);
135148
}
136149

137150
fields.deserializePrimitive = function(fieldType, buffer, bufferOffset) {
@@ -265,7 +278,6 @@ fields.getMessageSize = function(message) {
265278
, messageSize = 0
266279
, innerfields = message.fields
267280
;
268-
// console.log("getMessageSize", message);
269281

270282
innerfields.forEach(function(field) {
271283
var fieldValue = message[field.name];

utils/messages.js

Lines changed: 5 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,6 @@ messages.getService = function(messageType, callback) {
3232
getMessageFromPackage(messageType, "srv", callback);
3333
}
3434

35-
/** ensure the handlers for this action type (goal, result, and
36-
* feedback) are in the registry, create them if they don't exist */
37-
messages.getAction = function(messageType, callback) {
38-
getMessageFromPackage(messageType, "action", callback);
39-
}
40-
4135
// ---------------------------------------------------------
4236
// Registry
4337

@@ -61,11 +55,7 @@ var registry = {};
6155
'SetBool': classdef,
6256
...
6357
}
64-
},
65-
// action: { Goal: ..,
66-
// Result: ..,
67-
// Feedback: ..
68-
// }
58+
}
6959
},
7060
'packagename2': {..}
7161
};
@@ -75,8 +65,7 @@ var registry = {};
7565
@param messageType is the ROS message or service type, e.g.
7666
'std_msgs/String'
7767
@param type is from the set
78-
[["msg"], ["srv","Request"], ["srv","Response"], ["action",
79-
"Goal"], ["actions", "Result"], ["action", "Feedback"]]
68+
[["msg"], ["srv","Request"], ["srv","Response"]
8069
*/
8170
function getMessageFromRegistry(messageType, type) {
8271
var packageName = getPackageNameFromMessageType(messageType);
@@ -105,26 +94,21 @@ function getMessageFromRegistry(messageType, type) {
10594
@param messageType is the ROS message or service type, e.g.
10695
'std_msgs/String'
10796
@param message is the message class definition
108-
@param type is from the set "msg", "srv", "action"
109-
@param (optional) subtype \in { "Request", "Response", "Goal", "Result", "Feedback" }
97+
@param type is from the set "msg", "srv"
98+
@param (optional) subtype \in { "Request", "Response" }
11099
*/
111100
function setMessageInRegistry(messageType, message, type, subtype) {
112101

113102
var packageName = getPackageNameFromMessageType(messageType);
114103
var messageName = getMessageNameFromMessageType(messageType);
115104

116105
if (!registry[packageName]) {
117-
registry[packageName] = { msg: {}, srv: {}, action: {}};
106+
registry[packageName] = { msg: {}, srv: {}};
118107
}
119108

120109
if (type == "msg") {
121110
// message
122111
registry[packageName][type][messageName] = message;
123-
} else if (type == "action") {
124-
// action
125-
// concating subtype "Goal", "Result", or "Feedback"
126-
registry[packageName]["msg"][messageName + subtype] = message;
127-
128112
} else {
129113
// service
130114
if (!registry[packageName][type][messageName]) {
@@ -176,14 +160,6 @@ function getMessageFromFile(messageType, filePath, type, callback) {
176160
setMessageInRegistry(messageType, request, type, "Request");
177161
setMessageInRegistry(messageType, response, type, "Response");
178162
callback(null, message);
179-
} else if (type == "action") {
180-
goal = buildMessageClass(details.goal);
181-
result = buildMessageClass(details.result);
182-
feedback = buildMessageClass(details.feedback);
183-
setMessageInRegistry(messageType, goal, type, "Goal");
184-
setMessageInRegistry(messageType, result, type, "Result");
185-
setMessageInRegistry(messageType, feedback, type, "Feedback");
186-
callback(null, message);
187163
} else {
188164
console.log("unknown service", type);
189165
}
@@ -223,34 +199,6 @@ function parseMessageFile(fileName, details, type, callback) {
223199
rtv.response.fields = aggregate[1].fields;
224200
rtv.request.md5 = rtv.response.md5 = calculateMD5(rtv, "srv");
225201
callback(null, rtv);
226-
} else if (type == "action") {
227-
// TODO: need to create the action-prefix message types,
228-
// too, where we wrap the message like this:
229-
// Header header
230-
// actionlib_msgs/GoalID goal_id
231-
// ShapeGoal goal
232-
//
233-
// see /opt/ros/indigo/share/turtle_actionlib/msg/ShapeGoal.msg
234-
235-
// actions treat each message type as independent, each
236-
// with their own md5sum
237-
var rtv = {
238-
// we need to clone what's already there in details
239-
// into the sub-objects
240-
goal: JSON.parse(JSON.stringify(details)),
241-
result: JSON.parse(JSON.stringify(details)),
242-
feedback: JSON.parse(JSON.stringify(details))
243-
};
244-
rtv.goal.constants = aggregate[0].constants;
245-
rtv.goal.fields = aggregate[0].fields;
246-
rtv.goal.md5 = calculateMD5(rtv.goal, "msg");
247-
rtv.result.constants = aggregate[1].constants;
248-
rtv.result.fields = aggregate[1].fields;
249-
rtv.result.md5 = calculateMD5(rtv.result, "msg");
250-
rtv.feedback.constants = aggregate[2].constants;
251-
rtv.feedback.fields = aggregate[2].fields;
252-
rtv.feedback.md5 = calculateMD5(rtv.feedback, "msg");
253-
callback(null, rtv);
254202
} else {
255203
console.log("parseMessageFile:", "Unknown type: ", type);
256204
callback("unknown type", null);
@@ -305,7 +253,6 @@ function calculateMD5(details, type) {
305253
return null;
306254
}
307255

308-
// console.log("calculateMD5:", details.messageType, " text:", text);
309256
return md5(text);
310257
}
311258

@@ -582,7 +529,6 @@ function serializeMessage(message, bufferInfo) {
582529
bufferInfo.buffer = [buffer];
583530
bufferInfo.length = bufferSize;
584531

585-
// console.log("serializeMessage", buffer.toString('hex'));
586532
return bufferInfo;
587533
}
588534

utils/xmlrpc_utils.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
module.exports = {
55
call(client, method, data, resolve, reject, log, timeout) {
66
log.debug('Calling method ' + method +': ' + data);
7-
console.log('Calling method ' + method +': ' + data);
87

98
if (timeout === undefined) {
109
timeout = 0;

0 commit comments

Comments
 (0)