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
garage run hello-robot
hello-robot
Beginner
1,250 downloadsnavigation-stack
Intermediate
890 downloadsComplete autonomous navigation solution with path planning and obstacle avoidance
navigation
autonomous
slam
vision-detector
Advanced
620 downloadsteleoperation
Beginner
780 downloadsarm-manipulation
Advanced
450 downloadsCode 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.