Skip to content

sahicken/uav

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 

Repository files navigation

Introduction

This is the official repository for Fullerton College's Applied Engineering Club (AEC) UAV Project (2024). Welcome applied engineers!

What's the UAV Project?

The UAV Project is Fullerton College's entry into a design, simulation, and flight competition with other schools. AEC members have decided to submit a VTOL (vertical take off landing) Unmanned Aircraft Vehicle (UAV).

Why should I Participate?

Participating in clubs gives students the experience needed to build resumes and stand out from the competition when applying for universities or jobs. Additionally it builds lifelong skills and friends that are intrinsically valuable.

How do I Get More Involved?

Due to the public nature of the internet, this information is limited to Fullerton College students only. Team Leaders for the UAV Project should be contacted for details.

Where Can I Learn More?

The club discord and in person primarily. See answer above.

Getting Started

This section is designed to simplify onboarding. Please be aware of the structure of Project "Teams" as well, covered shortly.

Software Team

Working on the Software Team effectively requires extensive knowledge of multiple software stacks that have not entirley been listed, let alone documented. I will continue to update this documenation. Please refer to Discord for more up-to-date info.

Project Docs

Markdown is the file format of choice for UAV Project Docs because it's easy-to-learn and well-supported on Github. Please use pandoc docs/*.md -o README.md before submitting a pull request if it modifies any files in docs/. Links to high-quality resources are located throughout this document, including begineer resources such as the Github basics. Please use the links!

Dependencies

QGroundControl is current mission planning software used by this project. Without hardware, you must use some kind of simulator. Additionally, even with working hardware, running a fully constructed drone during development runs the risk of damaging expensive equipment. I recommend running the simulator with HEADLESS=1 (no gui) preprended to whatever make build you choose unless serious visualization is necessary, particularly if running non-natively. The GUI version of the simulator requires significant graphical horsepower using OpenGL.

Most Linux distros running a desktop environment should work for beginning the UAV Project's PX4 simulation, however Fedora or Ubuntu will be assumed. On Windows installing virtualization software such as VMware or Virtualbox is necessary. WSL2 does not yet work with these instructions! 12GB RAM or more is highly recommended for virtualization. To reduce RAM requirements consider installing either Lubuntu or Xubuntu.

After installing a supported distro, you can install docker using these instructions for Fedora or the Ubuntu instructions here. On Fedora you must run sudo systemctl start docker after every reboot or instead just configure docker to start upon boot. This is unnecessary for Ubuntu.

3D acceleration is unsupported on Docker for the UAV Project. You will need to setup PX4 Autopilot to run Gazebo (Classic) under OpenGL by running Ubuntu 20.04 or higher natively. This is especially important for simulating Target Detection and Package Dropoff (Challenge). Minimal documentation has been created for many of the later challenges.

For a more accurate simulation, use a Raspberry Pi with Ubuntu running ROS during the simulation. The likely goal here is to have camera input from ROS 2 affect behavior on the PX4 Simulator over PX4's best supported middleware. This is necessary to enable Obstacle Avoidance.

Using GitHub

You should get more familiar with git. Atlassian has a solid cheat sheet..

Teams

This following sections more clearly define the UAV Project Teams and the overall internal project structure. We have been divided into 2 teams--Software and Mechanical. Be mindful of the Project organization and goals. In order to effectively manage this project we will want to be informed properly. Please stay in touch with your team leaders and try not to overload any single AEC member.

Software Team

In this section we begin to cover Intermediate topics of importance for Software Team members. All software team members and team leaders should be aware of what is documented here.

Python 3

Python 3 will likely be used throughout our project. Check out the official docs.

QGroundControl (QGC) Mission Planner

QGroundControl or simply QGC is a frontend for mission planning and partially visualizing simulations. AppImage installation is recommended for Ubuntu and Flatpak for Fedora.

QGC expects either real hardware or a software simulator perform non-trivial functionality of the program (e.g. sensors, running a mission). In order to work effectively on the Software Team you should be become more familiar with QGC by at least running a simple simulation.

Running PX4 Autopilot in Gazebo Classic Simulator (no gui, linux kernel)

docker run -it --net=host -v ~/src/PX4-Autopilot:/src/PX4-Autopilot/:rw --name=sim px4io/px4-dev-simulation-focal:2023-06-26 bash
cd src/
git clone https://github.com/PX4/PX4-Autopilot.git
cd PX4-Autopilot/
HEADLESS=1 make px4_sitl gazebo-classic_standard_vtol

A Little More about Docker

Only the first command in the above codeblock is outside the container. Leave the container by running exit. Note that docker run creates a new container. To execute an existing container use docker exec. Also, stopped containers require running docker start. Combining these on Fedora (skip first command for Ubuntu/Debian) a workflow might look something more like this.

sudo systemctl start docker
docker start sim
docker exec -it sim bash
cd src/PX4-Autopilot/
HEADLESS=1 make px4_sitl gazebo-classic_standard_vtol
exit

QGC, Deeper Integration with ROS

This section is currently a placeholder.

Mechanical Team

The mechanical team works with the physical components, electronics, and 3D design of our VTOL UAV, etc.

Here's our current model

We may or may not be covering mission planning on this team.

This is our components list.

We will be running PX4 Autopilot on the Pixhawk (with missions uploaded at the least).

It will be connected to a Raspberry Pi running ROS with ROS nodes for Obstacle Avoidance and Target Detection using OpenCV as a companion computer.

Competition

The UAV competition is broken into 3 submissions/due dates.

Design

May 2024

Simulation

May 2024

Gazebo and Gazebo Classic are the 2 main simulators under consideration. Gazebo Classic runs on older Ubuntu (such as 20.04) and Gazebo on newer (22.04).

Flight

June 2024, both manned and unmanned (3 challenges).

Challenges

The UAV Competion has 3 challenges (1 - easiest to 3 - hardest)

  1. Waypoint Navigation
  2. Obstacle Avoidance
  3. Target Detection and Package Dropoff

We will need to complete these Unmanned and Manned.

Waypoint Navigation

This is relatively straightforward. Check out QGS.

Obstacle Avoidance

check out its github

We will need to figure out a way to commuicate a 3D Point Cloud (i.e. sensor_msgs::PointCloud2) utilizing our sensors (a wide angle camera) and ROS nodes. One idea is Rviz. On their site you can search nodes.

ROS2 XRCE-DDS BRIDGE PX4

We will need to connect the PX4 to our raspberry pi running ROS. Work should be started on simulating PX4 on our raspberry pi and communicating over the bridge. A significant portion of club resources should be delegated to research a solution to the problem described in the above section. # Target Detection and Package Dropoff

This will require OpenCV from the rpi camera module (wide angle plus lens).

Offboard mode is under consideration.

This is a starting point

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published