Example Apps

Explore sample robot applications to learn from and build upon

Quick Start

Try any of these examples by installing them with the Garage CLI:

garage install hello-robot
garage run hello-robot
hello-robot
Beginner
1,250 downloads

A simple 'Hello World' robot application to get you started

beginner
tutorial
ros2
navigation-stack
Intermediate
890 downloads

Complete autonomous navigation solution with path planning and obstacle avoidance

navigation
autonomous
slam
vision-detector
Advanced
620 downloads

Object detection and recognition using computer vision

vision
detection
ai
teleoperation
Beginner
780 downloads

Remote control interface for robot operation

teleop
control
interface
arm-manipulation
Advanced
450 downloads

Robotic arm control and manipulation tasks

manipulation
kinematics
control

Code Examples

Basic garage.yaml Configuration
Example configuration file for a simple robot application
name: hello-robot
version: 1.0.0
description: "A simple Hello World robot application"
author: "Garage Team"
tags:
  - beginner
  - tutorial
  - ros2

# ROS2 configuration
ros:
  distro: humble
  packages:
    - hello_robot

# Dependencies
dependencies:
  system:
    - ros-humble-desktop
  python:
    - rclpy

# Entry points
launch:
  main: "ros2 run hello_robot hello_node"
  
# Optional GUI support
gui:
  enabled: true
  launch: "ros2 run hello_robot hello_gui"
Simple ROS2 Node (Python)
Basic ROS2 node structure for robot applications
#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from std_msgs.msg import String

class HelloRobotNode(Node):
    def __init__(self):
        super().__init__('hello_robot')
        
        # Create publisher
        self.publisher = self.create_publisher(
            String, 
            'hello_topic', 
            10
        )
        
        # Create timer
        self.timer = self.create_timer(1.0, self.timer_callback)
        self.counter = 0
        
        self.get_logger().info('Hello Robot Node Started!')
    
    def timer_callback(self):
        msg = String()
        msg.data = f'Hello Robot! Count: {self.counter}'
        self.publisher.publish(msg)
        
        self.get_logger().info(f'Publishing: {msg.data}')
        self.counter += 1

def main(args=None):
    rclpy.init(args=args)
    node = HelloRobotNode()
    
    try:
        rclpy.spin(node)
    except KeyboardInterrupt:
        pass
    finally:
        node.destroy_node()
        rclpy.shutdown()

if __name__ == '__main__':
    main()
ROS2 Launch File
Example launch file for starting multiple nodes
from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    return LaunchDescription([
        Node(
            package='hello_robot',
            executable='hello_node',
            name='hello_robot_node',
            parameters=[
                {'publish_rate': 2.0},
                {'message_prefix': 'Garage Robot:'}
            ],
            output='screen'
        ),
        
        Node(
            package='hello_robot',
            executable='listener_node',
            name='hello_listener',
            output='screen'
        ),
    ])

Step-by-Step Tutorials

Create Your First App
Build and publish a simple robot application

1. Create a new ROS2 package

2. Write a simple node

3. Add garage.yaml configuration

4. Test locally

5. Publish to registry

Advanced Navigation
Build a complete autonomous navigation system

1. Set up SLAM mapping

2. Configure path planning

3. Add obstacle avoidance

4. Integrate localization

5. Test in simulation

Explore More

Browse the full collection of apps or learn how to create your own.