ROS 2 Guides

Practical, end-to-end guides for connecting ROS 2 robots to RosFit. Each guide walks through a real-world scenario from hardware setup to production deployment.

Build a warehouse AMR fleet

Connect a fleet of autonomous mobile robots to RosFit for centralized monitoring, task dispatch, and telemetry analysis.

What you'll build:

  • Register 5+ TurtleBot 3 (or custom AMR) devices with RosFit
  • Configure bridge YAML to stream /odom, /scan, /battery_state, and /map
  • Set up fleet groups (warehouse-east/floor-1, warehouse-east/floor-2)
  • Use the dashboard fleet map to visualize live robot positions
  • Send navigate_to commands from the command console
  • Configure battery alerts to trigger return-to-charger commands

Prerequisites: ROS 2 Jazzy or Humble, Nav2 stack, TurtleBot 3 or Gazebo simulation.

Key topics covered: device registration, topic bridging, fleet grouping, navigation commands, threshold alerts.

bridge:
  publish:
    - ros_topic: /odom
      mqtt_suffix: telemetry/odom
      msg_type: nav_msgs/Odometry
      qos: 1
      throttle_hz: 10
    - ros_topic: /battery_state
      mqtt_suffix: telemetry/battery
      msg_type: sensor_msgs/BatteryState
      qos: 1
      throttle_hz: 0.5
    - ros_topic: /scan
      mqtt_suffix: telemetry/scan
      msg_type: sensor_msgs/LaserScan
      qos: 0
      throttle_hz: 5
  subscribe:
    - mqtt_suffix: cmd/navigate
      ros_topic: /navigate_to_pose
      msg_type: geometry_msgs/PoseStamped
      qos: 1

Remote-control a robot arm

Teleoperate a robotic arm over the internet using RosFit commands and the dashboard joystick widget.

What you'll build:

  • Connect a UR5e (or MoveIt 2 simulated arm) to RosFit
  • Bridge joint state telemetry and joint trajectory commands
  • Configure the 3D viewer widget with the arm's URDF model
  • Send joint trajectory goals from the command console
  • Stream joint positions to the dashboard in real-time
  • Implement safety limits via shadow desired state

Prerequisites: ROS 2, MoveIt 2, URDF model of your arm.

Key topics covered: service bridging, joint trajectory commands, URDF visualization, safety parameters via device shadow.

# Send a joint trajectory command via the CLI
rosfit send dev_arm_01 joint_trajectory '{
  "joint_names": ["shoulder_pan", "shoulder_lift", "elbow", "wrist_1", "wrist_2", "wrist_3"],
  "points": [{
    "positions": [0.0, -1.57, 1.57, -1.57, -1.57, 0.0],
    "time_from_start": {"sec": 5, "nanosec": 0}
  }]
}' --wait

SLAM mapping from dashboard

Trigger and monitor a SLAM mapping session remotely through the RosFit dashboard.

What you'll build:

  • Configure the bridge to stream /map occupancy grids to the cloud
  • Use the SLAM map widget to view the map as it builds in real-time
  • Send commands to start/stop mapping sessions
  • Download completed maps from the dashboard
  • Compare map versions over time

Prerequisites: ROS 2, slam_toolbox or cartographer_ros, a LiDAR-equipped robot.

Key topics covered: occupancy grid streaming, large message handling, command workflows, data export.

The bridge supports large messages like occupancy grids by chunking them over MQTT. Configure a lower throttle_hz to avoid bandwidth saturation:

bridge:
  publish:
    - ros_topic: /map
      mqtt_suffix: telemetry/map
      msg_type: nav_msgs/OccupancyGrid
      qos: 1
      throttle_hz: 0.1
    - ros_topic: /scan
      mqtt_suffix: telemetry/scan
      msg_type: sensor_msgs/LaserScan
      qos: 0
      throttle_hz: 5

Multi-site fleet management

Manage robots across multiple physical sites from a single RosFit deployment.

What you'll build:

  • Deploy one RosFit cloud stack serving robots at 3+ sites
  • Use groups to segment devices by site (site-nyc, site-berlin, site-tokyo)
  • Configure per-site MQTT broker connections with TLS
  • Set up operator RBAC so each site team only sees their robots
  • Build a unified dashboard with per-site fleet health KPIs
  • Broadcast commands scoped to specific sites

Prerequisites: Multiple ROS 2 robots (physical or simulated), stable internet at each site.

Key topics covered: multi-site architecture, group-based RBAC, broadcast commands, global fleet KPIs.

Recommended architecture for multi-site deployments:

Site NYC          Site Berlin        Site Tokyo
  │                  │                  │
  │ MQTT/TLS         │ MQTT/TLS         │ MQTT/TLS
  │                  │                  │
  └──────────────────┼──────────────────┘

              ┌──────┴──────┐
              │  RosFit     │
              │  Cloud      │
              │  (Central)  │
              └─────────────┘

Gazebo simulation to production

Develop and test your RosFit integration in Gazebo, then deploy the same configuration to physical hardware with zero changes.

What you'll build:

  • Set up a Gazebo Classic or Ignition simulation with a TurtleBot 3
  • Register the simulated robot as a simulator device type
  • Use the exact same rosfit-bridge.yaml for simulation and production
  • Validate navigation commands, telemetry streaming, and alerts in simulation
  • Promote the configuration to a physical robot by changing only device_id
  • Run automated integration tests in CI with Gazebo + RosFit

Prerequisites: ROS 2, Gazebo, Docker (for CI).

Key topics covered: simulation device type, config portability, CI/CD testing, staging-to-production workflow.

# Register a simulator device
rosfit devices add --name "sim-turtlebot" --type simulator --group lab/simulation --tag ci --tag testing

The bridge auto-detects whether it is running in a simulated or physical environment and tags telemetry accordingly, so dashboard widgets can distinguish between real and simulated data.