Nihilist Pocket Monsters

    rosnodejs
    TypeScript icon, indicating that this package has built-in type declarations

    3.1.0 • Public • Published

    rosnodejs Build Status

    Install

    npm install rosnodejs

    Start a node

    const rosnodejs = require('rosnodejs');
    rosnodejs.initNode('/my_node')
    .then(() => {
      // do stuff
    });

    Publish/Subscribe

    const nh = rosnodejs.nh;
    const sub = nh.subscribe('/chatter', 'std_msgs/String', (msg) => {
      console.log('Got msg on chatter: %j', msg);
    });
    
    const pub = nh.advertise('/chatter', 'std_msgs/String');
    pub.publish({ data: "hi" });

    Udp transport (Experimental)

    const nh = rosnodejs.nh;
    const sub = nh.subscribe('/chatter', 'std_msgs/String', (msg) => {
      console.log('Got msg on chatter: %j', msg);
    }, {
      transports: ["TCPROS", "UDPROS"],  // specify transports, default ["TCPROS"]
      dgramSize: 1500   // optional: datagram packet size, default: 1500 bytes
    });
    
    const pub = nh.advertise('/chatter', 'std_msgs/String');
    pub.publish({ data: "hi" });

    Services

    const service = nh.advertiseService('/add_two_ints', 'beginner_tutorials/AddTwoInts', (req, res) => {
      res.sum = req.a + req.b;
      return true;
    });
    
    const client = nh.serviceClient('/add_two_ints', 'beginner_tutorials/AddTwoInts');
    client.call({a: 1, b: 2});

    Params

    nh.setParam('val', 2);
    nh.getParam('val')
    .then((val) => {
      // do stuff
    });

    Generating Messages

    Messages can be generated in a number of ways depending on the versions of ROS and Node.js you're using.

    • catkin - works in ROS Kinetic and later for Node.js v6+.
    $ catkin_make
    OR
    $ catkin build
    • loadAllPackages() - One-time "build" call available through rosnodejs for versions of ROS before Kinetic and Node.js v6+. Should be called separately and in advance of processes attempting to use messages.
    const rosnodejs = require('rosnodejs');
    rosnodejs.loadAllPackages();
    • On the fly - all versions of ROS and Node.js 4.5+. When generating on the fly, messages can not be required until the node has initialized.
    const rosnodejs = require('rosnodejs');
    rosnodejs.initNode('my_node', { onTheFly: true }).then(() => {
      const stdMsgs = rosnodejs.require('std_msgs');
      ...
    }
    Pre-Kinetic Kinetic & Later
    Node.js >= v6 loadAllPackages(), on the fly catkin, loadAllPackages(), on the fly
    Node.js < v6 on the fly on the fly

    Using Messages

    const sensorMsgs = rosnodejs.require('sensor_msgs');
    
    const image = new sensorMsgs.msg.Image();
    const temperature = new sensorMsgs.msg.Temperature({ temperature: 32 });
    
    const SetCameraInfo = sensorMsgs.srv.SetCameraInfo;
    const setRequest = new SetCameraInfo.Request();
    
    // messages can be used when advertising/subscribing
    const nh = rosnodejs.nh;
    const StringMsg = rosnodejs.require('std_msgs').msg.String;
    const sub = nh.subscribe('/chatter', StringMsg, (msg) => { ... });
    const pub = nh.advertise('/chatter', StringMsg);
    
    const AddTwoInts = rosnodejs.require('beginner_tutorials').srv.AddTwoInts;
    const service = nh.advertiseService('/add_two_ints', AddTwoInts, (req, res) => { ... });
    const client = nh.serviceClient('/add_two_ints', AddTwoInts);

    Actions (Experimental)

    const nh = rosnodejs.nh;
    const as = new rosnodejs.ActionServer({
      nh,
      type: 'turtle_actionlib/Shape',
      actionServer: '/turtle_shape'
    });
    
    as.on('goal', function (goal) {
      goal.setAccepted();
    });
    
    as.start();
    
    const ac = new rosnodejs.ActionClient({
      nh,
      type: 'turtle_actionlib/Shape',
      actionServer:'/turtle_shape'
    });
    
    ac.sendGoal({edges: 3, radius: 1});

    Run the turtlesim example

    Start:

    roscore
    rosrun turtlesim turtlesim_node
    rosrun turtle_actionlib shape_server

    Then run

    node src/examples/turtle.js

    or, if you are running an older version of node:

    npm run compile
    node dist/examples/turtle.js

    Catkin-Like

    Checkout rosnodejs_examples for a more catkin-inspired take on using rosnodejs.

    Inspired By

    rosnodejs was inspired by other work that you can learn more about here

    Keywords

    Install

    npm i rosnodejs

    DownloadsWeekly Downloads

    1,637

    Version

    3.1.0

    License

    Apache-2.0

    Unpacked Size

    884 kB

    Total Files

    175

    Last publish

    Collaborators

    • baalexander
    • chfritz
    • chris-smith