Cal Poly Robotics Club
Table of Contents
Cal Poly Robotics Club 5
Structure and Organization 5
General Hardware 6
E.E Concepts 6
Circuit Design 6
General Firmware 7
Firmware Concepts 7
Firmware Programming 7
Embedded Boards 7
Embedded Board Libraries 7
General Software 8
Software Concepts 8
Programming Languages 8
Software Libraries 9
Mechanical General 10
Machine Learning 11
Research Papers 12
Computer Vision 13
Control Theory 14
Robot Operating System 16
Single Board Computers (SBCs) 17
General Robotics 18
Cal Poly Robotics Related Courses 20
CPE 414. Robotic Systems Integration. 20
Online Courses 23
Welcome to the Cal Poly Robotics Club Knowledge DatabBase. This is meant to be a space where people can contribute links to any resources they have found interesting or useful. These resources do not necessarily need to be research papers or website articles, but instead can also include things people find to be “cool” or thought-provoking. Some categories have already been created to sort out different types of resources, but feel free to add additional sections or subsections as they become necessary. Additionally, links to other knowledge repositories in domain-specific areas have been included for further research. Many of these external knowledge repositories try to align with the awesome manifesto, in that they are curated to include things people actually find useful. We still want to encourage people to submit links to content they find particularly useful, which may or may not already be in these external repositories.
To contribute a new resource, create a title with a hyperlink to the resource and add a short description below the resource. Include keywords in the description that can make it easier to find (“Ctrl-F”-able).
Cal Poly Robotics Club Website
A great resource to get information about the Cal Poly Robotics Club.
The Club is classified as an “Instruction Related Activity” (IRA). We exist under the Computer Science department under the College of Engineering (CENG), not ASI. In the past we were associated with the Mechanical Engineering department. The Club is lead by the officer team, consisting of the President, Treasurer, Vice President, and a complement of other, more specific positions. Officers are elected at the end of each year. Under officers exist project leads. They manage specific projects that are funded by the club.
Slack for general discussion by all club members and participants: calpolyroboticsclub.slack.com
The goal of the slack is to be a place where new members can ask questions and be directed to the most appropriate respondent. All appropriate discussions are welcome and only a Cal Poly email is required to join the Slack.
Harness the electron
V= I * R
Tries to make antennas more understandable.
The Art of Electronics
Widely referenced handbook for electronics, now in its third edition.
Practical Electronics for Inventors
The 4th edition copy of another good reference for a good overview for electronics.
High Speed Digital Design: A Handbook of Black Magic
Has been recommended by people working with high-speed signaling.
Eagle is a software tool for designing electrical schematics and creating layouts for PCBs (Printed Circuit Boards). It's not the only software used in industry, but it is relatively well supported and maintained by AutoDesk. Eagle is the most commonly used in the club.
SnapEDA is a popular resource for accessing and creating PCB Footprints which can then be sent off to manufacturers for fabrication.
USART, UART, RS232, USB, SPI, I2C, TTL
How do all these things relate to each other?
USB Made Simple
Learn the basics about USB without reading the whole spec.
STM32, Arduinos, Teensy, other AVR microcontrollers...
C is a popular language used for writing firmware (the low-level code that facilitates basic functions and communications on hardware) and the Cal Poly Robotics Club is no exception.
Python is a popular scripting language, and is used relatively frequently within the robotics club. It's a good language to learn.
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Vim is a text editor that can be used to write software. Although it is relatively old (initially released in 1991) and also extremely difficult to master, it is a very capable text editor and is relatively popular in Cal Poly due to its popularity in industry.
Awesome repository for technical interview questions. Includes resources for programming languages, frameworks, platforms, database technologies, caching technologies, operating systems, algorithms, blockchain, coding exercises, lists of interview questions, design patterns, data structures, networks, security and data science.
Material for technical interview preparation. Includes algorithms, guides, different language resources, and links to other similar repos.
An awesome place to learn about every way to store data.
The Cal Poly Machine Shops have a lot of great resources and tools to create pretty much anything you need! Make sure to get your red tag as soon as possible to be able to be authorized to use the shop equipment.
Great introduction resource for concepts on Convolutional Neural Networks and Deep Learning.
An introduction to concepts on Deep Learning.
i. Lecture Notes and Videos: http://introtodeeplearning.com/#schedule
An introductory guide to the insides of Convolutional Neural Networks
Victor returns for another blog post
Victor is usntoppable.
An introduction to the field of Deep Learning written by Ian Goodfellow, Yoshua Bengio, and Aaron Courville.
An introduction to the Mathematics and Statistics behind Machine Learning written by Stephen Marsland.
TensorFlow is an end-to-end open source platform for machine learning. It has a comprehensive, flexible ecosystem of tools, libraries and community resources that lets researchers push the state-of-the-art in ML and developers easily build and deploy ML powered applications.
Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano. It was developed with a focus on enabling fast experimentation.
A curated list of the most cited deep learning papers from 2012 to 2016.
A list of all the papers accepted into the Computer Vision & Pattern Recognition (CVPR) conference from 2013 to 2019.
A list of all the papers accepted into the International Conference on Machine Learning (ICML) from 2004 to 2014.
Awesome Machine Learning
Awesome Deep Learning
Awesome repository of books, courses, videos, lectures, papers, tutorials, researchers, websites, datasets, conferences, frameworks, tools, and other communities related to deep learning.
Awesome Artificial Intelligence
Awesome repository with machine learning and A.I. related courses, books, programming, philosophy, code, videos, organizations, journals, competitions, and newsletters.
A curated list of well named topics in computer programming
Awesome Reinforcement Learning
Awesome repository dedicated to reinforcement learning. Resources include lectures, books, surveys, papers, applications, tutorials, websites, and demos.
Awesome Computer Vision
Awesome repository with books, courses, papers, software, datasets, tutorials, blogs, links, songs, and other resources related to computer vision
Awesome Deep Vision
Awesome repositiory with resources related to deep learning for computer vision. Include Papers, courses, vooks, videos, software frameworks, tutorials and blogs.
Proportional, Integral, Derivative
LIDARS, GPS, IMUs, Cameras
SICK LMS Full LIDAR Teardown
See the insides of a LIDAR.
The infrastructure for your robotics project.
Annual ROSCon event that features talks and workshops that involve ROS. See past years for many useful recorded videos about different ROS packages.
Repository of all the cool things happening related to ROS2
Learn VIM while playing a game.
Raspberry Pi, Beaglebone, Tinkerboard…
The Single Board Computer Database
Database of SBCs.
2015 DARPA Robotics Challenge
IEEE article about the 2015 DARPA Robotics Challenge featuring humanoid type ground robots.
IEEE Robots Database
A database that keeps track of robots in the wild.
DARPA Urban Challenge (2007)
Third DARPA challenge for autonomous vehicles which helped pave the way for the self-driving industry.
Lex Fridman - Youtube
MIT professor that has lots of great lectures, podcasts, and videos about A.I, machine learning, and self-driving vehicles. See playlist of lectures from self-driving vehicle companies here.
A probabilistic approach to robotics, authored by Sebastian Thrun, Deiter Fox, and Wolfram Burgard.
Introduction to Autonomous Mobile Robots, Second Edition
Offers a broad range of topics surrounding autonomous mobile robotics.
Explores the ethics surrounding robots. Authors include two Cal Poly professors Patrick Lin and Keith Abney who teach PHIL 327.
Awesome Robotics - 1
Awesome repository of robotic simulators, tools, concepts, datasets, machine learning, and other related topics.
Awesome Robotics - 2
Another awesome repo with courses, books, libraries, conferences, papers, journals, competitions, and companies related to robotics.
Awesome Robotics Libraries
Awesome repository with a focus on robotics libraries in the areas of dynamic simulation, inverse kinematics, machine learning, motion planning, optimization, robot modeling, platforms, SLAM, vision, fluid, and multiphysics
Awesome repository dedicated to Gazebo related resources.
Awesome repository for robotics libraries and resources. Includes libraries, grasping implementations, datasets, books, and articles.
Awesome Human-Robot Interaction
Awesome repository dedicated to human-robot interaction. Includes, courses, libraries, books, articles, blogs, mailing lists, simulations, and implementations.
Awesome Collision Detection
Awesome repository for collision detection resources including libraries, papers, books, and articles.
A collection of python code that implements robotic algorithms, with a focus on autonomous navigation. Topics include localization, mapping, SLAM, path planning algorithms, path tracking, arm navigation, ariel navigation, and bipedal planners.
Repository of some robotics coursework available across the internet. Includes full online courses, individual courses, hands-on learning useful concepts, tools blogs, and interview material.
CSC 357. Systems Programming.
C programming language from a system programming perspective. Standard C language including operators, I/O functions, and data types in the context of system functions. Unix commands, shell scripting, file system, editors.
CSC 469. Distributed Systems.
Foundations of distributed systems, distributed hash tables (peer-to-peer systems), failure detectors, synchronization, election, inter-process communication, consensus, replication, key-value stores, and measurements.
CSC 480. Artificial Intelligence.
Programs and techniques that characterize artificial intelligence. Programming in a high level language.
CSC 569. Distributed Computing.
Principles and practices in distributed computing: interprocess communications, group communications, client-server model, distributed objects, message queue system, distributed services, mobile agents, object space, Internet protocols. Distributed algorithms: consensus protocols, global state protocols. Fault tolerance: classification of faults, replication.
Integration of sensors, actuators, chassis, and Linux-based computational platforms into functioning autonomous robotic systems. Embedded Linux system programming, inter-process software communication, basic sensor fusion techniques, Pulse Width Modulation (PWM) motor actuation, and web-based interfacing for remote system way-pointing and monitoring. 3 lectures, 1 laboratory
CPE 416. Autonomous Mobile Robotics.
Theory and application of concepts relevant to autonomous mobile robots. Sensor and actuator interfacing, programming mobile robots, mobile robot configurations, software architectures and algorithms. 3 lectures, 1 laboratory.
CPE 485. Autonomous Robot Navigation.
Overview of existing autonomous mobile robot systems, basic kinematic modeling, control structures, sensing and sensor modeling, localization, and motion planning algorithms. Implementation of autonomous navigation capabilities. 3 lectures, 1 laboratory.
EE 302. Classical Control Systems.
Introduction to feedback control systems. System modeling. Transfer functions. Graphical system representation. System time response, stability. Root Locus. Frequency response. Compensation. 3 lectures.
EE 342. Classical Control Systems Laboratory.
Laboratory work pertaining to classical control systems, including servo control, transient and frequency responses, stability, and computer-aided analysis of control systems. 1 laboratory.
EE 322 - Microcontrollers for Everyone.
Microcontroller history and computer systems overview. Introduction to basic electrical circuits and computer programming concepts. Overview of computer peripherals such as LEDs, switches, LCD displays, timers, and ADCs; and interfacing various types of external sensors. Developing applications of microcontrollers using an integrated development environment. 3 lectures, 1 laboratory. Fulfills GE Area B7 or GE Area F.
EE 329. Microcontroller-Based Systems Design.
Design, implementation and testing of microcontroller-based systems. Hardware and C software for embedded systems to sense and actuate external devices. I/O common embedded systems to interface I/O devices and protocols. Analysis of power consumption. Ethics. 3 lectures, 1 laboratory. Not open to students with credit in CPE/EE 336. Crosslisted as CPE/EE 329.
EE 414. Robotic Systems Integration.
Integration of sensors, actuators, chassis, and Linux-based computational platforms into functioning autonomous robotic systems. Embedded Linux system programming, inter-process software communication, basic sensor fusion techniques, Pulse Width Modulation (PWM) motor actuation, and web-based interfacing for remote system way-pointing and monitoring. 3 lectures, 1 laboratory. Crosslisted as CPE/EE 414.
EE 428. Computer Vision.
Introduction to the concepts of 2D and 3D computer vision: low-level image processing methods such as filtering and edge detection; feature extraction; segmentation and clustering; stereo vision; appearance-based and model-based algorithms. 3 lectures, 1 laboratory. Crosslisted as CPE/EE 428.
EE 432. Digital Control Systems.
Theory and applications of digital computers in linear control systems. Analysis and design of microprocessor-based controls. Introduction of continuous and discrete transform methods for design of closed-loop dynamic systems. Applications in robotics, automotive, aircraft and industrial process control. 3 lectures. Crosslisted as CPE/EE 432.
EE 472. Digital Control Systems Laboratory.
Design and programming of microprocessor-based digital controls for electro-mechanical plants. Topics include digital control laws, translation of transfer functions into algorithms, assembly language programming, real-time software design, sample rate selection, finite word-length considerations. 1 laboratory. Crosslisted as CPE/EE 472.
EE 439. Introduction to Real-Time Operating Systems.
Theory, design and implementation of real-time operating system-based embedded systems. Scheduling algorithms, operating system resources, peripheral device interfacing and embedded system architecture. Resource management issues in a resource-limited (microcontroller-based) environment. 3 lectures, 1 laboratory. Crosslisted as CPE/EE 439.
EE 442. Real Time Embedded Systems.
Theory, design and implementation of modern embedded systems. Scheduling algorithms and operating system resources. System on Chip (SoC) design issues such as interfacing with custom hardware description language (HDL) peripherals, high-performance chip interconnect standards, energy use, area, and hardware versus software performance trade-offs. 3 lectures, 1 laboratory. Crosslisted as CPE/EE 442.
EE 446. Design of Fault-Tolerant Digital Systems.
Hardware and software fault tolerance concepts: fault models, coding in computer systems, module and system level fault detection mechanisms, reconfiguration techniques for general purpose processors and ASICs, and software fault tolerance techniques such as recovery blocks, N-version programming, checkpointing, and recovery. 3 lectures, 1 laboratory. Crosslisted as CPE/EE 446.
EE 509. Computational Intelligence.
Theory, design, and applications of biologically inspired computational paradigms, including artificial neural networks, evolutionary computation, swarm intelligence, and hybrid intelligent systems. 4 seminars.
EE 513. Control Systems Theory.
State representation of dynamic systems. Mathematical models of physical devices, controllability and observability. Design of closed-loop systems. Optimal control theory. 4 seminars.
EE 514. Advanced Topics in Automatic Control.
Summary course covering five selected graduate-level topics in automatic control theory and practice; implementation issues in digital control, nonlinear control theory and design, LQ and time-optimal control, variable structure control, and fuzzy logic/model-free control. 4 seminars.
EE 516. Pattern Recognition.
Fundamental topics in statistical pattern recognition including Bayesian decision theory, Maximum-likelihood and Bayesian estimation, non-parametric density estimation, feature selection, dimension reduction, and clustering, with application to image pattern recognition. 3 seminars, 1 laboratory.
EE 525. Stochastic Processes.
Probability and stochastic processes used in random signal analysis. The response of linear systems to random inputs. Auto-correlation and power spectral densities. Applications in signal processing using the discrete Kalman filter. 4 seminars.
EE 528. Digital Image Processing.
Processing and interpretation of images by computer. Emphasis on current applications with real images used in programming assignments. Topics may include histogram equalization, 2-D convolution, correlation, frequency-domain processing, median filtering, compression, Hough transform, segmentation and region growing, morphological operations, texture description, shape description, Bayes classifier. 4 seminars.
Robot Mapping - Intro to SLAM
Video series introducing Robot Mapping and Simultaneous Localization and Mapping (SLAM)
Self-Driving Fundamentals: Featuring Apollo
Free Udacity course giving a high-level overview of autonomous vehicle technology.
Artificial Intelligence for Robotics
Free Udacity course taught by Sebastian Thrun giving an overview of topics including localization, Kalman Filters, particle filters, search, PID control, and SLAM.