BotQuest is a dedicated initiative by CodingAI, designed with academics at its core. This program empowers students to learn ROS (Robot Operating System) from industry experts and work on hands-on projects that address real-world challenges. Using simple tools like webcams and non-GPU laptops, students gain practical skills and experience in robotics without the need for expensive hardware.

by

Prerequisites to Learn ROS (Robot Operating System)

System Requirements
  • Laptop with:

    • Ubuntu 20.04 or 22.04 (dual boot or VM).

    • At least 4 GB RAM (8 GB recommended).

    • dedicated GPU (Optional).

  • Optional: Webcam, basic sensors (e.g., USB camera, Arduino, Raspberry Pi).

  • Stable internet access.

Learning Mindset
  • Willingness to explore documentation, troubleshoot errors, and learn by doing

Basic Technical Skills
  • Familiarity with Linux (Ubuntu) and terminal commands.

  • Basic programming skills in Python (preferred) or C++.

  • Understanding of file systems and simple scripting.

Conceptual Knowledge
  • Basic knowledge of robotics concepts (sensors, actuators, coordinate frames) (helpful but not mandatory).

  • Understanding of publisher/subscriber or client/server models (helpful but not mandatory).

ROS Beginner Course Structure

Week 1: Introduction to ROS
Session 1:

What is ROS? History, Applications, and Ecosystem In this session, we explore the Robotics Operating System (ROS), its evolution, and its expansive ecosystem. Central to our understanding will be the history of ROS, which originated at Willow Garage in 2007, designed to provide developers with a flexible framework for writing robot software. We will delve into various applications of ROS in industries such as autonomous vehicles, drones, and domestic robots. Understanding the ecosystem involves familiarizing ourselves with the layers of software components, including middleware, tools, libraries, and the community that contributes to the continual development of ROS.

Session 2:

Setting Up Ubuntu & Installing ROS (Noetic or ROS 2 Humble) This session focuses on the practical aspects of setting up our environment for ROS development. We will guide participants through installing Ubuntu, the preferred OS for ROS applications, and then proceed to install either ROS Noetic or ROS 2 Humble, depending on user preference. Essential commands and configuration files will be provided to ensure a smooth installation process. Participants should ensure that their systems meet the necessary prerequisites as this foundation is critical for future sessions.

Week 2: ROS Basics
Session 3:

ROS Architecture – Nodes, Topics, Messages, Master Here, we will dissect the fundamental architecture of ROS. Participants will learn about the core concepts including nodes, which are the basic building blocks of a ROS application; topics, which facilitate communication between nodes; messages, the data structure of information exchange; and the ROS Master, which provides naming and registration services to the nodes. This session aims to make these concepts relatable and applicable through hands-on examples.

Session 4:

Writing Your First Publisher and Subscriber in Python This session takes a hands-on approach, where participants will be guided to write a simple publisher and subscriber using Python. By the end of this session, attendees will have a working example that showcases how nodes communicate via topics. There will be discussions on debugging and logging mechanisms in ROS to troubleshoot any issues that participants may encounter during their projects.

Week 3: ROS File System & Tools
Session 5:

Understanding ROS Packages, Workspaces, and Catkin/Colcon Build In this session, we will explore the organization of ROS and introduce packages as the primary unit of software deployment. Participants will learn how to create and manage workspaces to effectively handle multiple packages while using tools like Catkin (for ROS 1) and Colcon (for ROS 2) for building their applications. This foundational knowledge will enable participants to structure their projects efficiently.

Session 6:

Using Core ROS Tools: rosrun, roslaunch, rosnode, rostopic We will familiarize participants with essential command-line tools provided by ROS that facilitate various stages of development and debugging. We will utilize rosrun to execute nodes, roslaunch to start multiple nodes defined in launch files, rosnode to interact with nodes in the system, and rostopic to explore and publish/subscribe to topics. Practical exercises will reinforce these tools' usage in real-world scenarios.

Week 4: Communication & Visualization
Session 7:

Custom Messages and Services In this session, we dive deeper into ROS's communication capabilities by creating custom messages and services. Participants will learn to define their own messages to suit specific needs while also exploring how to implement services for client-server communication patterns. This session includes practical examples to solidify understanding.

Session 8:

Visualizing Data with RViz Visualizing the data processed by ROS nodes is crucial for monitoring and debugging. This session introduces RViz, a powerful visualization tool for ROS. Participants will learn to set up RViz to visualize topics generated by their nodes and understand how to manipulate visual representations to debug and optimize their robotics applications effectively.

Week 5: Simulations with Gazebo
Session 9:

Introduction to Gazebo Simulation Environment In this final week, we will focus on simulation environments, particularly Gazebo. Participants will learn how to set up and configure Gazebo to simulate their ROS applications. The session will cover creating a robot model, environment setup, and integrating it with ROS.

Session 10:

Running Simulations and Analyzing Results We will conclude the training series with practical sessions on running simulations in Gazebo, analyzing the results and refining robotic behaviors based on the simulation data. Participants will explore how to troubleshoot common simulation issues and optimize their models for realistic performance in simulated scenarios. This hands-on experience will enhance participants' confidence in developing and deploying robotics applications effectively.

Week 6: Working with Sensors

In the ever-evolving field of robotics, understanding the role of sensors is crucial for both data collection and real-time decision-making. This week, we will delve into two essential sessions that focus on subscribing to various sensory data and the foundational concepts of sensor fusion.

Session 11:

Subscribing to LiDAR, Camera, and IMU Data In this session, we will explore how to acquire and process data from multiple sensors, including LiDAR, cameras, and Inertial Measurement Units (IMUs). Each of these sensors plays a pivotal role in robotic perception: - **LiDAR** provides detailed distance measurements and 3D mapping of the environment. - **Cameras** capture visual data, enabling object recognition and scene understanding. - **IMUs** give us information about the robot's orientation and motion dynamics. Participants will learn how to utilize the Robot Operating System (ROS) to subscribe to the topics broadcasting the data from these sensors. Through practical exercises, attendees will gain hands-on experience in interpreting raw sensor data and preparing it for integration into navigation algorithms.

Session 12:

Intro to Sensor Fusion Basics Following the exploration of individual sensor data, we turn our focus to sensor fusion, an essential technique that combines data from multiple sensors to improve the accuracy and reliability of robotic perception. In this session, we'll cover: - The fundamental principles of sensor fusion and its importance in robotics. - Common algorithms and techniques for fusing data, such as Kalman filtering and particle filters. - Real-world applications of sensor fusion in robotics, including obstacle avoidance and autonomous navigation. By the end of this session, participants will have a foundational understanding of how to enhance the robustness of sensor data through fusion techniques.

Week 7: Robot Control and Navigation

With a solid grasp of sensors and data integration, we now move into the realm of robot control and navigation. This week focuses on understanding motion commands and the powerful capabilities of the ROS navigation stack.

Session 13:

Writing Basic Motion Commands (Twist Messages) In this session, attendees will be introduced to ROS's messaging format for controlling robot motion, specifically **Twist messages**. These messages allow for the specification of linear and angular velocities, essential for guiding the robot's movement. Participants will learn: - How to construct and publish Twist messages using ROS tools. - Techniques for implementing smooth motion commands to navigate obstacles and follow paths. - Practical exercises to test and refine motion commands in simulated environments. This session aims to equip participants with the skills necessary to command a robot’s movement effectively, setting the stage for more complex navigation tasks.

Session 14:

Intro to ROS Navigation Stack (Localization & Mapping Concepts) In our second session this week, we will delve into the ROS Navigation Stack, a powerful subsystem that facilitates autonomous navigation through localization and mapping. Key topics include: - Understanding the difference between **localization** (knowing where the robot is) and **mapping** (creating a representation of the environment). - Overview of algorithms and tools used in the ROS Navigation Stack, including SLAM (Simultaneous Localization and Mapping) and Navfn. - Utilizing tools such as RViz for visualization and debugging of localization and mapping processes. Participants will engage in practical demonstrations and tutorials to understand how these components work together to enable robots to navigate and operate in unknown environments autonomously.

Week 8: Mini Project & Community

As we reach the final week of this learning module, students will consolidate their knowledge through a mini-project while also exploring the broader ROS community.

Session 15:

Build a Mini-Project (e.g., Turtlesim Obstacle Avoidance or Line Follower) In this session, participants will apply everything they've learned by developing a mini-project. Choices may include: - **Turtlesim Obstacle Avoidance**: Participants will use their understanding of sensor data and motion commands to program a turtle to navigate an obstacle course. - **Line Follower**: Participants can implement a line-following robot using IR sensors to detect the path. This hands-on project serves as a capstone experience where learners can see the practical applications of their training, troubleshoot real-world challenges, and refine their coding and problem-solving skills.

Session 16:

Exploring ROS Community Resources, Repositories, and Career Paths In our concluding session, we will explore the extensive resources available within the ROS community. This session will cover: - How to navigate ROS repositories for packages and libraries that can extend robotic capabilities. - Guidance on leveraging forums and community support networks for troubleshooting and collaboration. - Insight into potential career paths in robotics, including research, software development, and engineering roles. By the end of this week, participants will not only have completed a practical project but will also have the tools and knowledge to continue exploring ROS and robotics beyond the course, connecting with a vibrant and diverse community.