Skip to main content

ROS

ROS utils for use in Transitive robot capabilities. Supports both ROS 1 (using rosnodejs) and ROS 2 (using rclnodejs). The respective classes ROS1 and ROS2 have a unified interface, so that switching between ROS releases is trivial as can be seen in the example below.

Install

npm i @transitive-sdk/utils-ros

Example

This example requires a running roscore for ROS 1.

const { ROSs, getForVersion } = require('@transitive-sdk/utils-ros');

const demo = async (version) => {
const ros = getForVersion(version);
await ros.init();

const topic = '/utils_ros/test1';
const type = version == 1 ? 'std_msgs/String' : 'std_msgs/msg/String';

const interval = setInterval(() => {
ros.publish(topic, type, {data: String(Date.now())});
});

const sub = ros.subscribe(topic, type, (msg) => {
console.log('received', msg.data);
});
};

demo(1); // run demo using ROS1
demo(2); // run demo using ROS2

ROS

Small convenient singleton class for interfacing with ROS, including some auxiliary functions that come in handy in capabilities. Based on rosnodejs.

createHeader

create a std_msgs/Header for the given frame_id and date

Parameters
  • frame_id (optional, default '')
  • date (optional, default new Date())

getSubscribedTopics

Get topics that have subscribers

Parameters
  • type (optional, default undefined)

getTopics

Get all topic of a given type or all topics ifno type is specified

Parameters
  • type (optional, default undefined)

init

Initialize ROS node. This needs to be called first.

Parameters
  • suffix (optional, default '')

publish

Publish the given message (json) on the names topic of type. Will advertise the topic if not yet advertised.

Parameters
  • topic
  • type
  • message
  • latching (optional, default true)

subscribe

Subscribe to the named topic of the named type. Each time a new message is received the provided callback is called. Here options is an optional object: { "throttleMs": throttle-in-milliseconds }.

Parameters
  • topic
  • type
  • onMessage
  • options (optional, default {})

unsubscribe

Unsubscribe from topic

Parameters
  • topic

ROS2

Small convenient singleton class for interfacing with ROS2, including some auxiliary functions that come in handy in capabilities. Based on rclnodejs.

createHeader

create a std_msgs/Header for the given frame_id and date

Parameters
  • frame_id (optional, default '')
  • date (optional, default new Date())

getSubscribedTopics

Get topics that have subscribers

Parameters
  • type (optional, default undefined)

getTopics

Get all topic of a given type or all topics ifno type is specified

Parameters
  • type (optional, default undefined)

init

Initialize ROS node. This needs to be called first.

Parameters
  • suffix (optional, default '')

publish

Publish the given message (json) on the names topic of type. Will advertise the topic if not yet advertised.

Parameters
  • topic
  • type
  • message
  • latching (optional, default true)

subscribe

Subscribe to the named topic of the named type. Each time a new message is received the provided callback is called. For available options see https://robotwebtools.github.io/rclnodejs/docs/0.22.3/Node.html#createSubscription. The default options.qos.reliability is best-effort.

Parameters
  • topic
  • type
  • onMessage
  • options (optional, default {})

unsubscribe

Unsubscribe from topic

Parameters
  • topic

getForVersion

Get the correct instance for the given ROS version (1 or 2).

Parameters

  • version