Napoleonic Panda Machine


    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(() => {
    # Topic Model/Collection
    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) {
   = 1;
            return < 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{
        a: 1, b: 2, c: 3
    var myCollection = new rosbb.Collection();
    myCollection.bind(myTopic, {
        // options (see above)


    • 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



    npm i ros-backbone

    DownloadsWeekly Downloads






    Last publish


    • megawac