Binghamton University Rover Team
Software
Software
  • Software Documentation
  • Overview
    • Architecture
    • Data format
    • Network
    • Our GitHub organization
  • Onboarding course
    • Git course
      • What is Git?
      • What is GitHub?
      • Merge Conflicts
      • Making your first commit
      • Adding more commits
      • Working with branches
      • Using GitHub
    • Arduino Course
    • Flutter course
    • Firmware Networking
    • Software Networking
  • Writing Code
    • Code conventions (Dart)
    • Code conventions (C++)
    • Documenting code
    • Advanced Git/GitHub
      • CI/CD
      • Git Submodules
      • Avoiding merge conflicts
      • Common problems
      • Restoring your changes
      • Squashing
    • Reviewing Code (admins)
  • Network
    • Protobuf
      • API Conventions
      • Working with Proto files
      • Generating code
      • Debugging Protobuf
    • UDP
      • Setting up the network
      • Troubleshooting
    • Serial
      • Troubleshooting
  • The Firmware
    • Introduction
    • Setting up your IDE
    • Firmware Utilities
    • TMC Motor Drivers
    • The different firmware
      • Arm
      • Science
      • Drive
      • Electrical
      • Antenna
  • The Software
    • Introduction
    • Pi Setup
      • UDev Rules
      • Configuring systemd
    • Burt Network
    • The different software
      • Subsystems
      • Video
        • Multithreading
        • OpenCV streaming
        • RealSense Streaming
        • Lidar Streaming
      • Autonomy
      • Computer Vision
      • Base Station
  • Dashboard
    • Introduction
    • MVVM Architecture
    • Design Philosophies
  • Appendix
    • Team Documentation
    • Open Source Contributions
    • Alternative Design Choices
      • ROS for Networking
      • Web Server on the Rover
      • C++ for Software
      • Python for Software
      • CAN Bus for firmware
  • Legacy docs
    • CAN bus
      • Setting up CAN on a Pi
      • Debugging CAN
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub

Software Documentation

NextArchitecture

Last updated 5 months ago

Was this helpful?

These pages document the Software Team's layout, structure, and best practices. Specifically, these pages will walk you through the structure of the rover, where to find code, and where to find documentation for the code.

These docs describe the high-level design and do not describe the exact API, functions, or lines of code. Code should be documented in-source using comments that start with /// , which will then be picked up by our tooling ( and ) and extracted elsewhere. See the page on for more information.

Our rover is a very complex system, which means our code has the complexity to match. Complexity means layers of abstraction and delegation of responsibilities. Even if we could have a single million-line file, our code needs to run on multiple devices in different environments, so we need to choose the best platform, language, framework, and tools for each scenario.

The Overview section provides high-level details of the entire codebase, with later sections providing more details. Please read the entire Overview section to learn about the different parts of the rover, and, using that information, read through as much of the relevant docs for your tasks as possible. This will help give you a better context when writing code and help you ask more focused questions that go beyond "how does this work?"

Doxygen
DartDocs
code documentation