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, defaultnew Date()
)
getSubscribedTopics
Get topics that have subscribers
Parameters
type
(optional, defaultundefined
)
getTopics
Get all topic of a given type or all topics ifno type is specified
Parameters
type
(optional, defaultundefined
)
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, defaulttrue
)
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, defaultnew Date()
)
getSubscribedTopics
Get topics that have subscribers
Parameters
type
(optional, defaultundefined
)
getTopics
Get all topic of a given type or all topics ifno type is specified
Parameters
type
(optional, defaultundefined
)
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, defaulttrue
)
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