Team Status Report for 12/07/2024

The most significant risks that could jeopardize the success of the project are the PID controller not working and various filtering issues. Currently we are running into issues with the PID not able to get the drone to hover exactly level, instead it is drifting off to the side. We are managing these risks by working on the drone itself as diligently as possible to showcase the controller working to some degree.  We have enough to showcase at the final show, but our contingency plan is to make the drone manually controlled.

The major change that we have made to this system is using a manually controlled drone to showcase the PID controller. This change was necessary as we cannot immediately get the lawnmower operation working even though we have the algorithm ready. Our new schedule is having everything done by Wednesday.

Unit tests for CV:
* Yolov8n is able to get camera feed
* Yolov8n is able to detect any object (can be wrong)
* Yolov8n is able to detect any object correctly
* Yolov8n is able to detect object we want to detect
* Yolov8n is able to detect object image coordinates correctly

Unit Tests for Tracking:
* Tracking is able to receive image input
* Tracking is able to receive image coordinate for bbox
* Tracking is able to parse the inputs into ints
* Tracking is able to ouptut the distance vectors from the object detect
* Tracking is able to compute the direction

Unit Test for Radio:
* Radio is able to receive bytes
* Radio is able to send bytes
* Radio range testing

Unit Tests for Drone IMU:
* Drone IMU calibaration
* Drone IMU Kalaman filter outputs correct values
* Drone IMU Kalaman filter with IMU reading cause no drift
* Drone IMU maintains correct readins after vigorus movements
* Drone controlls operating at 200+Hz

Unit Tests for Drone PID:
* Drone PID controller is able to get set point error
* Drone PID controller is able to utilize kalman filter data to calculate D
* Drone PID controller is able to calculate error required for I value
* Drone PID controller shows the drone trying to compensent with only P value
* Drone PID controller shows drone’s leveling gets dampned with addition of D value
* Drone PID controller shows I value is able to take care of steady state error

Raspberry Pi enclosure
Drone midair
Drone Hover Test

Gaurav’s Status Report for 12/07/2024

This week, I worked on creating an enclosure for the raspberry pi to place it on the drone. I also helped Ankit and Bhavik train the PID controller for the drone to get it hovering for our video. My part of the project is more or less done now, so I would say that my progress is on schedule. By next week the project will have been due so completion.

Ankit’s Status Report for 12/07/2024

This past week I spent a lot of time working on fixing high frequency noise in the controller. I noticed quite a few oscillations around the setpoint which I hypothesized were being caused by high frequency noise in the gyro that was interacting with the D term. To solve this, I implemented a Exponential Moving Average on the gyro readings in order to smooth them out (although this causes a bit of lag) and implemented a variable gain schedule to provide better stability. We are very close to hovering

Team Status Report 11/30/2024

The most significant risks that could jeopardize the success of the project is getting the PID controller working. We recently had a major breakthrough in the calibration process and we have two axes currently working with our setup. We hope to have a hovering drone soon. Although this is behind schedule, we have the path planning code and the tracking code ready to use as soon as the hovering drone part is working. We are managing the risks by having absolutely everything else ready.

No major changes were made to the design of the system.

 

Gaurav’s Status Report for 11/30/2024

This week, I worked on creating the enclosure for the Raspberry Pi 5 so that we can drill it onto the drone to test the entire system. Currently I found an STL file of the case online, so I will make some modifications to that to make a way to drill it onto the drone.

Our progress is slightly behind because the PID training took longer than expected. However, the rest of the parts are more or less ready to go as soon as we finish that. My personal progress is on schedule.

By next week, I hope to have the raspberry pi mounted on the drone and all the CV working.

 

As I was implementing our project, I found it necessary to learn how a PID controller works to better help my teammates get their parts working. I also had to learn how an AI model works to better understand the documentation behind the Hailo App and try to figure out if it is necessary to design our own Hailo application for our data set. In order to learn these tools, I watched a lot of videos and took light notes. This helped me stay concentrated on the videos themselves as they explained how the drone controller works. For the Hailo application, I simply just sat and read the documentation.

Ankit’s Status Report for 11/30/2024

The Thanksgiving Break for me was quite productive. I brought home all of our stuff in order to be able to work on teh project and I made quite a bit of progress. I made two major changes to the software pipeline: 1) the complementary filter implementation we were using originally suffers from drift in the presence of high frequency noise in the gyroscope (which will happen on a drone) and so I properly implemented a kalman filter based approach that results in next to no drift for the IMU and 2) I realized that our original formulation of the PID which was to minimize the error in the angular position of the drone is very unresponsive and not how it is done on professional drones. Instead, these drones implement a rate controller which minimizes the error in angular rate, which is what I changed my PID implementaiton to. With this, our drone is now very stable in both roll and pitch and we are close to trying a hover test after we integrate the radio comms to allow for autonomous takeoff and landing.

We still have about two weeks to demo day and while this is definitely crunch time, I think the immense progress made over the break will help us finish this project.

Bhaviks Status Report for 11/30/2024

This week was mostly spent planning and ordering the remaining components for the project (GPS, planning power distribution, and Rpi attachment). I also cleaned up the code from the demo and prepared it for the final demo. I have also spent some time making sure that the radio communication can work bi-directionally. Moving on to the next parts of testing, we want to be able to send signals from the base station to the drone, hence we need to make sure this step works. Next week we will continue to integrate our system and test our drone to start flying.

Additonally, a majority of the time was spent creating the final presentation slides. I created a full outline of the presentation. I will continue to work on the slides by rerunning some demo scripts to capture more media for the presentation. Since I will be the one presenting this time, I have also begun to practice and get the required information.

Throughout this project, there were a lot of new tools and knowledge I had to learn in order to accomplish my tasks. Working a lot of various different hardware systems, I had to learn a lot about efficient methods to communicate between systems, the various communication protocols, and how to interface with third-party tools. I also had to learn a lot about controls (PID specifically). Some learning strategies were watching tutorials on related topics, looking at other project documentation, or talking with friends who were knowledgeable about the specific topic. I also learned a lot by trial and error. For example, using the knowledge I gained by reading documents and watching videos, I was able to implement basic functionality, learn from the mistakes made there, and retry. This has helped me take the theoretical knowledge and apply it in a fast manner.

Bhaviks Status Report for 11/16/2024

This week I focused my efforts on finalizing the CV and helping with drone controls.

At the beginning of the week I worked closely with Gaurav to get a model working on the rpi. We got the model working but the frames were really low as it wasn’t being accelerated. Thus, we spent time looking through the documentation to figure out how to compile the model. In our attempts we compiled the model multiple times in various configurations but have run in various PC related issues (ex. incompatiblae architecture or not enough hardware specs such as ram). We resolved this problem by configuring an AWS EC2 instance and setting up an additional memory. Once we did this we were able to successfully compile the model after lots of efforts.

Once we put it on the rpi, the script wasn’t able to utilize the model and detect anything. We believe this is a compiler issue with the hailo software as its very new and doesn’t fully support using custom models very easily. Therefore, we have tested this theory by compile a base yolov8n model and uploading it to the rpi. This seems to have worked. Thus, we have decided to move forward with objects trained on the base yolo. Another reason for the change is that we realized the drone propellers produce a lot of windforce and would easily cause the balloon to move around a lot, causing the detection and tracking algorihtims to fail.

On the drone pid controls aspect, I worked closely with Ankit to set up a drone testing rig. We have tried multiple rigs and finally decided to use a tripod attachment with the drone on top. This seems to have worked fairly well and we have been tuning with this. While tuning we found lots of hardware inconsistencies which seem to be like the major risk moving forward. The PID seems to be working well one day and the next day we seem to have gone backwards. We have spent multiple days trying to limit these hardware issues to fully ensure that the drone PID controls work well. There is still a lot of testing to do to make sure the drone is reliable.

In regards to testing, we will gather specific metrics required that related to our use case requirements. For example, for the computer vision model detection, we will be measuring that the computer vision model is able to accurately detect the object in the various frames. This will let us measure the accuracy and thus we will be able to analyze this metric to check if we meet the design requirements. For tracking we will check if the camera is able to provide directions on which way the drone should move. If the algorithm is able to make sure that  object is always centered we know we have met the design requriment.

Team Status Report 11/16/2024

Currently, the biggest risk that could jeopardize the success of the project is the PID controller. All the AI inference and electrical hardware is able to accomplish the desired function but all that is remaining is to mount it on the drone. The way we are managing these risks are by focusing solely on the controller while also investigating back ups that may be easier. Gaurav, Bhavik and Ankit are all going to only be working on the PID controller from now on to try to get it ready in time for final demo. Our contingency plan is to use the Pixhawk flight controller which comes with all the necessary hardware on it. This should theoretically be easier to calibrate to get the drone to fly stable.

No changes were made to the hardware design as of now. If we ever have to use our contingency plan, we will have to change the requirements to incorporate the Pixhawk. For software design, we did make a change to the model we were using. When trying to compile the balloon detection model for the Hailo-8L accelerator, we were having trouble parsing through all the documentation. However, there was a pre-trained, pre-optimized model already available in the provided model zoo, which we decided to use instead. We are modifying the script used to run the inference to only detect humans and only transmit the human with the highest inference confidence.

 

same model detecting a human
object detection model detecting bottle
testing the drone motors