
Begin the course with a clear overview of structure for complete beginners, ROS Noetic basics, and the four learning mediums: lectures, animations, screen recordings, and project walkthroughs.
Robot operating system is an open-source framework that speeds robotics development with built-in tools and community packages, while ros two expands cross-platform capabilities, more efficient message streams, and security configurations.
Set up your robotics development environment by installing Ubuntu, ROS, and a code editor, and explore dual boot and virtual machine options for running ROS simulations.
Learn to install and configure an Ubuntu 20.04 virtual machine using VMware Player, including downloading Ubuntu, creating the VM, and preparing ROS Noetic compatibility.
install ROS Noetic on Ubuntu 20 by configuring repositories, adding ROS sources, and setting up SSH keys before a desktop full install and sourcing the environment to run roscore.
Install and configure the Atom code editor for ROS C++ development, including ROS-specific packages for syntax highlighting, and learn to edit and compile projects from the terminal.
Explore the ROS overview to understand the tools ROS provides for robot development. Watch the videos again if needed, and know we will revisit each topic throughout the course.
Explore key ROS framework concepts, including the ROS master, nodes, publishers and subscribers on topics, services, actions, the parameter server, bag files, and reusable packages.
Learn to integrate ROS tools into our C code using the ROS C libraries, and use ROS terminal commands to debug and ensure the code behaves as expected.
Set up a ROS catkin workspace, organize a source folder with packages, and build with catkin_make. Create C++ ROS package using catkin_create_pkg and dependencies like roscpp, rospy, std_msgs, and sensor_msgs.
Overview of the ROS C++ style guide with naming conventions for packages, topics, classes, and functions. Learn consistent formatting and underscore usage to improve readability.
Create a simple ROS publisher in C++ that publishes a hello world string with a counter on the hello_world topic at five messages per second.
Learn to compile and run a C++ ROS publisher using catkin and CMake, add executable and link libraries in CMakeLists, build with catkin_make, start ROS core, and test topics.
Learn to build a ROS C++ subscriber, subscribe to the hello world topic, process messages with a callback, and keep the node running with ROS spin.
Explore ROS message types from the standard messages library and sensor messages library, including bool, float64, image, navsat fix, laser scan, point cloud, IMU, and vector3.
Publish rpm on the rpm topic and subscribe to it to compute speed from wheel radius. Publish the calculated speed on the speed topic.
Learn to use the ROS parameter server to store wheel radius and other attributes, and query, set, dump, and load them via terminal and code.
Learn to simplify ROS workflows with launch files: source your workspace, create a launch folder, write a minimal roslaunch file with node tags, and run roscore and nodes together.
Create a single roslaunch file to configure the wheel radius parameter, launch the rpm publisher and speed calculation node, and run the ROS core from one command.
Record and replay robot data with rosbag to test and review your ROS-based code. Create bag files, record topics, adjust parameters, and playback for analysis.
Explore ros packages, install the usb_cam package with noetic, and run roscore, rosrun, and roslaunch to publish and view usb_cam image_raw topics.
Create a custom ros service by defining an SRV with a request and response, configure package.xml and cmakelists, and build with catkin_make to enable an odd/even check.
Develop a two-node ROS service where a client sends a float angle to turn the camera and the server returns the corresponding pretaken image, using OpenCV and cv_bridge.
Learn to implement ros actions with a three-node setup (action server, action client, and location publisher) to navigate a robot to a goal, provide distance feedback, and report travel time.
Discover how to simulate a robot in ROS using Gazebo and RViz, test software without a physical robot, and visualize sensor data like cameras, lidars, and GPS.
Explore Gazebo robotic simulation by loading pre-made files, building simple models with the model editor, and wiring joints and gravity to study motion, sensors, and ROS-based control.
Learn to visualize a ROS robot in simulation with RViz and rqt. Visualize robot models and tf transforms, monitor topics, and play back rosbag data.
Become a skilled robotics software developer with the ROS framework. Share your hands-on projects on GitHub to boost job prospects and provide feedback through the course survey.
Learn how to use the Robot Operating System (ROS) platform which is used to program real world robotics. This course is designed for those who want to learn to program robots using one of the most widely used coding languages in industry: C++. The coding in this course is done in C++ using ROS Noetic on the Ubuntu 20.04 operating system.
This course will go over installation of ROS, how to develop code that uses the framework, and even go over simulation tools so you can make your own robot and control it in simulation, with code that can easily be ported to a real robotic system.
The course is broken into 6 main sections:
Course Introduction
Environment Setup
ROS Overview
Using ROS in C++
Robotics Simulation
Course Outro
Section 1 is a general introduction to the course.
In section 2 you will learn how to setup your computer to be able to run ROS. This includes utilizing the Ubuntu operating system, installing ROS, and introducing you to the code editors we will be using in this course.
In section 3 I will teach you at a high level what "tools" are included in the ROS framework, and what each of them do.
You will spend the majority of this course in section 4, learning how to implement all the various ROS tools in your very own C++ code.
Section 5 will touch on using the simulation and sensor data visualization tools ROS has to offer.
And lastly the course outro will go over what you can do once you have completed the course, as well as some frequently asked questions and a survey to help me improve the course.
So what are you waiting for? Let's get to programming, using the most widely used open source robotics platform, ROS.