Skip to content

Bubbaloop vs ROS1

ROS1 Noetic reached end-of-life on May 31, 2025. If you're evaluating what comes next, here's how Bubbaloop compares.


At a Glance

Bubbaloop ROS1 (Noetic)
Status Active development End-of-life (May 2025)
Architecture Single binary (~13 MB) roscore + catkin workspace
Transport Zenoh TCPROS (custom TCP sockets)
Discovery Decentralized (Zenoh scouting) Centralized (rosmaster — single point of failure)
Languages Rust, Python, TypeScript C++, Python
AI agents Built-in multi-agent runtime None
Security RBAC, bearer tokens, localhost binding None (any network peer can publish to any topic)
Jetson Orin Native ARM64 binary Not supported on JetPack 6 (Ubuntu 22.04)
Install 30 seconds APT on Ubuntu 20.04 only
Real-time No No

Why Move Off ROS1?

ROS1 Noetic is unmaintained — no security patches, no bug fixes, no updates. The specific issues:

  • Security: No encryption, no authentication. Any process on the network can publish to any topic or call any service.
  • rosmaster: Single point of failure. If it crashes, no new nodes can connect.
  • Ubuntu 20.04 lock-in: Noetic only runs on Ubuntu 20.04. Jetson Orin (JetPack 6) ships Ubuntu 22.04 — Noetic packages return 404.
  • Python 2 legacy: Code from Kinetic/Melodic required manual porting. The ecosystem still has unmigrated packages.
  • No lifecycle management: Nodes start and crash. No standard state machine for configured/inactive/active transitions.

If Your Project Is an Edge Device

Many ROS1 users aren't building multi-joint robots — they're running cameras, sensors, and ML inference on Jetson or Raspberry Pi. For these use cases, ROS1 was always overkill, and ROS2 may be too.

Bubbaloop is designed for exactly this:

# Install and run on Jetson
curl -sSL https://github.com/kornia/bubbaloop/releases/latest/download/install.sh | bash
bubbaloop up
bubbaloop node install rtsp-camera
bubbaloop agent chat "Start monitoring the entrance camera"

No roscore. No catkin workspace. No DDS configuration. One binary, one command.


Migration Comparison

From ROS1 to... Bubbaloop ROS2
Effort Rewrite nodes using Node SDK (~50 lines each) Port catkin to ament/colcon, rewrite launch files, new API
Transport Zenoh (simpler than DDS) DDS (complex, multicast issues)
Time to first node Minutes Hours to days
Ecosystem gap Small ecosystem, focused on edge AI Large ecosystem, Nav2/MoveIt2/Gazebo
AI integration Built-in Bolt-on

Feature Comparison

Messaging

Bubbaloop ROS1
Protocol Zenoh pub/sub TCPROS/UDPROS
Discovery Decentralized, automatic rosmaster (must be running first)
Serialization Protobuf Custom ROS serialization
QoS Best-effort + reliable None (no QoS controls)
Cross-machine Works with router peering Requires ROS_MASTER_URI on every machine
Shared memory Zenoh SHM Not supported

Node Development

Bubbaloop Node SDK (Rust):

use bubbaloop_node::{Node, NodeContext, run_node};

struct MySensor;

#[async_trait]
impl Node for MySensor {
    async fn init(ctx: &NodeContext) -> anyhow::Result<Self> { Ok(Self) }
    async fn run(self, ctx: NodeContext) -> anyhow::Result<()> {
        let pub_json = ctx.publisher_json("data").await?;
        // ... publish sensor data
        Ok(())
    }
}

#[tokio::main]
async fn main() { run_node::<MySensor>().await.unwrap(); }

ROS1 (Python):

import rospy
from std_msgs.msg import String

rospy.init_node('my_sensor')  # requires roscore running
pub = rospy.Publisher('data', String, queue_size=10)
rate = rospy.Rate(1)
while not rospy.is_shutdown():
    pub.publish("sensor data")
    rate.sleep()

The ROS1 version is simpler for trivial cases, but lacks: health heartbeats, schema queryable, config loading, shutdown handling, and self-description — all of which Bubbaloop's SDK provides automatically.


Summary

If you're on ROS1 because you're building a complex robot with navigation and manipulation, migrate to ROS2 — you need the ecosystem.

If you're on ROS1 because you're running cameras and sensors on edge devices, consider Bubbaloop — it's designed for exactly this use case, with AI agents and MCP built in, and none of the complexity you don't need.