Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal for a ROS 2 Skill Tree on ROS2 Docs #4514

Open
Bezalelohim opened this issue Jun 6, 2024 · 1 comment
Open

Proposal for a ROS 2 Skill Tree on ROS2 Docs #4514

Bezalelohim opened this issue Jun 6, 2024 · 1 comment

Comments

@Bezalelohim
Copy link

Bezalelohim commented Jun 6, 2024

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.

Screenshot from 2024-06-06 22-40-11
Screenshot from 2024-06-06 23-19-55

@Bezalelohim
Copy link
Author

Bezalelohim commented Jun 6, 2024

Also, whoever is reading this, please do give your thoughts and inputs on the content regarding the skill tree as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant