Skip to content

Repository files navigation

learn_ros2

ROS 2 C++ Python Gazebo Nav2 MoveIt

Overview

This repo is my hands‑on journey through ROS 2 simulation and control, from navigation, motion planning and hardware integration. It contains examples in C++ and Python, plus final projects to show the concepts in action.

Repo structure (top‑level):

course_level1/       # Core ROS 2 nodes in C++/Python + final projects
course_level2/       # URDF, TF, RViz2, Gazebo; sensor sim + bringup
course_level3/       # Actions, lifecycle, components, executors + final project
course_moveit/       # MoveIt planning (URDF->SRDF, planning groups, API demos)
course_nav2/         # SLAM & Nav2 with TurtleBot3 in Gazebo + mapping & nav
course_ros2_control/ # ROS 2 Control hardware interfaces & controllers
docs/                # GIFs, videos, screenshots, certificates

Courses: by Edouard Renard (Level 1, 2, 3, MoveIt, Nav2, ros2_control).


Visual Highlights


ros2_control (Hardware Interfaces & Controllers)

Folder: course_ros2_control/

  • Skills: ROS 2 hardware_interface, ROS 2 controller_manager, ros2_control YAMLs, gazebo‑ros2‑control bridge, C++ motor drivers, build custom ros2_control controller.
  • Outcome: bring a custom URDF to life with ros2_controllers and hardware_interfaces for robust integration between hardware motor drivers and ROS 2 applications. Also developed a custom ros2_control complimentary filter controller.


MoveIt — Motion Planning & Manipulation

Folder: course_moveit/

What I learned:

  • URDF → SRDF pipeline: joints, collision pairs, and planning groups.
  • Planning scene & kinematics: IK queries, Cartesian paths, constraints.
  • MoveGroup API (C++/Python): plan, execute, async stops, trajectory inspection.

Demos:

Final activity: build a small arm commander that sequences joint targets (either FK or IK) with the option of Cartesian paths.


Nav2 — SLAM & Navigation

Folder: course_nav2/

What I learned:

  • Mapping & Localization: slam_toolbox, AMCL, static 2D maps.
  • Nav2 stack: bt_navigator, planner_server, controller_server, recovery.
  • Costmaps: global/local, inflation, footprint tuning, voxel/obstacle layers.

Final demo: Map a house with SLAM in Rviz2 + Gazebo, then navigate to a goal set by the user.


ROS 2 Advanced (Level 3) — Actions, Lifecycle, Components, Executors

Folder: course_level3/

What I learned:

  • Actions (C++/Py): goal/feedback/result APIs for long‑running tasks.
  • Lifecycle Nodes: managed bringup, deterministic configuration & cleanup.
  • Components: composition, intra‑process comms, lower latency & memory.
  • Executors: single vs multi‑threaded, callback groups, real‑time behavior.

Final project: compose a multi‑node C++ app with lifecycle‑managed robot bringup and an action server coordinating a short and simple goal.


Level 2 — URDF, TF, RViz2, Gazebo

Folder: course_level2/

What I learned:

  • URDF/Xacro: links/joints, inertia, collision vs visual, macros.
  • TF tree: frame conventions, static vs dynamic transforms.
  • RViz2: visual debugging with TF, markers, point clouds.
  • Gazebo: spawn, sensors, plugins; launch files for bringup.

Final project: complete robot description simulate sensors, and control a robot in Gazebo; verify TF tree and visualize in RViz2.


Level 1 — Core ROS 2 (C++ & Python)

Folder: course_level1/

What I learned:

  • Nodes, topics, services, parameters, timers in C++ & Python.
  • Messages & interfaces: custom .msg/.srv with rosidl.
  • Packages & launch: ament_cmake and ament_python pkg basics.

Final project (Python and C++, respectively):


Tech Stack & Skills

  • ROS 2 Jazzy, C++17, Python 3.12
  • MoveIt, Nav2, Gazebo (Harmonic), RViz2
  • URDF/Xacro, TF2, ros2_control
  • Actions, Lifecycle, Components, Executors

Certificates

  • Certificates available in docs/Certificates of Completion/.

Maintained by Cedric Hollande - cedrich@seas.upenn.edu | cedric.hollande25@gmail.com

About

My projects from following the Robotics-BackEnd courses by Edouard Renard.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages