Urban Gust Optimized Uav
Journal
5/19: Set up Notion HQ databases and layout - Julian
Set up the project on Notion page, sharing permissions with Ayden, and linking important documents to the main page. Additionally, I created a work log system to easily track the tasks we're completing.
Total Time Spent: 1.5hrs
5/24: Set up Notion BOM Page and Drafted BOM - Julian and Ayden
Met up in real life to create the Notion BOM page and draft a full BOM for our drone. We also used some time to fully decide on an area of focus (environmental improvement). We researched viable battery, motor, and flight controller + ESC stacks to pick the best combination of electronics for our desired design. Julian and I also did research into what computing unit we wanted to use for the autonomous functions of the drone, ultimately deciding on the Hailo 8 AI Hat + Raspberry Pi 5 over the Jetson Nano for budgetary reasons. We used websites like oscarliang.com and other FPV sites to get recommmendations for the best electronics to buy for power effeciency, companion computer features, and wiring complexity while staying within a reasonable budget.
Total Time Spent: 6.0hrs
5/26: Set up a notion page to host our lucidchart diagrams and started wiring diagram - Ayden
I signed up for lucidchart and created a Notion page to host our lucidchart digarams with the intent that we would be using lucidchart for our software control flow diagrams in the near future. Additionally, I started working on the wiring diagram, where I mainly imported the image files of the parts I needed to include. I also set up a NoodleTools research project to centralize our research and simplify APA exporting.
Total Time Spent: 2.0hrs
5/27: Worked on wiring diagram and CAD - Julian and Ayden
Julian and I met today on discord to work on the wiring diagram and frame CAD. Julian has made good progress with the master sketch and drone arm CAD while I have almost finished the wiring diagram, only missing UART connections to the Receiver, Raspberry Pi 5, and M10 MicroGPS from the Flight Controller. Tomorrow we're hoping to finish the wiring diagram and continue to make CAD progress.
Drone Mastersketch:
Arm CAD:
Drone Assembly:
Wiring Diagram:
Total Time Spent: 3.0hrs
5/28: Finished wiring diagram and re-designed the CAD of the drone – Julian and Ayden
After I quickly finished the wiring diagram, Julian designed the Pi Camera Mounting System, developing two different versions. Additionally, we decided that a redesign of the drone's frame was in order, as the Lipo Batteries would not fit on the bottom stage of the central hub. Julian changed the master sketch to fix the issue. I also spent a lot of time transferring our Notion worklog to a GitHub Journal. Tomorrow, we're hoping to continue progressing on the CAD and start researching what Python libraries we are going to have to learn for the project.
Updated Mastersketch:
Pi Camera V3 and AI Cam Mount V1:
Pi Camera V3 and AI Cam Mount V2:
Updated Drone Assembly:
Total Time Spent: 3.0 hrs
5/30: Researched deep-learning frameworks, Pi5 to FC communication (MAVLink) - Ayden
Today I made a document that hosted all of my research regarding the pros and cons of using Tensorflow or PyTorch with the Hailo AI Hat and Raspberry Pi 5. I also looked into how MAVLink works and how to calibrate a Raspberry Pi to setup MAVLink (how the companion computer talks to the flight controller).
Research displayed on Notion
Total Time Spent: 2.5 hrs
6/18: Researched about an additional problem that we could tackle with the drone. Today I fully went in depth into a seperate problem that could be solved via drone that might have a greater effect than our current idea - Ayden
Total Time Spent: 2.5 hrs
6/25 + 6/26: Project Development - Ayden and Julian
On 6/25 we came up with another project idea seperate from the original LitterLift idea that we previously believed was the route we would take. The project we developed involved more of a physics and control theory sided background — something that we were interested in doing. The project is about optimizing quadcopter efficiency in urban wind fields.
On 6/26 we found and annotated 8 documents, putting all important research into a categorized summary document on notion. We also decided that this concept is what we'd pursue.
Total Time Spent: 7.0 hrs (3.5hrs each)
6/27: Reviewed literature on variable hedral angle quadrotors and relevant control systems - Ayden and Julian
On 6/27 we reviewed 10+ journal articles relating to the project and began assembling a plan for both the hardware and software systems. On the software side of the equation, we discussed incorporating a nonlinear control paradigm augmented by a reinforcement learning model to determine the PID or LQR gains. Below is an image of the paper we used to plan out the hardware and software routes.
Total Time Spent: 6.0 hrs (3hrs each)
6/30: Continued reading 2 research papers while drafting a control flow diagram - Ayden and Julian
Julian read and annotated 2 more research paperand added all relevant infromation to the categorized summary document on Notion. I (Ayden) started to mock up a sample black box model for the drone.
**Total Time Spent: 2.0 hrs (1.0hrs each)
7/3: Finished a draft of the control flow diagram - Ayden
The changes made were that I filled in the Raspberry Pi box with what I think is to be the ideal parallel-cascade controller. I made some research notes to provide some justification on the general structure of the controller. Lastly, I researched a potential servo option (Dynamixel XL330-M288T) for the differential arm system.
Research notes on Dynamixel and Electronics:
Research notes on control architecture:
Total Time Spent: 2.5 hrs
7/12: Re-edited BOM, Wiring Schematic, and Control Flow - Ayden
- Returned from vacation (gone since 7/3)'
I removed parts specific to the LitterDrone project idea and replaced them with parts that we would need for the gust rejection drone. The list of parts included the Dynamixel XL330-M288T, and the Pixhawk 6C Mini. Additionally, I edited the wiring schematic to match this new configuration, updating it from the previous LitterDrone oriented configuration. Finally, I made small bug fixes to the control flow diagram as there was a mistake.
BOM:
Wiring Schematic:
Control Flow Diagram:
Total Time Spent: 4.0 hrs
7/13: Added the wind sensor subsystem to the BOM and wiring schematic - Ayden
I did some research on types of wind sensors and what would be better for specific tests. I considered a variety of factors including cost, effectiveness indoors with turbulent wind, outdoor resistance, durability, etc. I found that the type of sensor that matched our budget (I excluded ultrasonic anemometers) would be the hot wire anemometer. I ultimately picked this over the pitot tube due to physical constraints, effectiveness with the type of gusts we were studying, and overall testing environment. After this, I researched potential options for a hot wire anemometer, eventually coming across Modern Device's Rev P. I liked this product because it wasn't super large, and detects winds up to 150 mph with reasonable accuracy. Unfortunately since it was made to work with Arduino and needs 12V, I had to add a BEC and voltage step up converter. I also replaced the GPS with an optical flow sensor because I believe that our testing will be indoors (in GPS limited areas).
Updated BOM:
Updated Wiring Schematic:
Research on Wind Sensors:
Total Time Spent: 4.0 hrs
7/18: Made a research breakdown, discussed differential arm options, and installed MATLAB - Ayden and Julian
We got together to discuss our full research question, and hypothesis. We also discussed materials and cost for prototyping our differential arm design. Finally, we obtained a MATLAB license and installed the application. We are going to order the parts needed from McMaster-Carr - Our next steps seem to be learning MATLAB and prototyping the differential arm, which would lead into finishing the drone frame
CAD:
Section View:
Research Breakdown:
Total Time Spent: 4.0 hrs (2.0 hrs each)
7/24: Matlab introduction, researched compute resource allocation with current hardware - Ayden
Our main goal, which has taken significant time away from actually working on the done is learning MATLAB (and after that learning the math for control theory). Additionally, I have been putting about 30 minutes a day into learning C++ in the event we use it when editing the Ardupilot software for our testing routines. Today, I mainly worked on doing research on how to computing power should be allocated, and how I can log certain data points. I found that the Raspberry Pi 5 (Linux) has a hard time with real-time processes (control loops) which is not ideal since I planned to use it for running the parallel-cascade controller. Thankfully, the Pixhawk 6C Mini has an STM microcontroller that can run the control loops, while the Raspberry Pi does the logging, and RL morphing. I also started doing a little bit of code for the logging and MAVLink portion of the drone.
Total Time Spent: 2.5 hrs
7/25 + 7/26: Learned mavlink, re-learned csv, and developed mav_listener.py and logger.py files - Ayden
Today I worked on learning and developing the logic to read sensor data from the Pixhawk (which is running ardupilot) on the Raspberry Pi via Mavlink. To do this, I created a listener file that reads the output of the Pixhawk and listens
for messages that include the sensor data, updating the corresponding variables. I developed this structure by defining functions that are called in logger.py to initalize the mavlink connection, and update the data. The logger.py file saves the respective sensor outputs in seperate CSV files. Finally, I edited the wiring diagram to account for the wind sensor being directly connected to the Pixhawk 6C mini instead of the raspberry pi
Excerpt of mav_listener.py
Excerpt of logger.py
Updated Wiring Diagram
Total Time Spent: 4.0 hrs (3.0 hrs - code + 1.0 hr wiring diagram)
7/27: Learned fundamentals of MATLAB (syntax, files, etc.) and Reinforcement Learning - Ayden
Today I watched three videos including a two-hour long MATLAB tutorial, Reinforcement Learning introduction, and the second video in the Quadcopter MATLAB series. Within the two-hour MATLAB tutorial I learned the basic syntax of the program and how to do matrix operations, plotting, loops, etc. I applied the skills through small example projects. Afterwards, I watched the first introductory video in the MATLAB tech talk series on reinforcement learning, which was very informational and contributed to an improved understanding. After creating sections in the Notion where I put my notes for each video, I created a resource bank with various links to playlists and videos on Youtube for concepts we will eventually have to learn for the project. Finally, I made quick edits to the code to increase readibility. Tomorrow, I plan to tackle learning basic Simulink (with PIDs), check up with Julian on our McMasterCarr order, and diving into more applicable design choices regarding reinforcement learning (continous vs discrete RL).
Reinforcement Learning Notes:
MATLAB Notes
Total Time Spent: 5.0 hrs