The Qt and OpenCV for Robotics module of CRSN-151C will introduce you to the basics of various technologies, such as the UNIX CLI, Git, Arduino, Qt, and OpenCV to work on robotics-related projects, with the end goal of having the confidence to work on your own projects and contribute to the Systems subteam on Slugbotics (UCSC’s robotics team). Throughout the course, you will learn several important and useful programming skills, such as command-line usage, version control, embedded programming, GUI programming, and basic usage of OpenCV.
Tuesdays and Thursdays @ 3:20 - 4:55:
Meeting ID: REDACTED (Also found in the Zoom Section of Canvas)
Passcode: REDACTED
Become comfortable with contributing to software as part of a professional team, in Slugbotics as well as other companies.
Qt + GUI development basics necessary to construct high level GUI based applications.
Qt Networking functionality necessary for communication design.
Learn how to integrate OpenCV into Qt and utilize both frameworks together.
Understand and utilize C++ features that assist within graphical development.
Working knowledge of at least one object-oriented programming language
Knowledge of C and C++ strongly recommended
These programming languages will be used but not covered directly
It is OK to enroll if you do not know these, but expect to spend significant time self-learning the languages + participating in the Slack to succeed in the course.
All students participating in the Graphical Applications section of CRSN 151C must possess the following pieces of equipment. Note: a microphone and/or webcam are highly recommended but not required.
A computer meeting the following requirements:
BSOE Laptop Requirements
8GB RAM Minimum (16GB recommended)
250GB Hard Disk or SSD
2Ghz or greater, dual core or greater x86-64 processor
Able to run virtualization software
For Intel, VT-d is accessible and enabled in the BIOS
For AMD, AMD-V is accessible and enabled in the BIOS
Administrator access
Note: Please ensure your hardware is running an x86-64 processor. ARM devices, such as Macs with Apple Silicon, Raspberry Pi, or Pine64 devices will not be able to run the provided virtual machine software.
This Graphical Applications section of CRSN-151C will use the following pieces of software. All of the software will be provided by Slugbotics, except for Zoom and Canvas which are provided by UCSC. A virtual machine (VM) will be provided to you which contains most of the necessary development tools used in the course. All software for the course is available free of charge.
VMWare: Virtual machine software used to run a copy of Ubuntu, with all the necessary software and build toolchains included
Ubuntu 20.04 LTS (incl. In VM): A distribution of GNU/Linux which will be ran within the provided virtual machine.
Qt Creator (incl. In VM): IDE (integrated development environment) used to develop Qt applications
OpenCV (incl. In VM): A library used to develop computer vision applications
Zoom: Video conferencing software used to host online lectures and office hours
Canvas: Academic organization app used by the entire UC system
Slack: Communication and collaboration application used by Slugbotics
CRSN-151C is currently taught remotely via zoom due to the COVID-19 epidemic. Zoom sessions are held every Tuesday and Thursday from 3:20pm to 4:55pm. Tuesday's sessions will be used to cover new content relating to the programming topics listed below. Any time remaining after each lecture will be used to answer questions about class material or about projects/prelabs. Thursday sessions will be used as office hours, to enable further Q&A and discussion. Attendance to the zoom meetings is extremely useful and highly recommended, but not mandatory. All lectures will be recorded and provided via Canvas.
The course will be broken into several components:
Projects
Projects will make up the vast majority of your grade, and comprises several long tutorial-style projects where you will learn concepts by programming alongside the mentors on a baseline project before then tackling additional tasks on your own. The goal of these projects is to give you a thorough understanding of the course material, and help you to learn how to implement these systems on your own.
Notebook
During the course, you will maintain an Engineering Notebook with the intention of recording your notes from lectures, as well as writing out your thought process while designing and implementing each of your projects. The Engineering Notebook helps you to keep your thoughts organized and demonstrate your learning in the course. The Notebook will be submitted in conjunction with project submissions and formulates a significant portion of the project grade.
Specifics about the Engineering Notebook will be covered during the General meeting of the course on October 6th. A detailed rubric and description of how to format your engineering notebook can be found in the following document.
Prelab Quizzes
Several small prelab assignments will be offered during the course. Some prelabs will be simple quizzes designed to ensure you understand some basic concepts before each new unit is covered in class. Others will be tinier assignments to ensure timely completion of setup and foundational content, such as setting up the Virtual Machine.
Each prelab will be offered before an upcoming unit, and are due before class begins on the specified Tuesday. There are infinite attempts on each quiz before the due date, but late quizzes and prelabs will not be graded.
The grade breakdown for the course is as follows:
Projects and notebook checks - 60%
Quizzes/Prelabs - 20%
Participation - 20%
These percentages directly correspond to a 1000 point system. So for completing the class, the points breakdown the same:
Projects and notebook checks - 600 points
Quizzes and Prelab - 200 points
Participation - 200 points
Late Policy:
All Projects have a final due date of December 14th @7:00 pm. However, by turning them in on the due date specified in canvas, you gain the ability to improve both the completed assignment and the upcoming assignments based on timely feedback. If all assignments are put off until the last few weeks, you will not have time to complete them all and feedback will come too late for any improvement to occur. Time management is important, and the due dates of each assignment has been specifically crafted such that you have time to work on each and improve without needing to cram.
The prelabs and quizzes will not be accepted late and are due before the start of class of that specific module.
Week 1:
October 6th (General Meeting involving all sections)
October 8th: UNIX shell basics + Git VCS lecture
Project 0 Prelab assigned, due October 15th @ 3:20 pm
Week 2: Notebooks and VM Setup
Notebook standards for software design
VM usage basics and an introduction to tooling, Linux basics
Project 0 introduced, due one week after
Week 3-4: Qt Intro (October 18 - October 31)
Week 3 (October 18- 24)
Qt basics slides
Prelab 1 (VM Setup) due before class Tuesday, October 20th.
Project 0 due Sunday October 18th@ 11:59 PM
Project 1 released, due in 2 weeks.
Week 4 (October 25-31)
Introduce Project 1 with examples and demonstrate working versions.
Qt Widget Design
Week 5-7: Networking & Qt Networking (November 1 - 21)
Week 5 (November 1 - 7)
Networking Slides + Case Study of BIG SLAB Networking
Prelab 2/3 + Quiz (Networking Terms and Topics) due before class Tuesday, November 3
Project 2 Released and given 3 weeks
Week 6 (November 8- 14)
Project 2 Introduction
Qt networking with UDP
Qt networking with TDP
Project 1 Due Sunday November 8th @ 11:59 PM
Week 7 (November 15-21)
Project 2 Discussion
Approaching designing with UDP/broadcast
Week 8-9: OpenCV Introduction (November 22 - December 5)
Week 8 (November 22 - 28)
Introduce basic concepts, programming and mathematical (simple), of utilizing OpenCV
Prelab 3 (OpenCV) due before class Tuesday, November 24.
Project 2 Due Sunday November 29th @ 11:59 PM
Project 3 Released and due at ends of finals week
Week 9 (November 29 - December 5)
Project 3 Introduction
Discuss how Qt and OpenCV work together and multithreading
Week 10: OpenCV Conclusion + All Questions Answered (December 6 - 12)
Project 3 Due at End of Finals Window (December 14th, 4:00 - 7:00 p.m)
Any late projects due End of Finals Window (December 14th, 4:00 - 7:00 p.m)
Week 10 alternate: Arduino & Embedded Programming
Short lecture on Arduino and embedded programming, if time permits
No associated project with this unit due to the COVID-19 epidemic