Skip to content
This repository has been archived by the owner on Dec 9, 2020. It is now read-only.

The Robotics MasterClass

Brian Amin edited this page Apr 16, 2019 · 7 revisions

Welcome!

Here are some resources to get you started in the world of robotics engineering. The resources posted here are aimed for software, electrical, controls, systems, and mechanical engineers. In an ideal situation, you should have some level of mastery over all of these topics as a robotic - but work through the topics that interest you and just remember to just jump in and start building as that is the best way to learn.

If you have any tutorials or resources you want added on here just @ and post on Slack and we can append them.


To those working on software (CS, EE, CE, etc.) here's a hot tip: Learn general concepts posted here first; THEN learn ROS (Robot Operating System). Yes, the entire stack for RMC uses ROS, but just know that ROS is a large framework; and it does take a while to learn. The best way we get our engineers contributing to our projects is getting them on hands-on experience as fast as possible. So being able to have a mastery over programming, hardware, control systems, etc. really makes the process of learning ROS easier.


Introduction

If you're new to Temple Robotics, you may or may not have heard of the NASA Robotic Mining Competition. While we do other small side-projects throughout the semester, our participation in the Robot Mining Competition is our flagship project. As a member of the team, you will be assisting in developing the software to drive our mining robot. We already have a large repository of existing code that we will be building upon as we further develop the robot's software.

In order to contribute and test code, you will need to install and learn a few different software tools. In addition to being crucial to development for TURMC, many of these tools are widely used throughout industry and research.

Software Requirements/Version Control

For software engineers: Our RMC software stack is built on-top of Ubuntu Version 16.04 (For both our SBC's (Raspberry Pi) and our onboard computers (Intel NUC), as well as our basestation manual control computer). You can follow this tutorial to getting started with installing it on your machine.

Note that it's not necessary to get Linux going on your machine in order to contribute to this project. If you're writing code for a microcontroller or MATLAB (Or Python/C++ with the appropriate libraries) for example you're welcomed to work in your own development environment. A lot of the libraries we use are native to Linux, as well as our build systems.

We are working on ROS Kinetic Kame which requires Python 2.7 and C++ 11. Our version control follows the REP3 standards, you can read more about that here

The version of ROS determines the disto we use for Linux as well as the version of our software development languages.

General Programming:

Introduction to Computer Science

Solving problems using code

Computer Vision

We use OpenCV3 for all of our computer vision needs on the team. You can follow this tutorial to install OpenCV (Tutorial of for Linux only, if you need OpenCV on your specific operating system post on Slack). The link also contains some great starter tutorials to get a handle of the tools the OpenCV library provides.

Telecomm

You can follow this tutorial to learn the software tools we use for our telecommunications stack (Networking, sending data between computers, etc.)

Control Systems

ROS is generally used for our upper-level decision making and control systems. When you get down to real-time hardware however, ROS will not keep up. This is where control system design comes in. Whether you're an EE, CS, or ME control system design and the modeling principles that follow it will show up a lot throughout your engineering career. Here are some tutorials to help you get a handle:

This is a great pdf that goes over the entire span of modeling, simulation, and control (From classical to modern) systems. It's written for high schoolers: Control System Master Guide

Brian Douglas posts some great Khan Academy-like tutorials on classical control theory and design techniques Brian Douglas Control Tutorials

If you have a better handle on Linear Algebra and Differential Equations you can check out this playlist for modern control fundamentals: Control BootCamp

This website is a great resource that takes you through various problems, shows you how to model them with mechanics/differential equations, and design controllers/implement them using MATLAB/Simulink. This website is great because it also shows you how to design controllers using both classical and modern techniques: Control Examples

This website also has hardware examples on Arduino: Hardware Examples

Here are two videos that take you through control of a line following robot: Line Following

And MATLAB tech talks (By Brian Douglas again): More Brian Douglas

Electronics

Simulating Arduino Circuits at Home

Brushed vs Brushless DC Motors

Soldering/Splicing

Moar Soldering

Multimeter Basics

Circuits Playlist

Buck Converters/Current Limiters

Learn Arduino in 15 Minutes

Dr. H's High School Robotics Camp Guides

Arduino Tutorials

Servo Control with Raspberry Pi

Kinematics, Dynamics, Localization, and other Robotics topics

Robot Localization

Bayes' Theorem

ROS Localization Package

Occupancy Grids

Calculate Robot's Forward Kinematics

More About Robot Kinematics

Basic PathFinding

Basic PathTracking

Arm Robot Kinematics and Joints

ROS Tutorials

ROS Kinetic

Follow this ROS Installation Guide Remember to perform the desktop-full installation

When you are finished installing, you will need to configure your work space. Follow: Workspace Setup

Remember to source your setup.bash files (You will need to source these files anytime you open a new terminal window and you would want to perform rosrun/roslaunch commands to start up your ROS code:

source /opt/ros/kinetic/setup.bash
source devel/setup.bash

ROS Tutorials

Start here: ROS Computational Graph Levels

Check out the video version: ROS Video Playlist

The Construct is a great Youtube channel that has a ton of material on ROS and its features: The Construct Playlist

Go here LINK or follow through the list:

  1. Configuring your ROS environment: ROS Tutorial 1

  2. ROS Filesystem (Optional, works the same way as navigating Linux filesystem):ROS Tutorial Optional

  3. Creating ROS Package: ROS Tutorial 3

  4. Building ROS Package: ROS Tutorial 4

  5. Understanding ROS Nodes (Optional): ROS Tutorial Optional 2

  6. Understanding ROS Topics (Optional): ROS Tutorial Optional 3

  7. Writing a Publisher/Subscriber in Python: ROS Tutorial 7

  8. Examining Publisher/Subscriber in Python: ROS Tutorial 8

And MooresRobots is a good place to sort of combine everything you know about robotics (Control systems, ROS, hardware): MooresRobots