Schedule
Week | Date | Chapter |
---|---|---|
1 | Tue Aug 27 | Introduction and Design |
Thu Aug 29 | Layout and Prototyping | |
2 | Tue Sep 3 | Safety and Electronics |
Thu Sep 5 | Programming with Toit | |
3 | Tue Sep 10 | Microcontroller Utilities |
Thu Sep 12 | Open-Loop Go to Goal | |
4 | Tue Sep 17 | Motor Control |
Thu Sep 19 | Closed-loop Go To Goal | |
5 | Tue Sep 24 | Embedded Systems |
Thu Sep 26 | Starting with Arduino | |
6 | Tue Oct 1 | Refactoring Arduino Code |
Thu Oct 3 | Arduino Motor Control | |
7 | Tue Oct 8 | Pose Estimation |
Thu Oct 10 | Kinematic Modeling | |
8 | Tue Oct 15 | Fall break |
Thu Oct 17 | The Arduino CLI | |
9 | Tue Oct 22 | Motion Control |
Thu Oct 24 | Position Control | |
10 | Tue Oct 29 | Adding a Compass |
Thu Oct 31 | Sensor Fusion | |
11 | Tue Nov 5 | Work Day |
Thu Nov 7 | Work Day | |
12 | Tue Nov 12 | Robots in our Society |
Thu Nov 14 | Case Study Discussions | |
13 | Tue Nov 19 | Simulation |
Thu Nov 21 | Path Planning | |
14 | Tue Nov 26 | Work Day |
Thu Nov 28 | Thanksgiving | |
15 | Tue Dec 3 | Vision |
Thu Dec 5 | Reading day | |
16 | TBD | Final exam |
Course Topics and Modules
Modules
- Design and Electronics (1,2,3,4)
- Modeling and Feedback Control (6,7,8,9,10,11)
- Maps and Motion Planning (12,13,14)
- Uncertainty (15,16)
- Localization and Mapping (17,18,19)
- Vision and Learning (20,21,22,23,24)
- Societal Impacts (5,25)
Chapter Topic | Interactive | Exercise | |
---|---|---|---|
1 | Introduction and Design | CAD with Onshape | Prototyping |
2 | Design, Assembly, and Electronics | Wokwi Simulator? | Circuits and Wiring |
3 | Arduino and Embedded Systems | Bluetooth LE | Remote Control |
4 | Open-Loop Go to Goal | Go to Goal | Motor Control 1 |
5 | Culture, Automation, and Jobs | Discussions | |
6 | Kinematic Modeling | Kinematics | Motor Control 2 |
7 | Sensors: Wheel Encoders, IMU, and LIDAR | IMU Plotting | Sensor Plotting |
8 | Feedback Control | Proportional Control | Motor Control 3 |
9 | Sense-Plan-Act | Go to Goal | Go to Goal |
10 | Kinematic Trajectory Tracking | Tracking | Tracking |
11 | Bug Algorithms and State Machines | Bug0 | Bug0/1/2 |
12 | Maps and Representations | Occupancy Grid | Occupancy Grid |
13 | Sampling and Graph Search | Graph Search | D* Lite |
14 | Global and Local Path Planning | Dynamic | Reactive Control |
15 | Uncertainty and Error Propagation | Uncertainty | Senor Modeling |
16 | State Estimation and Filters | Circle Drive | Pose Estimation |
17 | Localization | Sensor Fusion | Sensor Fusion |
18 | Iterative Closest Point (ICP) | ICP | ICP |
19 | Simultaneous Localization and Mapping (SLAM) | SLAM | SLAM |
20 | Embedded Vision | SenseCraft | |
21 | Feature Extraction and Optical Flow | Optical Flow | Optical Flow |
22 | Object Detection and Segmentation | Segmentation | Segmentation |
23 | ?Visual SLAM? | ||
24 | Imitation and Reinforcement Learning | ||
25 | Moral Decision Making | ||
26 | Project Workday | ||
27 | Project Workday |
Exercise Notes
Exercises (probably want 14?):
- Open-loop go to goal
- Remote control
- Closed-loop go to goal with wheel encoders (Klancar Example 3.1)
- reference position through intermediate points
- Go to goal and avoid obstacles
- Autonomously explore a space with static obstacles
- Autonomously navigate a course with dynamic obstacles
- Chosen Project
- Society discussion compute kalman matrix values from sensor data least squares derive equations (eg, Kalman filter, equations of motion)
Assignments - tell a complete story - assignment to go to home base from set starting location - assignment to navigate map from unknown starting location - use google sheet to aggregate data collection - gradescope: ask for advice on making the assignment better
- deadman’s switch (stop when no signal; otherwise autonomous)
- Should start with simple blink using chrono (no delay) (or AntiDelay)
- http://sofapirate.github.io/Chrono/
- profile with perfetto and simple C++ class
- Perfetto UI
- TimeProfiler
- Profiler
- Profiling Arduino Code
- Sampling Profiling Arduino Code
- Profiling Arduino Code
- https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/main.cpp
- Does not work with delays
- How to Avoid Using the Delay() Function in Arduino Sketches
- robot might run away
- dead-reckoning
- Land robot in target zone
- motor performance changes as battery drains (feedback control will help)
- automatic emergency breaking
- pid wall following
- bug or wall-following or artificial potential fields
- https://www.cs.cmu.edu/~motionplanning/
- https://www.cs.cmu.edu/~motionplanning/lecture/lecture.html
Assignment: include bug in Arduino code and have them fix it.
loop (repetition) 1. encoders distance 2. add vision 3. implement lqr/mpc (https://github.com/f1tenth/f1tenth_lab9_template)
Interactive Notes
TODO: repetition in topics (eg, control -> planning -> control)
Some inspirations:
- Robotics and Autonomous Systems - MATLAB & Simulink
- Mobile Robot Kinematics Equations - MATLAB & Simulink
- Perform Path Planning Simulation with Mobile Robot - MATLAB & Simulink
- Mapping - MATLAB & Simulink
- Motion Planning with MATLAB - MATLAB & Simulink
- Examples
- Robotics and Autonomous Systems — Examples
- Grid based search
- Lidar to grid map
- terrybrash/dragon-space: Spatial partitioning concepts and implementations.
- Control Architecture Scales (Correll 13.4)
- graph search like A* or D* Lite (https://www.cs.cmu.edu/~motionplanning/lecture/AppH-astar-dstar_howie.pdf)
- map/environment representation (https://www.mathworks.com/help/robotics/ug/perform-path-planning-simulation-with-mobile-robot.html)
Other thoughts
- gaussian equation widget (adjust values and show the graph)
- Maximum Likelihood, Least Squares Estimation, Maximum A Posteriori Estimation
- Least Squares and KKT conditions
- Dual problems: control and estimation
- Least squares as a special case of maximum likelihood estimation on Gaussian models.
- estimation before localization
- if covering linearization, then look at boyds lecture on nonlinear least squares
- boyd lectures have good info on nonlinear control (e.g., directing a nonholonomic robot)
- cirlces and lines path planning (modern robotics)
- Klančar examples (e.g., Kalman)
- Boyd LQR notes
- only teach dynamics when needed; kinematics probably good enough
- reactive, FSMs, hierarchical FSMs, behavior trees, mission planning
- qaudrature encoders
Concept Inventory
Here is the inventory of topics I considered when developing this course.
Category | Concepts | |
---|---|---|
1 | Design | Requirements, Materials, CAD, Fabrication, Mechatronics, Electronics, Safety |
2 | Programming | Embedded Systems, Communication, Real-Time, Debugging, Security, IoT, DSP, |
3 | Math | Linear Algebra, Calculus, Probability, Statistics, Discretization, Optimization |
4 | Modeling | Diagramming, Numerics, Linearization, Kinematics, Dynamics, Simulation, Motion Capture |
5 | Control | Feedback, Motion, Robustness, Adaptivity, Reactive, Behavioral |
6 | Planning | Search, Mapping, Motion, Trajectory |
7 | Vision | Conventional, Learning, Optical Flow |
8 | Uncertainty | Estimation, Localization, Fuzzy Logic, Filtering, Identification, SLAM |
9 | Society | History, Laws, Ethics, Morals, Jobs, Pop-Culture, HRI |