Skip to content

Commit 9a63e11

Browse files
authored
Integrates ros_msg_utils & adds basic Time (#48)
* Move source code into src/ * Move ros_msg_utils into rosnodejs * Move to bn.js for 64bit integers * add basic Time interface (for sim time) * Fix message definition for ros bags * Small fix to pub, sub errors * Add ability to namespace through nodehandles * Added a brief description to the readme on how to run the turtlesim example.
1 parent 1bf0b73 commit 9a63e11

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+4163
-923
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,6 @@ node_modules
3131

3232
# Optional REPL history
3333
.node_repl_history
34+
35+
# ignore the build repo
36+
dist/

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,24 @@
11
# rosnodejs [![Build Status](https://travis-ci.org/RethinkRobotics-opensource/rosnodejs.svg)](https://travis-ci.org/RethinkRobotics-opensource/rosnodejs)
2+
3+
4+
## Run the turtlesim example
5+
6+
Start:
7+
8+
```
9+
roscore
10+
rosrun turtlesim turtlesim_node
11+
rosrun turtle_actionlib shape_server
12+
```
13+
14+
Then run
15+
```
16+
node src/examples/turtle.js
17+
```
18+
19+
or, if you are running an older version of node:
20+
21+
```
22+
npm run compile
23+
node dist/examples/turtle.js
24+
```

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
],
99
"scripts": {
1010
"test": "mocha test/directory.js",
11-
"gennodejsTest": "mocha test/gennodejsTest.js",
11+
"gennodejsTest": "mocha test/gennodejsTest.js test/onTheFlyMessages.js",
1212
"stressTest": "mocha test/stress.js",
1313
"flatten": "node tools/flatten.js",
14-
"generate": "node tools/generateMessages.js",
15-
"compile": "babel --presets es2015 index.js -d dist/ && for dir in utils utils/messageGeneration utils/log lib tools test examples; do babel --presets es2015 $dir -d dist/$dir; done",
14+
"generate": "node dist/tools/generateMessages.js",
15+
"compile": "babel --presets es2015 src/ -d dist/",
1616
"prepublish": "npm run compile"
1717
},
1818
"author": "chris smith",
@@ -30,10 +30,10 @@
3030
"dependencies": {
3131
"argparse": "1.0.7",
3232
"async": "2.0.1",
33+
"bn.js": "^4.11.6",
3334
"bunyan": "1.8.1",
3435
"md5": "2.1.0",
3536
"moment": "2.12.0",
36-
"ros_msg_utils": "1.0.2",
3737
"walker": "1.0.7",
3838
"xmlrpc": "chfritz/node-xmlrpc"
3939
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ rosnodejs.initNode('/test_node')
5858
let iter = 0;
5959
const msg = new std_msgs.String();
6060
setInterval(() => {
61-
msg.data = msgStart + iter
61+
msg.data = msgStart + iter;
6262
pub.publish(msg);
6363
++iter;
6464
if (iter > 200) {
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
'use strict';
88

9-
let rosnodejs = require('./index.js');
9+
let rosnodejs = require('../index.js');
1010
rosnodejs.initNode('/my_node', {onTheFly: true}).then((rosNode) => {
1111

1212
// get list of existing publishers, subscribers, and services
@@ -75,10 +75,10 @@ rosnodejs.initNode('/my_node', {onTheFly: true}).then((rosNode) => {
7575
// wait two seconds for previous example to complete
7676
setTimeout(function() {
7777
let shapeActionGoal = rosnodejs.require('turtle_actionlib').msg.ShapeActionGoal;
78-
let ac = nh.actionClient({
79-
type: "turtle_actionlib/ShapeAction",
80-
actionServer: "/turtle_shape"
81-
});
78+
let ac = rosnodejs.nh.actionClient(
79+
"/turtle_shape",
80+
"turtle_actionlib/ShapeAction"
81+
);
8282
ac.sendGoal(new shapeActionGoal({
8383
goal: {
8484
edges: 3,

index.js renamed to src/index.js

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,11 @@ const RosNode = require('./lib/RosNode.js');
3030
const NodeHandle = require('./lib/NodeHandle.js');
3131
const Logging = require('./lib/Logging.js');
3232
const ActionClient = require('./lib/ActionClient.js');
33+
const Time = require('./lib/Time.js');
34+
const packages = require('./utils/messageGeneration/packages.js');
3335

3436
const MsgLoader = require('./utils/messageGeneration/MessageLoader.js');
3537

36-
// these will be modules, they depend on logger which isn't initialized yet
37-
// though so they'll be required later (in initNode)
38-
// let RosNode = null;
39-
// let NodeHandle = null;
40-
4138
// will be initialized through call to initNode
4239
let log = Logging.getLogger();
4340
let rosNode = null;
@@ -142,6 +139,7 @@ let Rosnodejs = {
142139
return this._loadOnTheFlyMessages(options)
143140
.then(_checkMasterHelper)
144141
.then(Logging.initializeRosOptions.bind(Logging, this, options.logging))
142+
.then(Time._initializeRosTime.bind(Time, this))
145143
.then(() => { return this.getNodeHandle(); })
146144
.catch((err) => {
147145
log.error('Error: ' + err);
@@ -152,11 +150,13 @@ let Rosnodejs = {
152150
rosNode = null;
153151
},
154152

153+
shutdown() {
154+
return rosNode.shutdown();
155+
},
156+
155157
_loadOnTheFlyMessages({onTheFly}) {
156158
if (onTheFly) {
157-
return new Promise((resolve, reject) => {
158-
messages.getAll(resolve);
159-
});
159+
return messages.getAll();
160160
}
161161
// else
162162
return Promise.resolve();
@@ -187,10 +187,26 @@ let Rosnodejs = {
187187
})
188188
},
189189

190+
findPackage(packageName) {
191+
return new Promise((resolve, reject) => {
192+
packages.findPackage(packageName, (err, dir) => {
193+
if (err) {
194+
reject(err);
195+
}
196+
// else
197+
resolve(dir);
198+
});
199+
});
200+
},
201+
190202
require(msgPackage) {
191203
return msgUtils.requireMsgPackage(msgPackage);
192204
},
193205

206+
getAvailableMessagePackages() {
207+
return msgUtils.getAvailableMessagePackages();
208+
},
209+
194210
/** check that a message definition is loaded for a ros message
195211
type, e.g., geometry_msgs/Twist */
196212
checkMessage(type) {
@@ -216,8 +232,8 @@ let Rosnodejs = {
216232
/**
217233
* @return {NodeHandle} for initialized node
218234
*/
219-
getNodeHandle() {
220-
return new NodeHandle(rosNode);
235+
getNodeHandle(namespace) {
236+
return new NodeHandle(rosNode, namespace);
221237
},
222238

223239
get nodeHandle() {
@@ -239,6 +255,9 @@ let Rosnodejs = {
239255
}
240256
},
241257

258+
get Time() {
259+
return Time;
260+
},
242261

243262
//------------------------------------------------------------------
244263
// ActionLib
File renamed without changes.

0 commit comments

Comments
 (0)