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
- Start with 01-03 - Core patterns
- Try Python examples - ROS2 compatibility
- Add features - Actions, parameters as needed
- Build your robot - Use patterns in your project
Examples: Learn by doing, one concept at a time