Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Examples

Learn miniROS with focused examples. Each demonstrates one core concept.

Quick Start

git clone https://github.com/ruziniuuuuu/miniROS-rs
cd miniROS-rs

# Run any example
cargo run --example 01_basic_pubsub

Message Packages

16 - ROS2 Message Packages

cargo run --example 16_message_packages_demo

What you’ll learn: ROS2-compatible message types

  • std_msgs, geometry_msgs, nav_msgs
  • Message validation and serialization
  • Cross-language compatibility

17 - New Message Types

cargo run --example 17_new_message_types_demo

What you’ll learn: Sensor and diagnostic messages

  • sensor_msgs (LaserScan, IMU, Image)
  • action_msgs (Goal tracking)
  • diagnostic_msgs (System health)

Core Examples (Rust)

01 - Basic Pub/Sub

cargo run --example 01_basic_pubsub

What you’ll learn: Create publishers and subscribers

  • Node creation
  • Topic-based communication
  • Message types

02 - Custom Messages

cargo run --example 02_custom_messages

What you’ll learn: Define your own message types

  • Serde serialization
  • Custom structs as messages
  • Type safety

03 - Services

cargo run --example 03_services

What you’ll learn: Request/response communication

  • Service servers
  • Service clients
  • Synchronous communication

Python Examples

All Python examples use identical ROS2 API:

Minimal Publisher

python python/examples/minimal_publisher.py
import mini_ros

mini_ros.init()
node = mini_ros.Node('publisher')
pub = node.create_publisher(mini_ros.String, '/topic', 10)

msg = mini_ros.String()
msg.data = 'Hello!'
pub.publish(msg)

node.destroy_node()
mini_ros.shutdown()

Minimal Subscriber

python python/examples/minimal_subscriber.py
import mini_ros

def callback(msg):
    print(f'Received: {msg.data}')

mini_ros.init()
node = mini_ros.Node('subscriber')
sub = node.create_subscription(mini_ros.String, '/topic', callback, 10)
mini_ros.spin(node)

Advanced Examples (Optional Features)

Actions (Long-running tasks)

cargo run --example 04_actions --features actions

Parameters (Dynamic config)

cargo run --example 05_parameters --features parameters

Visualization (3D display)

cargo run --example 06_visualization --features visualization

Multi-Terminal Demo

Terminal 1 - Publisher

cargo run --example 01_basic_pubsub

Terminal 2 - Subscriber

cargo run --example 01_basic_pubsub

Terminal 3 - Python Node

python python/examples/minimal_subscriber.py

All nodes automatically discover each other. No configuration needed.

Transport Options

Default TCP

cargo run --example 01_basic_pubsub

ROS2 Compatible DDS

cargo run --example 01_basic_pubsub --features dds-transport

Interoperates with ROS2 nodes using DDS.

Example Output

[INFO] Node 'publisher' initialized
[INFO] Publishing to '/chat': Hello miniROS!
[INFO] Node 'subscriber' received: Hello miniROS!

Clean, minimal logging. No debug noise.

Troubleshooting

Port Conflicts

# Use different port
MINI_ROS_PORT=8080 cargo run --example 01_basic_pubsub

Discovery Issues

# Check network
ping localhost

# Restart with debug
RUST_LOG=debug cargo run --example 01_basic_pubsub

Next Steps

  1. Start with 01-03 - Core patterns
  2. Try Python examples - ROS2 compatibility
  3. Add features - Actions, parameters as needed
  4. Build your robot - Use patterns in your project

Examples: Learn by doing, one concept at a time