This is the official repository for Fullerton College's Applied Engineering Club (AEC) UAV Project (2024). Welcome applied engineers!
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).
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.
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.
The club discord and in person primarily. See answer above.
This section is designed to simplify onboarding. Please be aware of the structure of Project "Teams" as well, covered shortly.
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.
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!
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.
You should get more familiar with git. Atlassian has a solid cheat sheet..
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.
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 will likely be used throughout our project. Check out the official docs.
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.
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
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
This section is currently a placeholder.
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.
The UAV competition is broken into 3 submissions/due dates.
May 2024
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).
June 2024, both manned and unmanned (3 challenges).
The UAV Competion has 3 challenges (1 - easiest to 3 - hardest)
- Waypoint Navigation
- Obstacle Avoidance
- Target Detection and Package Dropoff
We will need to complete these Unmanned and Manned.
This is relatively straightforward. Check out QGS.
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.
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.