4.0.0 • Published 1 year ago
@foxglove/ros2 v4.0.0
@foxglove/ros2
Standalone TypeScript implementation of the ROS 2 protocol built on @foxglove/rtps
Usage
A simple listener that is compatible with the ROS 2 "talker" example application.
import { parse as parseMsgDef } from "@foxglove/rosmsg";
import { toString as timeString } from "@foxglove/rostime";
import { RosNode } from "@foxglove/ros2";
import { getNetworkInterfaces, UdpSocketNode } from "@foxglove/ros2/nodejs";
async function main() {
const ros = new RosNode({
name: "listener",
udpSocketCreate: UdpSocketNode.Create,
getNetworkInterfaces,
// log: console, // Enable this for verbose console debugging
});
await ros.start();
// Create a message definition for the std_msgs/msg/String type
const msgDefinition = parseMsgDef("string data", { ros2: true });
// Subscribe to the /chatter topic
const subscription = ros.subscribe({
topic: "/chatter",
dataType: "std_msgs/msg/String",
msgDefinition,
});
subscription.on("message", (timestamp, msg, _data, _publisher) => {
const strMsg = msg as { data: string };
console.log(`[INFO] [${timeString(timestamp)}] [listener]: I heard: [${strMsg.data}]`);
});
// Listen for Ctrl+C to stop
process.on("SIGINT", () => void shutdown(ros));
// Wait for Ctrl+C
process.stdin.resume();
}
async function shutdown(ros: RosNode) {
await ros.shutdown();
process.exit();
}
void main();
Notes
Receiving large (>256KB) messages not be possible with the default Linux networking receive buffer size of 256KB, depending on CPU speed / contention / network speed / many factors. Linux users should set the following sysctls:
sudo sysctl -w net.core.rmem_max=26214400
sudo sysctl -w net.core.rmem_default=26214400
sudo sysctl -w net.ipv4.udp_mem=26214400
Or permanently in /etc/sysctl.conf
:
net.core.rmem_max=26214400
net.core.rmem_default=26214400
net.ipv4.udp_mem=26214400
Test
yarn test
License
@foxglove/ros2 is licensed under MIT License.
Releasing
- Run
yarn version --[major|minor|patch]
to bump version - Run
git push && git push --tags
to push new tag - GitHub Actions will take care of the rest
4.0.0
1 year ago
3.4.0
2 years ago
3.3.1
2 years ago
3.3.0
2 years ago
3.2.1
2 years ago
3.2.0
2 years ago
1.1.0
2 years ago
3.1.1
2 years ago
3.1.0
2 years ago
3.0.1
2 years ago
3.0.0
2 years ago
2.0.0
2 years ago
1.0.8
2 years ago
1.0.7
2 years ago
1.0.6
2 years ago
1.0.5
3 years ago
1.0.4
3 years ago
1.0.2
3 years ago
1.0.1
3 years ago
1.0.0
3 years ago
0.2.0
3 years ago
0.1.4
3 years ago
0.1.3
3 years ago
0.1.2
3 years ago