Napoleonic Panda Machine

    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

    Keywords

    Install

    npm i ros-backbone

    DownloadsWeekly Downloads

    0

    Version

    1.2.0

    License

    wtfpl

    Last publish

    Collaborators

    • megawac