ros-backbone

1.2.0 • Public • Published

Backbone bindings to a ROSLib Build Status

Parameter model

Simple fetch, update, delete bindings for Model -> Param

var rosbb = require("ros-backbone");
 
var ParamModel = rosbb.ParamModel.extend({
    ros: new ROS.Ros({
        url: "ws://localhost:9091"
    }),
    params: ["/foo", "/bar"]
});
 
var paramModel = new ParamModel();
 
paramModel.fetch().then(() => {
   app.doSomething();
});

# Topic Model/Collection

```js
var rosbb = require("ros-backbone");

var ROS = require("roslib");
var ros = ROS.Ros("ws://localhost:9090");

var myTopic = ros.Topic({
    name: "/some/topic"
});

var myModel = new rosbb.Model();
myModel.bind(myTopic, {
    // If not provided all fields will be kept
    bindings: {
        "topic-attribute": "mapped-model-attribute",
        "some-other-attr": "xyz",

        // Dots and bracket notation will be transformed
        // and the path will be found, however the other way
        // around doesn't currently work
        "pose.position.y" : "lat",
        "pose.position.x": "lng"
    },

    // Covert a stamped ROS header to a JS timestamp in MS (useful for time series)
    // Syntax: [<model attribute>, <topic attribute (default: "header")>]
    headerTimestamp: ["timestamp"],

    transform: function(message) {
        message.foo = 1;
        return message.bar < 5 ? message : false; // don't emit message
    },

    publishTransform: function(message) {
        // return falsey to omit, otherwise transform? & return the message to publish
    },

   frame_id: "my_frame", // frame to set when emitting messages

    // If you want to use a TFClient and provide a TFClient instance to bind
    observeFrame: "odom_frame"

});

// publish a ROS message
myModel.save({
    a: 1, b: 2, c: 3
});

var myCollection = new rosbb.Collection();
myCollection.bind(myTopic, {
    // options (see above)
});

Notes

  • Subscribe to as many ROS Topics as you please, but you should use the model as a sink and uni-directional in that case
  • This works best as a subscriber, publishing can be sketchy if you rebind/filter keys or subscribe to multiple nodes

Readme

Keywords

Package Sidebar

Install

npm i ros-backbone

Weekly Downloads

1

Version

1.2.0

License

wtfpl

Last publish

Collaborators

  • megawac