Skip to content

CagriCatik/ROS2-Advanced-Concepts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ROS2 - Advanced Concepts 🚀

Introduction

  • How to Follow this Course
  • Setup Your Environment (+ Tools)
  • Node OOP Template

ROS2 Actions Python 💻

  • Why and When to Use ROS 2 Actions
  • How do ROS 2 Actions Work?
  • Create an Action Definition
  • Write a Minimal Python Action Server
  • Write a Minimal Python Action Client
  • Accept or Reject a Goal
  • Goal State Machine Explained
  • Set a Goal as Succeeded or Aborted
  • Send Goal Feedback
  • Cancel a Goal
  • Introspect Actions with ros2 action (command line)
  • Goal Policy: Multiple Goals in Parallel
  • Goal Policy: Refuse New Goal if Current Goal is Active
  • Goal Policy: Preempt Current Goal if New Goal Received
  • Goal Policy: Queue Goals

ROS2 Actions C++ 💻

  • C++ Action Server
  • C++ Action Client
  • Accept or Reject a Goal (C++)
  • Set a Goal as Succeeded or Aborted (C++)
  • Send Goal Feedback (C++)
  • Cancel a Goal (C++)
  • Goal Policy: Multiple Goals in Parallel (C++)
  • Goal Policy: Refuse New Goal if Current Goal is Active (C++)
  • Goal Policy: Preempt Current Goal if New Goal Received (C++)
  • Goal Policy: Queue Goals (C++)

ROS2 Actions - Challenge 💡

  • Step 1 - Create and Generate the Action
  • Step 2 - Action Server
  • Step 3 - Action Client
  • Step 4 - Accept Goal and Goal Policy
  • Step 5 - Cancel with a Subscriber
  • Actions Challenge - C++ Code

ROS2 Lifecycle Nodes 🔄

  • What are Lifecycle Nodes, When to Use Them
  • Code Setup
  • Write a Lifecycle Node in Python
  • Transition Between States (with ros2 lifecycle cmd line)
  • Processing Errors
  • Lifecycle Node Manager (using Lifecycle Services)
  • Create a Launch File for Lifecycle Nodes
  • Write a Lifecycle Node in C++
  • Intro
  • Step 1 - Transform the Node Into a Lifecycle Node
  • Step 2 - Start Several Nodes (Params + Launch File)
  • Step 3 - Lifecycle Manager
  • Lifecycle Node Challenge - C++

ROS2 Executors ⚙️

  • Understand How Callbacks and Spin Work
  • The SingleThreaded Executor
  • Multi-Threaded Executor and Callback Groups
  • Which Executor/Callback Group Should You Use?
  • Going back to the Actions Server Example
  • Run Several Nodes in One Executable
  • Executors With C++

ROS2 Components 🔧

  • Manual Composition with Python
  • Manual Composition with C++
  • Create a ROS2 Component (plugin)
  • Load a Component at Run-Time with ros2 component cmd line
  • Load Components From a Launch File

Project 🛠️

  • Step 1 - Base Node and Executor
  • Step 2 - Action Server
  • Step 3 - Lifecycle Node
  • Step 4 - Component
  • Step 5 - Launch File
  • Step 6 - Adapt for Turtlebot3 in Gazebo