This page aims to provide direction and resources on where to go to learn more about various areas of NUbots. There is a mixture of resources available, including external resources and material prepared by NUbots team members.
NUbots workshops may be run live, or you can work through them yourself in your own time.
The majority of resources on this page are free. Some LinkedIn Learning videos are linked here - UoN students can get access to LinkedIn Learning for free.
General
Git
The NUbots team uses Git and GitHub in its development workflow. Almost any project done on the NUbots team involves using Git and GitHub.
Reading:
- Git and PR Workflow [NUbook]
- GitHub Commands Cheat Sheet [GitHub]
- GitHub Official Documentation [GitHub]
Videos:
- Git, Git Tools and PR Workflow [YouTube]
Tutorials and Miscellaneous Content:
- Git and the PR workflow [NUbots Workshop]
- GitHub Skills [GitHub]
- GitHub for Education [GitHub] Free resources and content for students and academics
C++
The C++ programming language is used in the main robot codebase. Modern C++ and advanced C++ concepts are used in the codebase.
Reading:
Videos:
- C++ Basics [LinkedIn Learning]
- C++ Advanced Topics [LinkedIn Learning]
- CppCon (general interest C++ topics) [YouTube]
Tutorials:
- Modern C++ [NUbots Workshop]
NUClear
The NUbots robot code uses the NUClear framework. Anyone developing robot code needs to learn how to work with NUClear. NUClear was created at NUbots as part of a Software Engineering FYP.
Reading:
Videos:
- NUClear Basic Concepts [YouTube]
- NUClear Example [YouTube]
References:
- NUClear [GitHub]
- NUClear Roles [GitHub]
- NUClearNet [GitHub]
- NUClearExample [GitHub]
Robot Code
Reading:
- Getting Started [NUbook]
- System Overview [NUbook]
- Troubleshooting [NUbook]
- Glossary [NUbook]
References:
- Robot Code [GitHub]
RoboCup Competition
Reading:
- RoboCup Resources [NUbook]
Videos:
- Referee Training Video [YouTube]
- RoboCupSoccer Overview [YouTube]
Using Webots
The Webots simulator is used in some RoboCup competitions and is the simulator we use to aid in development of the robots.
Reading:
References:
- NUWebots [GitHub]
- Webots 2022b [GitHub]
- Humanoid Leage Virtual Season Webots Repository [GitHub]
Mathematics
Mathematics is an integral part of any robotics system.
Reading:
Videos:
References:
Python
Python is used to create tools in the main robot codebase.
Videos:
- Python Essential Training [LinkedIn Learning]
Machine Learning
Primarily used in the vision system, but could be used in any system.
Reading:
Videos:
- 3Blue1Brown: Neural Networks [YouTube]
- DeepLizard: Machine Learning & Deep Learning Fundamentals [YouTube]
References:
Lab Induction
The lab induction must be completed before getting swipe card access to the lab.
Reading:
- Lab Induction [NUbook]
Tutorials:
- NUbots lab inductions are run for new team members after they join.
Behaviour
DevOps and Quality Assurance
The Build System
Reading:
- DevOps Cheatsheet [GitHub]
- Build System [NUbook]
- Configuration and Script System [NUbook]
- Modern CMake
- ArchWiki
- Docker Deep Dive [Book]
Tutorials:
References:
DevTools
Web Development (External Resources)
Web Development is used in the creation of NUbook, which uses JavaScript, Gatsby and Tailwind, and NUsight, which uses TypeScript, React and MobX. By working on these systems and going through these resources, you will gain valuable real world skill and experience that is often sought out in industry.
Videos:
Tutorials:
References:
Web Development (NUbots Resources)
Reading:
- NUsight [NUbook]
Videos:
- NUsight [Virtual RoboCup Humanoid Open Workshops]
References:
Documentation
Since NUbots is a student organisation, high turnover is unavoidable. To help combat the issues this creates, good documentation is key to the success of the team. This includes low level documentation in the form of code comments and high level documentation in the form of NUbook pages.
Reading:
Tutorials:
- Google Technical Writing Course - free, in-class sessions are open to the public!
Hardware
Soccer Robot
Reading:
- Hardware Overview and Specifications [NUbook]
- Input [NUbook]
- Flashing a Robot [NUbook]
References:
- NUware [GitHub]
Localisation and Odometry
Particle Filters
Videos:
- Introduction to Autonomous Navigation [YouTube]
- Understanding the Particle Filter [YouTube]
- Monte Carlo Localisation and Particle Filters [YouTube]
Motion
Vision
General
Reading:
- Vision [NUbook]
- Maintaining the Vision Subsystem [NUbook]
Videos:
- 3D Vision [Virtual RoboCup Humanoid Open Workshops]
Cameras
Reading:
- Hardware Overview: Cameras [NUbook]
- Input: Cameras [NUbook]
- Camera Calibration Guide [NUbook]