I would like to propose a skill tree based approach on ROS and building robots in general. With a blend of software(ROS2 + build system stuff), hardware and essential theory,
This will be aimed at beginners so that they can have a structured overview of how to implement and learn these skills.
I just have rough idea for the software and hardware side.
SOFTWARE SKILL TREE
ROS 2 Programming Skill Tree
|
└─── [A] ROS 2 Basics
├─── Level 1: Install ROS 2 and run demo nodes
├─── Level 2: Create a publisher and subscriber
└─── Level 3: Use ROS 2 CLI tools for inspection and debugging
|
└─── [B] Robot Simulation (Prerequisite: [A])
├─── Level 1: Introduction to Gazebo and RViz for ROS 2
├─── Level 2: Create and manage simulated robots
└─── Level 3: Advanced simulation and custom sensor integration
|
└─── [C] Navigation and Perception (Prerequisite: [B])
├─── Level 1: Implement obstacle avoidance using lidar
├─── Level 2: Utilize ROS 2 navigation stack
└─── Level 3: Integrate SLAM for mapping and localization
|
└─── [D] Robot Control Systems (Prerequisite: [C])
├─── Level 1: Understand ROS 2 control frameworks and controllers
├─── Level 2: Design and integrate custom controllers
└─── Level 3: Implement advanced control strategies and real-time processing
|
└─── [E] Real Robot Integration (Prerequisite: [D])
├─── Level 1: Basic hardware interfacing and robot setup
├─── Level 2: Implement autonomous behaviors and safety systems
└─── Level 3: Complex system integration and multi-robot systems
|
└─── [F] ROS 2 Best Practices (Prerequisite: [E])
├─── Level 1: Code organization, package management, and build systems
├─── Level 2: Unit testing and continuous integration
└─── Level 3: Documentation, community involvement, and open-source contribution
HARDWARE SKILL TREE
Robotics Hardware Skill Tree
|
└─── [A] Basic Electronics
├─── Level 1: Build a circuit on a breadboard that lights up an LED
├─── Level 2: Create a circuit with a sensor controlling an actuator
└─── Level 3: Program a microcontroller for sensor input and actuator control
|
└─── [B] Mechanical Design (Prerequisite: [A])
├─── Level 1: Assemble a simple gear train
├─── Level 2: Design a mechanism for motion conversion
└─── Level 3: Design a simple robotic arm and calculate its reach
|
└─── [C] Advanced Electronics and Control (Prerequisite: [A])
├─── Level 1: Control multiple sensors and actuators with a microcontroller
├─── Level 2: Establish communication with devices using protocols
└─── Level 3: Design a PCB integrating a microcontroller, sensors, and actuators
|
└─── [D] Sensor Integration (Prerequisite: [C])
├─── Level 1: Build a system with temperature and distance sensors
├─── Level 2: Integrate an IMU and LIDAR
└─── Level 3: Implement sensor fusion for accurate positioning
|
└─── [E] Robotics Systems (Prerequisite: [B] + [D])
├─── Level 1: Construct a mobile robot platform
├─── Level 2: Implement autonomous navigation
└─── Level 3: Create an advanced robotics project with 3D cameras and drones
Since it's my first time, contributing to ros2 docs, I have some doubts.
Is there a way to implement this in an interactive manner, where each Subdivision of the skill tree (the lettered subheadings such as A, B, C … etc.) can be clicked and expanded upon, I feel this would produce less clutter. I have heard Sphinx is mainly static, so can it be achieved ?
Should I add my own CSS and JS styling, or would that go against the design principle ?
I have already created some test builds, but they are static, and can be made way better.
I would like to propose a skill tree based approach on ROS and building robots in general. With a blend of software(ROS2 + build system stuff), hardware and essential theory, This will be aimed at beginners so that they can have a structured overview of how to implement and learn these skills.
I just have rough idea for the software and hardware side.
SOFTWARE SKILL TREE
HARDWARE SKILL TREE
Since it's my first time, contributing to ros2 docs, I have some doubts.
Is there a way to implement this in an interactive manner, where each Subdivision of the skill tree (the lettered subheadings such as A, B, C … etc.) can be clicked and expanded upon, I feel this would produce less clutter. I have heard Sphinx is mainly static, so can it be achieved ?
Should I add my own CSS and JS styling, or would that go against the design principle ?
I have already created some test builds, but they are static, and can be made way better.