Skip to main content

Getting Started


Welcome Message < Please read before moving on >

What I expect from you:

Trust, transparency, and collaboration are the currency of the modern workplace. No one person could do this on their own. This book comes from our team of developers. They think a lot about what it means to be a great developer and a great teammate, and they wanted to share their thoughts. As you’ll see, they believe life-long learning, humility, courage (including the courage to humbly accept critiques), and openness are every bit as important as being a killer coder. I hope these welcome message and starting words will give you a head start in building a set of not only life but workplace related skills to complement the technical skills you learned in school. The energy and fresh perspective of any computer science undergraduates bring each year is an indispensable asset to the Robotics team. Welcome!

Some words of advice:

  • Ask your teammates questions rather than trying to solve it all by yourself.
  • Check your code review techniques, your code might be better than yesterday, not as good as tomorrow. Code reviews are an integral part of any development process. They are a great way to learn from your teammates and improve your code.
  • Be open to feedback. It is a great way to learn and improve.
  • Not all legacy code needs to be set on fire immediately. Assume the team who wrote it are "smart" people who did things for a reason. Understand the reason before sharpening pitchforks.
  • Make a habit of putting your code where others can (and will) use it.
  • Move roles regularly to understand all the variations out there.

Welcome to the Robotics Programming Team!

This book is a collection of resources and guides to help you get started with the team. It is a work in progress, so please feel free to contribute to it.

Pre-requisites

  • Basic knowledge of Python
  • Basic knowledge of Git
  • Basic knowledge of Linux + Able to dual boot or have a dedicated Linux machine to use (Ubuntu 20.04 LTS or newer)
  • Completed / or currently taking CS1B (C++ Programming - Saddleback College)

Explanation of the pre-requisites:

Python requirements:
- Python is the main programming language used by the team. It is easy to learn and has a lot of libraries that can be used to make your life easier.
- Though you are welcome to use any language you want, previously we used Rust, C++ and even C# from Unity!


Git requirements:
- Git is a version control system that allows you to keep track of your code and collaborate with others.
- Git is a very powerful tool and is used by many companies and organizations. It is a must know skill for any software developer.


Linux requirements:
- Joining the team means you will be using Linux as your main operating system. Which mean you should either dual boot or have a dedicated Linux machine to use.
- Linux will saves you a lot of trouble developing something barebones like Robotics. While on Windows or Mac, you'll find yourself spending a lot of time trying to get things to work.
- You might be thinking, "I don't want to use Linux, I'm used to Windows and Mac". That's fine, but you should still learn Linux. It's a great skill to have and will help you in the future.
- You might get away with using a Virtual Machine, but it's not recommended. You will have a lot of trouble getting things (trust me, many of us tried) to work properly.
- One alternative (if you're using Windows) is that you could opt for WSL2 (Windows Subsystem for Linux). It's a Linux kernel running on Windows. It's not perfect, but it's a good alternative if you don't want to dual boot or have a dedicated Linux machine. Contact Jasper if you need help setting it up.


CS1B requirements:
- From past experience, we've found that students who have taken CS1B have a much easier time getting started with the team, and adapting to the team's workflow/enviroment.
- We are looking for students who has the bare minimum CS foundation, and are willing to learn and are willing to put in the effort to learn.
- This is not to say that you can't join the team if you haven't taken or is currently in CS1B. If you are willing to learn, you are welcome to join the team.

What this book will cover (for programming team members)

General

  • Setting up your development environment (Linux)
  • Team structure (Roles, Responsibilities, etc.)
  • Team workflow (Git, Code Reviews, etc.)
  • Team tools (Github, etc.)

Git

  • Why use Git?
  • Git commands
  • Git workflow
  • Git best practices
  • Git resources

IDEs, Editors, and Terminal

  • How development tools and the command line work
  • IDEs vs Editors
  • Terminal

Languages

  • Python
  • C++

ROS2

  • What is ROS2?
  • ROS2 concepts and why we use them
  • ROS2 architecture
  • Tutorials and resources

Subsystems Programming

  • Drive
  • Arm
  • Autonomy
  • Science
  • Telecom

Setting up your development environment (Linux)

Team structure (Roles, Responsibilities, etc.)

Team workflow (Git, Code Reviews, etc.)

Team tools (Github, etc.)