
Learn by doing to design and build a real robot using ROS, control it with Alexa voice, and progress from simulation to a grasping prototype you can experiment with.
Robotics merges physical action and decision making, encoding intelligent behaviors via software like ROS to substitute human tasks.
Install a robust robotics development environment by upgrading the terminal, adding ros packages (move it, ros controllers, gazebo), and setting up python tools (pip, flask) plus vscode and arduino ide.
Explore device control in ROS through drivers that connect hardware to the OS, using printers and cameras as examples to provide a standard interface for sending commands and retrieving data.
Create and initialize a ros workspace with a src folder, add the arduino ball test package with dependencies ros cpp, ros py, and std_msgs, and build with catkin_make.
Master the rosparam workflow on the ROS parameter server by listing, getting, and setting parameters such as ros distro noetic and first name Antonio, which vanish when ROS master stops.
Convert sacro and macro to erdf, load the robot description into the ROS parameter server, and visualize the model in rviz using the robot state publisher and joint state publisher.
Learn how Gazebo enables a digital twin in ROS by simulating sensors and motors, publishing identical topics to real hardware, and testing perception and grasping in a virtual environment.
Enhance the URDF with collision, mass, inertia, and transmission data for Gazebo simulation, using macros for default inertial values and configuring Gazebo plugins for robot control.
Learn how YAML configuration files enable modular ROS nodes for different robots. Load these parameters from the ROS parameter server to tailor grasping applications to varying joints and grippers.
Create a yaml configuration file in the Arduino Test package, start the ros core, and load it into the parameter server with ros param load; verify with ros param list.
Develop a basic ROS C++ service server that sums two input integers, defines the request and response in a srv file, advertises the service, and runs with roscore.
Build the real robot control system with ROS and C++. Create an Arduino board interface with joint state and joint command interfaces, managed by a controller manager.
Implements the Arduino board interface logic to run the ROS controller, converting commands to degrees via the radians-to-degrees service and publishing to Arduino actuate using joint state and position interfaces.
Learn how two-dimensional rotation changes a rigid body's orientation in the plane, using frames l and w and a rotation matrix to relate coordinates between the frames.
Learn how ROS actions provide non-blocking asynchronous communication between an action client and an action server for long-running robotic tasks, offering goal submission, periodic feedback, and final results.
Build a C++ ROS action server connected to a movie API to define robot tasks, using Move It to plan trajectories and Alexa for voice-triggered execution.
Create and configure a custom Alexa skill to control an Arduino robot over the internet, including invocation name, intents, endpoint setup, building, and testing with voice and JSON requests.
Configure the Alexa skill and establish communication with your PC using engine rock HTTP server on port 5000. Configure the Alexa developer console endpoint and test the interaction.
Establish bidirectional Arduino–ROS communication to actuate servo motors, using the Rosie Arduino library to serialize messages and enable the Arduino as a ROS node publishing and subscribing to topics.
Develop hands-on skills in robotics and ROS manipulators by assembling the robot in part 3 of the hardware lab.
Would you like to learn ROS, the Robot Operating System by building a real robot?
The philosophy of this course is the Learn by Doing and quoting the American writer and teacher Dale Carnegie
Learning is an Active Process. We learn by doing, only knowledge that is used sticks in your mind.
In order for you to master the concepts covered in this course and use them in your projects or, why not, also in your future job, I will guide you through the learning of all the functionalities of ROS both from the theoretical and practical point of view.
Each section is composed of three parts:
Theoretical explanation of the concept and functionality
Usage of the concept in a simple Practical example
Application of the functionality in a real Robot
I almost forgot! We need one more, essential and exciting part of this course for your active learning!
Experiment, Develop and Test your ideas in the Robot (real or simulated in your PC)
In each Section of the course, I'll introduce you a new concept and then we will use it to add new functionalities to the robot:
Introduction to the Course
Setup the Environment: Install Ubuntu and ROS Noetic
Introduction to ROS: What is ROS and why is so important in Robotics.
Create the first ROS node
ROS Publisher/Subscriber
Digital Twin: Use a simulator to develop and test the functionalities of the robot without the need of any hardware device
URDF
Gazebo
ROS Parameter Server
RViz
ROS Launch Files
Control: How to create a Control System for Robot actuators
ROS Timer
ROS Services
ros_control
Kinematics: Use the package MoveIt! for the Trajectory Planning
TF
MoveIt!
Application: Interface and make available all the functionalities of the robot to other software to create more complex applications and functionalities
ROS Actions
Alexa: Use the Alexa Voice Assistant to actuate the robot with the voice
Build the Robot: Build the real robot and migrate all the functionalities from a simulated robot to a real one
rosserial_arduino
Conclusion and Summary of the course
To facilitate your learning and help you join the robotic world, the code lessons are available both in C++ and in Python and you can decide which language to use during the course.
Anyway, I would suggest you to follow both in order to complete your Robotics Software Developer profile!