This repository will get you set up to develop UBCSailbot's software on VS Code. It is based on athackst's vscode_ros2_workspace.
An overview of Sailbot Workspace's features can be found below. See our docs site for how to use these features.
C++ and Python linters and formatters are integrated into Sailbot Workspace:
- ament_flake8
- ament_lint_cmake
- ament_xmllint
- black
- clang-tidy
- isort
The ament linters are configured to be consistent with the ROS style guide.
Dev Containers enable us to use a
Docker container as a fully-featured development environment
containing all our configuration and dependencies.
Our Dev Container configuration can be found in .devcontainer/
.
Workspaces are VS Code instances that contain one or more folders.
Our workspace configuration file can be found at
sailbot.code-workspace
.
Our software spans many repositories: software team repositories.
Multi-root workspaces
make it easy to work with multiple repositories at the same time.
Our roots are defined in the folders
section of our workspace file.
Launch configurations
have been created to debug our software. They are defined in the launch
section of
our workspace file.
Tasks provide an alternative to memorizing the multitude of
CLI commands we use to setup, build, lint, test, and run our software. They are defined in tasks
section of
our workspace file.
Actions
were used to build our Docker containers
and lint and test our code the same way it is done locally in Sailbot Workspace on GitHub.
We use a reusable workflow
to create a single source of truth for our tests across all our repositories.
Our CI can be found in .github/workflows/
.
This repository supports user-specific configuration files. To set this up, see How to use your dotfiles.
Raye was our previous project.
Her software can be run in the raye
branch
following the instructions in How to run Raye's software.
The initial differences between the main
and raye
branches are summarized in
this PR.
Further documentation, including setup and run instructions, can be found on our Docs website.