
Begin your journey with ROS in Python 3 (noetic) in this beginner-friendly course, organized for sequential learning, with in-person explanations, visual animations, screen recordings, and project walkthroughs.
Discover ROS, the robot operating system, an open source framework for robotics development that saves time with built-in tools, packages, and cross-language libraries in C++, Python, and more.
Install Ubuntu, ROS, and code editors, then run ROS projects in a virtual machine; compare dual boot and virtualization and choose VMware Player or VirtualBox.
Install and configure a Windows-based VMware virtual machine with Ubuntu 20.0, download the Ubuntu disc image, and prepare ROS Noetic for the course.
Install ROS on Ubuntu 20 by configuring repositories, adding ROS sources, importing keys, updating packages, performing a desktop full install, and testing the ROS Master.
Install and compare three code editors—Atom, Sublime, and Vim—for developing ROS Python code, exploring useful packages, themes, and features like atom-ros, gpp compiler, and FTP remote edit.
Explore the ROS overview and learn about the tools ROS gives you to help with your robot development.
Preview the ROS framework on a four-wheeled robot and learn how the ROS master coordinates nodes, publishers and subscribers on topics, services, actions, and the parameter server.
Explore ROS tools in Python code using the rospy module and leverage ROS terminal commands for debugging and verifying robot behavior.
Create a catkin workspace to organize ROS development in the source folder, build and devel folders via catkin_make, and manage packages with package.xml and CMakeLists.txt.
Create a python ros publisher that sends 'hello world' plus an incrementing counter at a set rate. Initialize a ros node, publish a std_msgs string, and verify via rostopic commands.
Develop a Python ROS subscriber that connects to the hello world topic, initializes a ROS node, and prints incoming messages via a callback.
Explore ROS message types, including standard and sensor messages like Bool, Float64, image, NavSatFix, laser scan, point cloud, and IMU; learn to import and use them in publishers and subscribers.
Create two ROS nodes: a rpm publisher and a speed calculator subscriber, converting rpm to meters per second using the wheel radius.
Learn to use the ROS parameter server in Python to store and retrieve robot values, such as wheel radius, avoiding hard-coded sizes, and update parameters dynamically with rospy.get_param.
Use launch files to simplify running ros scripts, source your workspace, and define executable nodes with ros launch in a clear package structure.
Create a single launch file that starts the ROS master and runs the rpm publisher and speed calculator using the wheel radius from the parameter server.
Record and replay rosbag files with rosbag record and rosbag play, using -a and -L, and inspect contents with rosbag info while exploring topics like speed, imu, or fix.
Explore ros packages by examining the usb_cam package and installing it with noetic. Launch the usb_cam node to publish image topics and verify with roscd and rospack.
Create a custom ROS service with a .srv file, update package.xml and CMakeLists.txt, and build with catkin_make. Implement a Python service server and client to check odd or even.
Create a ROS service with a client and server to turn the camera to a given angle and return the matching image from pretaken images, displayed with OpenCV and cv_bridge.
Walks through a ROS actions project, showing how to implement a navigate 2D action with an action server, action client, and a robot point publisher, including goal and feedback.
Explore ROS simulation with Gazebo and RViz to test a virtual robot. Visualize sensor data like cameras, lidars, and GPS, using the same ROS code as the real robot.
Explore gazebo for robotic simulation by loading pre-made files, building simple models with the model editor, wiring revolute joints and gravity, and exploring lidar sensors and ROS integration.
Explore ROS visualization tools by using RViz for 3D visualization, adding robot models and TF frames, and using rqt plugins to inspect topics, parameters, and ROS bag playback.
Celebrate completing the course and apply your ROS in Python skills to program robots, share your projects on GitHub, and showcase experience to recruiters in your resume.
Learn how to use the Robot Operating System (ROS) platform which is used to program real world robotics. The course is designed for beginners with little, to no experience using ROS. The coding in this course is done in Python 3 using ROS Noetic. We 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 Python
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 Python 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.