Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request to merge doc branch to main #4

Open
wants to merge 15 commits into
base: main
Choose a base branch
from
122 changes: 120 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,120 @@
# cabrillo_rov_2024
Cabrillo's robot code for the MATE ROV 2024 Competition
<h1 align="center">cabrillo_rov_2024</h1>
<h3 align="center">Cabrillo's code for the MATE ROV 2024 Competition</h3>

<br>
<p align="center">
Organization GitHub
<br />
<a href="https://github.com/CabrilloRoboticsClub"><strong>CabrilloRoboticsClub »</strong></a>
<br />
<br />
<a href="https://github.com/CabrilloRoboticsClub/setup">Setup</a>
·
<a href="https://github.com/CabrilloRoboticsClub/deck">Deck</a>
·
<a href="https://github.com/CabrilloRoboticsClub/rov">Rov</a>
</p>
</div>
<br>

<details>
<summary>Table of contents</summary>
<ol>
<li><a href="#seahawk-ii">SeaHawk II</a>
<ol>
<li><a href="#ros2">ROS2</a>
<li><a href="#software-goals">Software goals</a>
<li><a href="#sub-teams">Sub-teams</a>
<li><a href="#meet-the-team">Meet the team</a>
<li><a href="#setup-">Setup</a>
<li><a href="#deck-">Deck</a>
<li><a href="#rov-">ROV</a>
</ol>
<li><a href="#getting-started">Getting started</a></li>
<li><a href="#run">Run</a></li>
</ol>
</details>
<br>

---
## SeaHawk II
SeaHawk II is a project designed by a team of community college students from [Cabrillo College](https://www.cabrillo.edu/) based in Aptos, California. SeaHawk II continues Cabrillo Robotics legacy as the team prepares to compete in the 2024 [MATE](https://materovcompetition.org/world-championship) International Competition for the third year in a row. MATE challenges teams worldwide to build a Remotely Operated Vehicle (ROV) that can complete simulated real-world tasks underwater. Teams also demonstrate their robot's functionality and design rationale through marketing, documentation, a presentation, and more. Previously, Cabrillo Robotics has competed in the Pioneer division of the competition and took home first place the last two consecutive years. This year, the team takes on the challenge of developing a ROV to compete in the highest class of the competition: Explore.

<br>

### ROS2
Much its predecessors, [SeaHawk](https://github.com/CabrilloRoboticsClub/cabrillo_rov_2023) and [Hydrozoa](https://github.com/CabrilloRoboticsClub/cabrillo_rov_2022), SeaHawk II uses The Robot Operating System (ROS). Specifically, SeaHawk uses [ROS2](https://docs.ros.org/en/foxy/index.html) for its modularity and features useful in developing software specifically for robotics.

<br>

### Software goals
Cabrillo Robotics has great ambitions improvements and enhancements for software. Goals for the software are to make it user-friendly, easily configurable, and reliable. For ease of use, the software will be have rapid setup on factory hardware, an automatic setup, and safe shutdown. The software should allow the robot to preform photogrammetry (3d model with accurate units), hold its position in the water, and automatically correct for any external forces such as drag and disruptive thrust which cause the robot to drift off course.

<br>

### The team
| Member | Github | Major | Sub-team |
| :--- | :--- | :---- | :--- |
| Orion Ellefson | [@OrionOth](https://github.com/OrionOth) | Computer Science | ⭐️ 🟠 🔵 🟣 ⚪️ |
| CJ Bridgman-Ford | | Computer Engineering | |
| Isaac Eda | [@IzckEda](https://github.com/IzckEda) | Electrical Engineering |🟠 |
| Liam Gilligan | [@liamgilligan](https://github.com/liamgilligan)| CompSci/Math/Physics | 🟡 🔵 ⚪️ |
| Massimo Ginella | [@tinymassi](https://github.com/tinymassi) | Computer Science | 🔴 🟠 🟡 ⚪️ |
| Stephanie L'Heureux | [@steph1111](https://github.com/steph1111) | Software Engineering/Mechatronics| | 🔴 🟡 |
| Michael Matthews | | n/a | |
| Theo Paris | [@theoparis](https://github.com/theoparis) | Computer Science | 🟠 |
| Alexander Rieke | [@alexandramendesss](https://github.com/alexandramendesss) | Computer Engineering | 🟠 🟣 |
| Teo Schnell | | Aerospace Engineering | |
| Michael Tobias | | Electrical Engineering | |
| Kate Wolsfeld | [@Katewolsfeld10](https://github.com/Katewolsfeld10) | | 🟡 |


<br>

### Sub-teams
**⭐️ Lead Software Engineer:** Orion Ellefson

The Cabrillo Robotics software team is divided into sub-teams:
| Sub-team | Members |
| :--- | :--- |
| 🔴 **UX/input** | Michael T, Massimo Ginella, Stephanie L'Heureux |
| 🟠 **Hardware integration** | Orion Ellefson, Theo Paris, Alexander Rieke, Isaac Eda, Michael T, Massimo Ginella|
| 🟡 **Control systems** | Liam Gilligan, Kate Wolsfeld, Michael T, Massimo Ginella, Stephanie L'Heureux |
| 🔵 **Management** | Orion Ellefson, Liam Gilligan |
| 🟣 **Infrastructure** | Orion Ellefson, Alexander Rieke, Michael T |
| ⚪️ **Computer vision and AI** | Orion Ellefson, Liam Gilligan, Massimo Ginella |


<br>


### [Setup »](https://github.com/CabrilloRoboticsClub/setup)
Production & development environment setup, maintenance

<br>

### [Deck »](https://github.com/CabrilloRoboticsClub/deck)
User interface for the SeaHawk ROV

<br>

### [ROV »](https://github.com/CabrilloRoboticsClub/rov)
Codebase of the SeaHawk ROV

<br>

---
## Getting Started
| Operating system | Docs |
| :---: | :--- |
|![windows](https://github.com/CabrilloRoboticsClub/cabrillo_rov_2024/assets/96219204/17ca5854-c89f-4eac-8589-81a138e02a6d) | [ROS2_with_WSL](https://github.com/CabrilloRoboticsClub/cabrillo_rov_2024/tree/doc/doc/System%20setup) |
|![linux svg](https://github.com/CabrilloRoboticsClub/cabrillo_rov_2024/assets/96219204/db8bf42e-1a69-4df4-aa75-152a18949f04)| TODO |
|![apple](https://github.com/CabrilloRoboticsClub/cabrillo_rov_2024/assets/96219204/cb24582c-a7f9-4f2f-b7ec-0c75820b6719)| Rip mac users 😔|


<br>

## Run
FIXME

<br>
110 changes: 110 additions & 0 deletions doc/System setup/ROS2_with_WSL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
### Install Ubuntu and WSL
1. Open `Windows PowerShell` as administrator
2. Install wsl by entering the following command
```shell
wsl --install
```

3. Open the Microsoft store and download the latest version of [Ubuntu](https://apps.microsoft.com/store/detail/ubuntu-22042-lts/9PN20MSR04DW)

### Configure Ubuntu
1. You will be prompted to create a username and password for Ubuntu. This does not need to be the same as what you used for your windows system
2. Run the following commands
```shell
sudo apt update
sudo apt upgrade
sudo apt install xterm
xterm
```
3. Run the `locale` command to ensure you have UTF-8
```shell
locale
```

### SSH
1. Generate an ssh key to connect the Ubuntu VM to your GitHub account
```shell
ssh-keygen
```
2. Copy the generated ssh key
```shell
cat ~/.ssh/id_rsa.pub
```
3. Add the SSH key to GitHub
1. Log into Github and open your settings.
2. Scroll to `🔑 SSH and GPG keys`.
3. Click the `New SSH key` button located in the top right corner.
4. Choose a name for the key (something like ubuntu so you remember what it was for)
5. Paste the key from step 2 into the `Key` box
6. Save the key by clicking `Add SSH key`
4. Integrate VS code with the SSH key
1. Open [Visual Studio Code](https://code.visualstudio.com/)
2. Click on `extensions` and search for `remote`
3. Install [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) and [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) from Microsoft
4. A new icon will appear on the left in VS code. Click it to open `Remote Explore`
5. At the top of `Remote Explore` there will be a dropdown menu. Click `WSL Targets`. Then the `+` button and whatever version of Ubuntu you installed

### Set up sources
*The following documentation was used for this part of the setup: [Setup Sources)](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html#setup-sources)*
1. First ensure that the Ubuntu Universe repository is enabled
```shell
sudo apt install software-properties-common
sudo add-apt-repository universe
```
2. Now add the ROS 2 GPG key with apt
```shell
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
```
3. Then add the repository to your sources list
```shell
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
```

### Install ROS2
*The following documentation was useful for this part of the setup: [Ubuntu (Debian packages)](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html#id4)*
1. Open a terminal in VS code
2. Install desktop
```shell
sudo apt install ros-humble-desktop
```
3. Install development tools
```shell
sudo apt install ros-dev-tools
```
4. FIXME
```shell
git submodule init
git submodule update
```
5. Source the following file
```shell
source /opt/ros/humble/setup.bash
```
5. `rosdep` is a command-line tool for installing system dependencies
```shell
sudo rosdep init
rosdep update
```

### Install package specific to our project
*Note: This is for [cabrillo_rov_2023](https://github.com/CabrilloRoboticsClub/cabrillo_rov_2023)*
1. FIXME
```shell
sudo apt install libavdevice-dev libavformat-dev libavcodec-dev libavutil-dev libswscale-dev
```
2. Install the packages required for the cameras
```shell
sudo apt install ros-humble-v4l2-camera ros-humble-image-transport-plugins v4l-utils
sudo apt install ros-humble-camera-calibration
```
3. Make the file
```make
make
make clean
```
4. Source the setup files
```shell
source /opt/ros/humble/setup.bash
```