-
Notifications
You must be signed in to change notification settings - Fork 1
The Robotics MasterClass
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.
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.
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.
Introduction to Computer Science
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.
You can follow this tutorial to learn the software tools we use for our telecommunications stack (Networking, sending data between computers, etc.)
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
Simulating Arduino Circuits at Home
Brushed vs Brushless DC Motors
Buck Converters/Current Limiters
Dr. H's High School Robotics Camp Guides
Servo Control with Raspberry Pi
Calculate Robot's Forward Kinematics
Arm Robot Kinematics and Joints
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
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:
-
Configuring your ROS environment: ROS Tutorial 1
-
ROS Filesystem (Optional, works the same way as navigating Linux filesystem):ROS Tutorial Optional
-
Creating ROS Package: ROS Tutorial 3
-
Building ROS Package: ROS Tutorial 4
-
Understanding ROS Nodes (Optional): ROS Tutorial Optional 2
-
Understanding ROS Topics (Optional): ROS Tutorial Optional 3
-
Writing a Publisher/Subscriber in Python: ROS Tutorial 7
-
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