Basilisk-ROS 2 Bridge #1344
E-Krantz
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Basilisk-ROS 2 Bridge
Hello Basilisk community! We want to share something we've been working on: a lightweight, open-source communication bridge between Basilisk and ROS 2.
Repo: https://github.com/DISCOWER/bsk-ros2-bridge
Paper: IEEE Xplore (presented at ISpaRo 2025 - best paper finalist) | arXiv
What it does
The bridge enables bidirectional data exchange between Basilisk simulations and ROS 2 nodes. Any Basilisk message can be connected; the user chooses which messages to publish or subscribe to in their Basilisk scenario script, and the bridge handles the rest on the ROS 2 side. It supports both real-time and accelerated time simulations, as well as single- and multi-spacecraft scenarios with namespace-aware topics.
How it works
On the Basilisk side, you add a standard Basilisk Python module (
RosBridgeHandler) to your scenario script - no modifications to Basilisk's core are needed! The module connects to a ROS 2 bridge node over ZMQ, using the same protocol Basilisk already uses for Vizard, and automatically registers the configured messages as ROS 2 topics.A minimal setup looks like:
which would result in the following ROS 2 publisher and subscriber:
/bskSat/bsk/out/sc_states/bskSat/bsk/in/cmd_forceWhy it's useful
It makes Basilisk's high-fidelity orbital dynamics accessible to the broader robotics and control community without requiring users to rewrite their ROS 2 packages as Basilisk modules. Standard ROS 2 tools (rosbag, RViz, PlotJuggler) work directly with the simulation data and allow direct interactivity. Going from simulation to hardware is straightforward; we've run the same ROS 2 control nodes on both Basilisk and our ATMOS free-flyer testbed without modification.
We also provide auto-generated ROS 2 message definitions for Basilisk's payload types (automatically converted), and a demo MPC controller as a working example.
Feedback welcome
We'd appreciate any feedback, bug reports, or feature requests. If you give it a try, let us know how it goes!
Thanks to the Basilisk team for building such a solid and extensible framework.
Beta Was this translation helpful? Give feedback.
All reactions