Skip to content

simucode-community/problem-specs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SimuCode Problem Specs

Open specifications for all ROS2 practice problems on simucode.online

Problems Platform ROS2 License


What is this?

SimuCode is a browser-based ROS2 practice platform — think LeetCode but for robotics.
Write code in the browser, run it in a real ROS2 Humble container, get instant pass/fail feedback.

This repository contains the open specifications for every problem:

  • spec.md — problem description, requirements, test cases, learning objectives
  • starter.py — the starter code students see in the editor
  • hints.json — progressive hints (levels 1-3)

Note: TestScripts and reference solutions are maintained privately by the SimuCode team.
This keeps grading integrity intact while making problem content open for improvement.


Problem List

# Problem Difficulty Category
1 Simple Publisher 🟢 Easy ROS2 Basics
2 Command Line - Topic Echo 🟢 Easy CLI Tools
3 Workspace Structure - Package Creation 🟢 Easy Package Management
4 Environment Setup - Parameter Sourcing 🟡 Medium ROS2 Basics
5 Python - OOP Node Creation 🟢 Easy Python for ROS2
6 Python - Type Hints & Logging 🟡 Medium Python for ROS2
7 C++ - Smart Pointers Node 🟡 Medium C++ for ROS2
8 Python - Multi-threading Executor 🔴 Hard Python for ROS2
9 C++ vs Python - Performance Comparison 🟡 Medium Language Comparison
10 URDF - Simple Robot Description 🟢 Easy URDF
11 Xacro - Parameterized Robot 🟡 Medium Xacro
12 YAML - Parameter Loading 🟢 Easy YAML Configuration
15 Python Launch - Basic Node Launch 🟢 Easy Python Launch
16 Launch Arguments & Substitutions 🟡 Medium Python Launch
17 Conditional Launch 🟡 Medium Advanced Launch
18 Include Launch Files 🔴 Hard Advanced Launch
19 Topics - Custom Message 🟡 Medium Topics
20 QoS - Reliable vs Best Effort 🔴 Hard Topics
21 Services - Basic Service Server 🔴 Hard ROS2 Services
22 Actions - Fibonacci with Feedback 🔴 Hard Actions
23 Parameters - Dynamic Reconfiguration 🟡 Medium Parameters
24 Static Transform Broadcaster 🟢 Easy TF2 Broadcasting
25 Dynamic Transform Broadcaster 🟡 Medium TF2 Broadcasting
28 Gazebo - Spawn Model 🟡 Medium Gazebo Simulation
32 Navigation - Waypoint Publisher 🟡 Medium Navigation (Nav2)
36 Debugging - Node Diagnostics 🟢 Easy Debugging Tools
37 Data Recording - Custom Bag Recorder 🟡 Medium rosbag2
41 Code Quality - Linting 🟢 Easy Code Quality
42 CI/CD - Launch Testing 🔴 Hard Integration Testing
43 DDS Discovery - Participant Filtering 🔴 Hard ROS2 Core
44 Lifecycle Node - State Machine 🟡 Medium ROS2 Core
45 QoS Profiles - Deadline & Lifespan 🟡 Medium ROS2 Core
67 Cobot - IO Integration (Digital I/O) 🟢 Easy Cobot Programming
101 Publish Robot Temperature Status 🟢 Easy Topics
102 ROS2 Parameter: Dynamic Speed Update 🟢 Easy Parameters
103 Service Server: Multiply Two Floats 🟢 Easy Services
104 Action Server: Delay Execution 🟡 Medium Actions
105 Write Launch File for Multi-Robot Simulation 🟡 Medium Launch
150 Robust Grasp Pose Selector using Point Cloud Clustering 🔴 Hard Manipulation
151 Latency Measurement Utility for ROS2 Topics 🟡 Medium Tools / Testing
152 Design a Minimal MQTT Bridge for Sensor Topics 🟡 Medium Integration
153 Differential Drive Odometry from Encoder Pulses 🟡 Medium Kinematics
154 Multi-Robot Task Allocator (Greedy) 🟡 Medium Multi-Robot
155 Robust YAML Launch Parameter Validator 🟡 Medium Configuration
183 The Sensor Fusion Latency Challenge 🔴 Hard Real-Time Performance
184 The RTOS Control Loop Stability 🔴 Hard Real-Time Systems
185 Dynamic SLAM Reliability Test 🔴 Hard Localization & Mapping
186 Warehouse A* Path Planner 🔴 Hard Motion Planning
187 Vision-Based Object Detection 🔴 Hard Perception & Vision

How to Contribute

We welcome contributions to problem specs — not testscripts or solutions.

What you can contribute

What we maintain privately

  • ❌ TestScripts (grading logic)
  • ❌ Reference solutions

Steps to contribute a fix

  1. Fork this repository
  2. Edit the relevant spec.md or hints.json
  3. Open a Pull Request with a clear description of what you changed and why
  4. A maintainer will review within 48 hours

How to suggest a new problem

Open a Discussion in 💡 Problem Ideas with:

Problem Title: [e.g. "ROS2 Action Server with Timeout Handling"]
ROS2 Concept: [e.g. rclpy actions, GoalHandle, CancelCallback]
Difficulty: Easy / Medium / Hard
Why useful: [e.g. "Addverb asks this in interviews. Tests whether you can handle preemption."]
Example input/output: [brief description]

The SimuCode team writes and validates the testScript. Once accepted, your name appears
on the problem page as "Suggested by @username".


Problem Template

When we build new problems based on community suggestions, we use this structure:

problems/
└── 050-your-problem-name/
    ├── spec.md          ← problem statement, requirements, test cases
    ├── starter.py       ← starter code students see
    └── hints.json       ← 3 progressive hints

Community


License

Problem specifications (descriptions, starter code, hints) are licensed under
Creative Commons Attribution 4.0.
The SimuCode platform and testscripts are proprietary.