Cal Poly Robotics Club

Knowledge Database


Table of Contents

Introduction        4

Contributing        4

Cal Poly Robotics Club        5

Structure and Organization        5

Resources        5

Slack        5

General Hardware        6

E.E Concepts        6

Books        6

Circuit Design        6

Repositories        6

General Firmware        7

Firmware Concepts        7

Firmware Programming        7

Tools        7

Embedded Boards        7

Embedded Board Libraries        7

Repositories        7

General Software        8

Software Concepts        8

Programming Languages        8

C        8

C++        8

Python        8

Rust        8

Javascript        8

Tools        8

Git        8

Vim        9

Software Libraries        9

Repositories        9

Mechanical General        10

Machine Learning        11

Lectures        11

Articles        11

Books        11

Tools        11

Research Papers        12

Repositories        12

Computer Vision        13

Repositories        13

Control Theory        14

Sensors        15

Robot Operating System        16

Events        16

Repositories        16

Linux        17

Tools        17

Single Board Computers (SBCs)        17

General Robotics        18

Articles        18

Websites        18

Papers        18

Videos        18

Books        18

Repositories        19

Courses        20

Cal Poly Robotics Related Courses        20

CSC        20

CPE        20

CPE 414. Robotic Systems Integration.        20

EE        21

Online Courses        23

Organizations        24


Introduction

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.

Contributing

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).

Example:

Cal Poly Robotics Club Website

        A great resource to get information about the Cal Poly Robotics Club.

        


Cal Poly Robotics Club

Structure and Organization

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.

Resources

Slack

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.


General Hardware

Harness the electron

E.E Concepts

V= I * R

Antenna Theory

        Tries to make antennas more understandable.

Books

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.

Circuit Design

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.

        Installing Eagle

        Eagle Tutorial

SnapEDA is a popular resource for accessing and creating PCB Footprints which can then be sent off to manufacturers for fabrication.

        SnapEDA

Repositories


General Firmware

Arduinos

Firmware Concepts

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.

Firmware Programming

Use C

Tools

Embedded Boards

STM32, Arduinos, Teensy, other AVR microcontrollers...

Embedded Board Libraries

FreeRTOS

Repositories


General Software

Software Concepts

SOLID principles

Agile development

Kanban

Programming Languages

C

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.

C Tutorial

C++

stub

Python

Python is a popular scripting language, and is used relatively frequently within the robotics club. It's a good language to learn.

        Python Tutorial

Rust

stub

Javascript

stub

Tools

Git

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

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.

http://fileformats.archiveteam.org/

Software Libraries

Repositories

Awesome Interviews

        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.

Interview

        Material for technical interview preparation. Includes algorithms, guides, different language resources, and links to other similar repos.

File formats

        An awesome place to learn about every way to store data.


Mechanical General

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.


Machine Learning

Lectures

  1. Stanford CS231n: Convolutional Neural Networks for Visual Recognition

Great introduction resource for concepts on Convolutional Neural Networks and Deep Learning.

  1. Lecture Notes: http://cs231n.github.io
  2. Lecture Videos: CS231n Lecture Videos
  1. MIT 6.S191: Introduction to Deep Learning

An introduction to concepts on Deep Learning.

                    i.      Lecture Notes and Videos: http://introtodeeplearning.com/#schedule

Articles

  1. Intro to CNNs, Part 1

An introductory guide to the insides of Convolutional Neural Networks

  1. Intro to CNNs, Part 2

Victor returns for another blog post

  1. Intro to RRNs

Victor is usntoppable.

Books

  1. Deep Learning

An introduction to the field of Deep Learning written by Ian Goodfellow, Yoshua Bengio, and Aaron Courville.

  1. Machine Learning - An Algorithmic Approach

An introduction to the Mathematics and Statistics behind Machine Learning written by Stephen Marsland.

Tools

  1. TensorFlow

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.

  1. Keras

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.

Research Papers

  1. Most Cited Deep Learning Papers

        A curated list of the most cited deep learning papers from 2012 to 2016.

  1. CVPR 13-19 Accepted Papers

A list of all the papers accepted into the Computer Vision & Pattern Recognition (CVPR) conference from 2013 to 2019.

  1. ICML 04-14 Accepted Papers

A list of all the papers accepted into the International Conference on Machine Learning (ICML) from 2004 to 2014.

                

Repositories

Awesome Machine Learning

        Awesome repository dedicated to machine learning in general. Resources are organized by the languages that they use. Languages include APL, C, C++, Lisp, Clojure, Crystal, Elixir, Erlang, Go, Haskell, Java, Javascript, Julia, Lua, MATLAB, .NET, Objective C, OCaml, Perl, Pearl 6, PHO, Python, Ruby, Rust, R, SAS, Scala, Scheme, Swift, and Tensorflow.

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.

Awesome Naming

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.


Computer Vision

Repositories

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.


Control Theory

PID:

Proportional, Integral, Derivative


Sensors

LIDARS, GPS, IMUs, Cameras

SICK LMS Full LIDAR Teardown

See the insides of a LIDAR. 


Robot Operating System

The infrastructure for your robotics project.

Events

ROSCon 2019

        Annual ROSCon event that features talks and workshops that involve ROS. See past years for many useful recorded videos about different ROS packages.

Repositories

Awesome ROS2

        Repository of all the cool things happening related to ROS2


Linux

Tools

VIM Adventures

        Learn VIM while playing a game.

Single Board Computers (SBCs)

Raspberry Pi, Beaglebone, Tinkerboard

The Single Board Computer Database

Database of SBCs.


General Robotics

Articles

2015 DARPA Robotics Challenge

IEEE article about the 2015 DARPA Robotics Challenge featuring humanoid type ground robots. 

Websites

IEEE Robots Database

        A database that keeps track of robots in the wild.

Papers

Videos

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.

Books

Probabilistic Robotics

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.

Robot Ethics

        Explores the ethics surrounding robots. Authors include two Cal Poly professors Patrick Lin and Keith Abney who teach PHIL 327.

Repositories

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 Gazebo

Awesome repository dedicated to Gazebo related resources.

Awesome Grasping

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.

PythonRobotics

         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.

Robotics Coursework

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.


Courses

Cal Poly Robotics Related Courses

CSC

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.

CPE

CPE 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

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

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.

Online Courses

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.


Organizations

  1. IEEE- Robotics and Automation Society

  1. CVF - Computer Vision Foundation